diff --git a/docs/asset-manifest.json b/docs/asset-manifest.json index 9420a88ff..e16bb0f31 100644 --- a/docs/asset-manifest.json +++ b/docs/asset-manifest.json @@ -1,7 +1,7 @@ { "files": { - "build/0.d6bdd482.js": "/build/0.d6bdd482.js", - "main.js": "/build/main.7cae31fc.js", + "build/0.ccf17d51.js": "/build/0.ccf17d51.js", + "main.js": "/build/main.424ceb2d.js", "runtime~main.js": "/build/bundle.7b491809.js", "index.html": "/index.html", "static/media/academicons.ttf?v=1.8.6": "/static/media/academicons.1afcbd6a.ttf", diff --git a/docs/build/0.d6bdd482.js b/docs/build/0.ccf17d51.js similarity index 84% rename from docs/build/0.d6bdd482.js rename to docs/build/0.ccf17d51.js index ffb493072..c3ec1b806 100644 --- a/docs/build/0.d6bdd482.js +++ b/docs/build/0.ccf17d51.js @@ -198,6 +198,18 @@ eval("function _typeof2(obj) { if (typeof Symbol === \"function\" && typeof Symb /***/ }), +/***/ "./node_modules/@convertkit/slate-lists/dist/index.esm.js": +/*!****************************************************************!*\ + !*** ./node_modules/@convertkit/slate-lists/dist/index.esm.js ***! + \****************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _objectSpread(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest();\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n}\n\nfunction _defineProperty$1(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectSpread$1(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i] != null ? arguments[i] : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {\n return Object.getOwnPropertyDescriptor(source, sym).enumerable;\n }));\n }\n\n ownKeys.forEach(function (key) {\n _defineProperty$1(target, key, source[key]);\n });\n }\n\n return target;\n}\n\nfunction unwrapExports(x) {\n return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x.default : x;\n}\n\nfunction createCommonjsModule(fn, module) {\n return module = {\n exports: {}\n }, fn(module, module.exports), module.exports;\n}\n\nvar lib = createCommonjsModule(function (module, exports) {\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n /**\n * Constants.\n */\n\n var IS_MAC = typeof window != 'undefined' && /Mac|iPod|iPhone|iPad/.test(window.navigator.platform);\n var MODIFIERS = {\n alt: 'altKey',\n control: 'ctrlKey',\n meta: 'metaKey',\n shift: 'shiftKey'\n };\n var ALIASES = {\n add: '+',\n break: 'pause',\n cmd: 'meta',\n command: 'meta',\n ctl: 'control',\n ctrl: 'control',\n del: 'delete',\n down: 'arrowdown',\n esc: 'escape',\n ins: 'insert',\n left: 'arrowleft',\n mod: IS_MAC ? 'meta' : 'control',\n opt: 'alt',\n option: 'alt',\n return: 'enter',\n right: 'arrowright',\n space: ' ',\n spacebar: ' ',\n up: 'arrowup',\n win: 'meta',\n windows: 'meta'\n };\n var CODES = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n control: 17,\n alt: 18,\n pause: 19,\n capslock: 20,\n escape: 27,\n ' ': 32,\n pageup: 33,\n pagedown: 34,\n end: 35,\n home: 36,\n arrowleft: 37,\n arrowup: 38,\n arrowright: 39,\n arrowdown: 40,\n insert: 45,\n delete: 46,\n meta: 91,\n numlock: 144,\n scrolllock: 145,\n ';': 186,\n '=': 187,\n ',': 188,\n '-': 189,\n '.': 190,\n '/': 191,\n '`': 192,\n '[': 219,\n '\\\\': 220,\n ']': 221,\n '\\'': 222\n };\n\n for (var f = 1; f < 20; f++) {\n CODES['f' + f] = 111 + f;\n }\n /**\n * Is hotkey?\n */\n\n\n function isHotkey(hotkey, options, event) {\n if (options && !('byKey' in options)) {\n event = options;\n options = null;\n }\n\n if (!Array.isArray(hotkey)) {\n hotkey = [hotkey];\n }\n\n var array = hotkey.map(function (string) {\n return parseHotkey(string, options);\n });\n\n var check = function check(e) {\n return array.some(function (object) {\n return compareHotkey(object, e);\n });\n };\n\n var ret = event == null ? check : check(event);\n return ret;\n }\n\n function isCodeHotkey(hotkey, event) {\n return isHotkey(hotkey, event);\n }\n\n function isKeyHotkey(hotkey, event) {\n return isHotkey(hotkey, {\n byKey: true\n }, event);\n }\n /**\n * Parse.\n */\n\n\n function parseHotkey(hotkey, options) {\n var byKey = options && options.byKey;\n var ret = {}; // Special case to handle the `+` key since we use it as a separator.\n\n hotkey = hotkey.replace('++', '+add');\n var values = hotkey.split('+');\n var length = values.length; // Ensure that all the modifiers are set to false unless the hotkey has them.\n\n for (var k in MODIFIERS) {\n ret[MODIFIERS[k]] = false;\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = values[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var value = _step.value;\n var optional = value.endsWith('?');\n\n if (optional) {\n value = value.slice(0, -1);\n }\n\n var name = toKeyName(value);\n var modifier = MODIFIERS[name];\n\n if (length === 1 || !modifier) {\n if (byKey) {\n ret.key = name;\n } else {\n ret.which = toKeyCode(value);\n }\n }\n\n if (modifier) {\n ret[modifier] = optional ? null : true;\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return ret;\n }\n /**\n * Compare.\n */\n\n\n function compareHotkey(object, event) {\n for (var key in object) {\n var expected = object[key];\n var actual = void 0;\n\n if (expected == null) {\n continue;\n }\n\n if (key === 'key') {\n actual = event.key.toLowerCase();\n } else if (key === 'which') {\n actual = expected === 91 && event.which === 93 ? 91 : event.which;\n } else {\n actual = event[key];\n }\n\n if (actual == null && expected === false) {\n continue;\n }\n\n if (actual !== expected) {\n return false;\n }\n }\n\n return true;\n }\n /**\n * Utils.\n */\n\n\n function toKeyCode(name) {\n name = toKeyName(name);\n var code = CODES[name] || name.toUpperCase().charCodeAt(0);\n return code;\n }\n\n function toKeyName(name) {\n name = name.toLowerCase();\n name = ALIASES[name] || name;\n return name;\n }\n /**\n * Export.\n */\n\n\n exports.default = isHotkey;\n exports.isHotkey = isHotkey;\n exports.isCodeHotkey = isCodeHotkey;\n exports.isKeyHotkey = isKeyHotkey;\n exports.parseHotkey = parseHotkey;\n exports.compareHotkey = compareHotkey;\n exports.toKeyCode = toKeyCode;\n exports.toKeyName = toKeyName;\n});\nvar isHotkey = unwrapExports(lib);\nvar lib_1 = lib.isHotkey;\nvar lib_2 = lib.isCodeHotkey;\nvar lib_3 = lib.isKeyHotkey;\nvar lib_4 = lib.parseHotkey;\nvar lib_5 = lib.compareHotkey;\nvar lib_6 = lib.toKeyCode;\nvar lib_7 = lib.toKeyName;\n\nvar Keymap = function Keymap(shortcuts, options) {\n var config = _objectSpread$1({\n if: function _if() {\n return true;\n }\n }, options);\n\n var functions = Object.keys(shortcuts).map(function (key) {\n var isKeyPressed = isHotkey(key);\n var command = shortcuts[key];\n\n var check = function check(event, editor) {\n return isKeyPressed(event) && config.if(editor);\n };\n\n var handler = typeof command == \"string\" ? function (event, editor) {\n event.preventDefault();\n editor.command(command);\n } : command;\n return {\n check: check,\n handler: handler\n };\n });\n return {\n onKeyDown: function onKeyDown(event, editor, next) {\n var shortcut = functions.find(function (shortcut) {\n return shortcut.check(event, editor);\n });\n\n if (shortcut) {\n return shortcut.handler(event, editor, next);\n } else {\n return next();\n }\n }\n };\n};\n\nvar isList = function isList(blocks, block) {\n return block.type == blocks.unordered_list || block.type == blocks.ordered_list;\n};\n\nvar wrapList = function wrapList(_ref, editor) {\n var blocks = _ref.blocks;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var type = options.type || blocks.unordered_list;\n var rootBlocks = editor.value.document.getRootBlocksAtRange(editor.value.selection);\n editor.withoutNormalizing(function () {\n rootBlocks.forEach(function (block) {\n if (isList(blocks, block)) return;\n editor.wrapBlockByKey(block.key, type);\n editor.wrapBlockByKey(block.key, blocks.list_item);\n editor.setNodeByKey(block.key, blocks.list_item_child);\n });\n });\n};\n\nvar unwrapListByKey = function unwrapListByKey(_ref, editor, key) {\n var blocks = _ref.blocks;\n var listItem = editor.value.document.getNode(key);\n editor.withoutNormalizing(function () {\n editor.unwrapNodeByKey(listItem.key);\n var parent = editor.value.document.getParent(listItem.key);\n var itemIndex = parent.nodes.findIndex(function (node) {\n return node.key === listItem.key;\n });\n listItem.nodes.forEach(function (itemChild, index) {\n editor.moveNodeByKey(itemChild.key, parent.key, index + itemIndex);\n\n if (itemChild.type == blocks.list_item_child) {\n editor.setNodeByKey(itemChild.key, {\n type: blocks.default\n });\n }\n });\n editor.removeNodeByKey(listItem.key);\n });\n};\n\nvar unwrapList = function unwrapList(_ref, editor) {\n var blocks = _ref.blocks;\n var listItemChildren = editor.value.document.getNodesAtRange(editor.value.selection).filter(function (node) {\n return node.type == blocks.list_item_child;\n });\n var furthestListItems = listItemChildren.map(function (listItemChild) {\n return editor.value.document.getFurthest(listItemChild.key, function (node) {\n return node.type == blocks.list_item;\n });\n }).filter(function (listItemChild, index, array) {\n return array.indexOf(listItemChild) == index;\n });\n furthestListItems.forEach(function (listItem) {\n unwrapListByKey({\n blocks: blocks\n }, editor, listItem.key);\n });\n};\n\nvar toggleList = function toggleList(_ref, editor) {\n var blocks = _ref.blocks;\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var _editor$value = editor.value,\n document = _editor$value.document,\n startBlock = _editor$value.startBlock;\n var type = options.type || blocks.unordered_list;\n var parent = document.getParent(startBlock.key);\n var isList = parent.type == blocks.list_item;\n if (!isList) return editor.wrapList({\n type: type\n });\n var list = document.getParent(parent.key);\n var sameType = list.type == type;\n\n if (sameType) {\n editor.unwrapList();\n } else {\n editor.setNodeByKey(list.key, type);\n }\n};\n\nvar decreaseListItemDepth = function decreaseListItemDepth(_ref, editor) {\n var blocks = _ref.blocks;\n var _editor$value = editor.value,\n document = _editor$value.document,\n startBlock = _editor$value.startBlock;\n var listItem = document.getParent(startBlock.key);\n var list = document.getParent(listItem.key);\n var parentListItem = document.getParent(list.key);\n if (parentListItem.type != blocks.list_item) return;\n var parentList = document.getParent(parentListItem.key);\n var index = parentList.nodes.indexOf(parentListItem);\n var otherItems = list.nodes.skipUntil(function (item) {\n return item === listItem;\n }).rest();\n\n if (!otherItems.isEmpty()) {\n var newList = slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].create({\n object: \"block\",\n type: list.type\n });\n editor.withoutNormalizing(function () {\n editor.insertNodeByKey(listItem.key, listItem.nodes.size, newList);\n editor.moveNodeByKey(listItem.key, parentList.key, index + 1);\n otherItems.forEach(function (item, index) {\n return editor.moveNodeByKey(item.key, newList.key, newList.nodes.size + index);\n });\n });\n } else {\n editor.moveNodeByKey(listItem.key, parentList.key, index + 1);\n }\n};\n\nvar increaseListItemDepth = function increaseListItemDepth(_ref, editor) {\n var blocks = _ref.blocks;\n var _editor$value = editor.value,\n document = _editor$value.document,\n startBlock = _editor$value.startBlock;\n var listItem = document.getParent(startBlock.key);\n var previousListItem = document.getPreviousSibling(listItem.key);\n var list = document.getParent(listItem.key);\n if (!listItem) return;\n if (!previousListItem) return; // Because of our schema constraints, we know that the second item must be a\n // list if it exists.\n\n var existingList = previousListItem.nodes.get(1);\n\n if (existingList) {\n editor.withoutNormalizing(function () {\n editor.moveNodeByKey(listItem.key, existingList.key, existingList.nodes.size);\n });\n } else {\n var newList = slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].create({\n object: \"block\",\n type: list.type\n });\n editor.withoutNormalizing(function () {\n editor.insertNodeByKey(previousListItem.key, previousListItem.nodes.size, newList);\n editor.moveNodeByKey(listItem.key, newList.key, 0);\n });\n }\n};\n\nvar wrapWithOptions = function wrapWithOptions(fn, options) {\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return fn.apply(void 0, [options].concat(args));\n };\n};\n\nvar createCommands = function createCommands(options) {\n return {\n wrapList: wrapWithOptions(wrapList, options),\n unwrapList: wrapWithOptions(unwrapList, options),\n toggleList: wrapWithOptions(toggleList, options),\n unwrapListByKey: wrapWithOptions(unwrapListByKey, options),\n decreaseListItemDepth: wrapWithOptions(decreaseListItemDepth, options),\n increaseListItemDepth: wrapWithOptions(increaseListItemDepth, options)\n };\n};\n\nvar sameType = function sameType(node, other) {\n return node.type == other.type;\n};\n\nvar createNormalizeNode = function createNormalizeNode(_ref) {\n var blocks = _ref.blocks;\n\n var isList = function isList(block) {\n return block && (block.type == blocks.unordered_list || block.type == blocks.ordered_list);\n };\n\n return function (node, editor, next) {\n if (node.object !== \"document\" && node.object !== \"block\") return next();\n var mergable = node.nodes.map(function (child, index) {\n if (!isList(child)) {\n return null;\n }\n\n var adjacent = node.nodes.get(index + 1);\n\n if (!adjacent || !isList(adjacent) || !sameType(child, adjacent)) {\n return null;\n }\n\n return [child, adjacent];\n }).filter(function (node) {\n return node;\n });\n if (mergable.isEmpty()) return next();\n return function (editor) {\n mergable.reverse().forEach(function (_ref2) {\n var _ref3 = _slicedToArray(_ref2, 2),\n list = _ref3[0],\n adjacent = _ref3[1];\n\n var updatedAdjacent = editor.value.document.getDescendant(adjacent.key);\n updatedAdjacent.nodes.forEach(function (child, index) {\n editor.withoutNormalizing(function () {\n editor.moveNodeByKey(child.key, list.key, list.nodes.size + index);\n });\n });\n editor.withoutNormalizing(function () {\n editor.removeNodeByKey(adjacent.key);\n });\n });\n };\n };\n};\n\nvar createRenderNode = function createRenderNode(_ref) {\n var blocks = _ref.blocks,\n classNames = _ref.classNames;\n return function (props, editor, next) {\n var node = props.node;\n\n switch (node.type) {\n case blocks.unordered_list:\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"ul\", _extends({\n className: classNames.unordered_list\n }, props.attributes), props.children);\n\n case blocks.ordered_list:\n {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"ol\", _extends({\n className: classNames.ordered_list\n }, props.attributes), props.children);\n }\n\n case blocks.list_item:\n {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"li\", _extends({\n className: classNames.list_item\n }, props.attributes), props.children);\n }\n\n case blocks.list_item_child:\n {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", _extends({\n className: classNames.list_item_child\n }, props.attributes), props.children);\n }\n\n default:\n return next();\n }\n };\n};\n\nvar createSchema = function createSchema(_ref) {\n var _blocks;\n\n var blocks = _ref.blocks;\n return {\n blocks: (_blocks = {}, _defineProperty(_blocks, blocks.unordered_list, {\n nodes: [{\n match: {\n type: blocks.list_item\n }\n }]\n }), _defineProperty(_blocks, blocks.ordered_list, {\n nodes: [{\n match: {\n type: blocks.list_item\n }\n }]\n }), _defineProperty(_blocks, blocks.list_item, {\n parent: [{\n type: blocks.unordered_list\n }, {\n type: blocks.ordered_list\n }],\n nodes: [{\n match: {\n type: blocks.list_item_child\n },\n min: 1,\n max: 1\n }, {\n match: [{\n type: blocks.unordered_list\n }, {\n type: blocks.ordered_list\n }],\n min: 0,\n max: 1\n }],\n normalize: function normalize(editor, error) {\n switch (error.code) {\n case \"child_min_invalid\":\n editor.insertNodeByKey(error.node.key, 0, {\n object: \"block\",\n type: blocks.list_item_child\n });\n\n case \"child_type_invalid\":\n editor.wrapBlockByKey(error.child.key, {\n type: blocks.list_item_child\n });\n return;\n\n case \"parent_type_invalid\":\n editor.wrapBlock(blocks.unordered_list);\n return;\n\n default:\n return;\n }\n }\n }), _blocks)\n };\n};\n\nvar index = function index() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n var config = _objectSpread({}, options);\n\n var blocks = _objectSpread({\n unordered_list: \"unordered-list\",\n ordered_list: \"ordered-list\",\n list_item: \"list-item\",\n list_item_child: \"list-item-child\",\n default: \"paragraph\"\n }, config.blocks);\n\n var classNames = _objectSpread({\n unordered_list: \"unordered-list\",\n ordered_list: \"ordered-list\",\n list_item: \"list-item\",\n list_item_child: \"list-item-child\"\n }, config.classNames);\n\n var commands = createCommands({\n blocks: blocks\n });\n\n var isListItem = function isListItem(block) {\n return block && block.type == blocks.list_item;\n };\n\n var getListItem = function getListItem(editor, block) {\n var possibleListItem = editor.value.document.getParent(block.key);\n return isListItem(possibleListItem) ? possibleListItem : null;\n };\n\n var isList = function isList(block) {\n return block && (block.type == blocks.unordered_list || block.type == blocks.ordered_list);\n };\n\n var getList = function getList(editor, block) {\n var possibleList = editor.value.document.getParent(block.key);\n return isList(possibleList) ? possibleList : null;\n };\n\n var onBackspace = function onBackspace(event, editor, next) {\n var selection = editor.value.selection;\n if (selection.isExpanded) return next();\n if (selection.start.offset !== 0) return next();\n var listItem = getListItem(editor, editor.value.startBlock);\n var list = getList(editor, listItem);\n var parentListItem = getListItem(editor, list);\n\n if (parentListItem) {\n editor.decreaseListItemDepth();\n return;\n }\n\n editor.unwrapList();\n };\n\n var onEnter = function onEnter(event, editor, next) {\n var _editor$value = editor.value,\n selection = _editor$value.selection,\n startBlock = _editor$value.startBlock;\n event.preventDefault();\n if (selection.isExpanded) editor.delete();\n\n if (selection.start.offset === 0 && startBlock.getText() === \"\") {\n var _listItem = getListItem(editor, editor.value.startBlock);\n\n var list = getList(editor, _listItem);\n var parentListItem = getListItem(editor, list);\n\n if (parentListItem) {\n editor.decreaseListItemDepth();\n return;\n }\n\n editor.unwrapList();\n return;\n }\n\n var listItem = getListItem(editor, editor.value.startBlock);\n editor.splitDescendantsByKey(listItem.key, selection.start.key, selection.start.offset);\n };\n\n var onShiftEnter = function onShiftEnter(event, editor, next) {\n event.preventDefault();\n editor.insertText(\"\\n\");\n };\n\n var schema = createSchema({\n blocks: blocks\n });\n var normalizeNode = createNormalizeNode({\n blocks: blocks\n });\n var renderNode = createRenderNode({\n blocks: blocks,\n classNames: classNames\n });\n return [{\n commands: {\n wrapList: commands.wrapList,\n unwrapList: commands.unwrapList,\n toggleList: commands.toggleList,\n decreaseListItemDepth: commands.decreaseListItemDepth,\n increaseListItemDepth: commands.increaseListItemDepth\n },\n normalizeNode: normalizeNode,\n renderNode: renderNode,\n schema: schema\n }, Keymap({\n backspace: onBackspace,\n enter: onEnter,\n \"shift+enter\": onShiftEnter,\n tab: \"increaseListItemDepth\",\n \"shift+tab\": \"decreaseListItemDepth\"\n }, {\n if: function _if(editor) {\n return !!getListItem(editor, editor.value.startBlock);\n }\n })];\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/@convertkit/slate-lists/dist/index.esm.js?"); + +/***/ }), + /***/ "./node_modules/@icons/material/CheckIcon.js": /*!***************************************************!*\ !*** ./node_modules/@icons/material/CheckIcon.js ***! @@ -2018,7 +2030,7 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _SelectInput = _interopRequireDefault(__webpack_require__(/*! ./SelectInput */ \"./node_modules/@material-ui/core/Select/SelectInput.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/@material-ui/core/styles/withStyles.js\"));\n\nvar _mergeClasses = _interopRequireDefault(__webpack_require__(/*! ../styles/mergeClasses */ \"./node_modules/@material-ui/core/styles/mergeClasses.js\"));\n\nvar _ArrowDropDown = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/ArrowDropDown */ \"./node_modules/@material-ui/core/internal/svg-icons/ArrowDropDown.js\"));\n\nvar _Input = _interopRequireDefault(__webpack_require__(/*! ../Input */ \"./node_modules/@material-ui/core/Input/index.js\"));\n\nvar _NativeSelect = __webpack_require__(/*! ../NativeSelect/NativeSelect */ \"./node_modules/@material-ui/core/NativeSelect/NativeSelect.js\");\n\nvar _NativeSelectInput = _interopRequireDefault(__webpack_require__(/*! ../NativeSelect/NativeSelectInput */ \"./node_modules/@material-ui/core/NativeSelect/NativeSelectInput.js\")); // @inheritedComponent Input\n\n\nvar styles = _NativeSelect.styles;\nexports.styles = styles;\n\nfunction Select(props) {\n var autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n input = props.input,\n inputProps = props.inputProps,\n MenuProps = props.MenuProps,\n multiple = props.multiple,\n native = props.native,\n onClose = props.onClose,\n onOpen = props.onOpen,\n open = props.open,\n renderValue = props.renderValue,\n SelectDisplayProps = props.SelectDisplayProps,\n other = (0, _objectWithoutProperties2.default)(props, [\"autoWidth\", \"children\", \"classes\", \"displayEmpty\", \"IconComponent\", \"input\", \"inputProps\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\"]);\n var inputComponent = native ? _NativeSelectInput.default : _SelectInput.default;\n return _react.default.cloneElement(input, (0, _extends2.default)({\n // Most of the logic is implemented in `SelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent: inputComponent,\n inputProps: (0, _extends2.default)({\n children: children,\n IconComponent: IconComponent,\n type: undefined\n }, native ? {} : {\n autoWidth: autoWidth,\n displayEmpty: displayEmpty,\n MenuProps: MenuProps,\n multiple: multiple,\n onClose: onClose,\n onOpen: onOpen,\n open: open,\n renderValue: renderValue,\n SelectDisplayProps: SelectDisplayProps\n }, inputProps, {\n classes: inputProps ? (0, _mergeClasses.default)({\n baseClasses: classes,\n newClasses: inputProps.classes,\n Component: Select\n }) : classes\n }, input ? input.props.inputProps : {})\n }, other));\n}\n\nSelect.propTypes = false ? undefined : {};\nSelect.defaultProps = {\n autoWidth: false,\n displayEmpty: false,\n IconComponent: _ArrowDropDown.default,\n input: _react.default.createElement(_Input.default, null),\n multiple: false,\n native: false\n};\nSelect.muiName = 'Select';\n\nvar _default = (0, _withStyles.default)(_NativeSelect.styles, {\n name: 'MuiSelect'\n})(Select);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/core/Select/Select.js?"); +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/interopRequireDefault */ \"./node_modules/@babel/runtime/helpers/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.styles = void 0;\n\nvar _extends2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/extends */ \"./node_modules/@babel/runtime/helpers/extends.js\"));\n\nvar _objectWithoutProperties2 = _interopRequireDefault(__webpack_require__(/*! @babel/runtime/helpers/objectWithoutProperties */ \"./node_modules/@babel/runtime/helpers/objectWithoutProperties.js\"));\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _propTypes = _interopRequireDefault(__webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\"));\n\nvar _SelectInput = _interopRequireDefault(__webpack_require__(/*! ./SelectInput */ \"./node_modules/@material-ui/core/Select/SelectInput.js\"));\n\nvar _withStyles = _interopRequireDefault(__webpack_require__(/*! ../styles/withStyles */ \"./node_modules/@material-ui/core/styles/withStyles.js\"));\n\nvar _mergeClasses = _interopRequireDefault(__webpack_require__(/*! ../styles/mergeClasses */ \"./node_modules/@material-ui/core/styles/mergeClasses.js\"));\n\nvar _ArrowDropDown = _interopRequireDefault(__webpack_require__(/*! ../internal/svg-icons/ArrowDropDown */ \"./node_modules/@material-ui/core/internal/svg-icons/ArrowDropDown.js\"));\n\nvar _Input = _interopRequireDefault(__webpack_require__(/*! ../Input */ \"./node_modules/@material-ui/core/Input/index.js\"));\n\nvar _NativeSelect = __webpack_require__(/*! ../NativeSelect/NativeSelect */ \"./node_modules/@material-ui/core/NativeSelect/NativeSelect.js\");\n\nvar _NativeSelectInput = _interopRequireDefault(__webpack_require__(/*! ../NativeSelect/NativeSelectInput */ \"./node_modules/@material-ui/core/NativeSelect/NativeSelectInput.js\")); // @inheritedComponent Input\n\n\nvar styles = _NativeSelect.styles;\nexports.styles = styles;\n\nfunction Select(props) {\n var autoWidth = props.autoWidth,\n children = props.children,\n classes = props.classes,\n displayEmpty = props.displayEmpty,\n IconComponent = props.IconComponent,\n input = props.input,\n inputProps = props.inputProps,\n MenuProps = props.MenuProps,\n multiple = props.multiple,\n _native = props.native,\n onClose = props.onClose,\n onOpen = props.onOpen,\n open = props.open,\n renderValue = props.renderValue,\n SelectDisplayProps = props.SelectDisplayProps,\n other = (0, _objectWithoutProperties2.default)(props, [\"autoWidth\", \"children\", \"classes\", \"displayEmpty\", \"IconComponent\", \"input\", \"inputProps\", \"MenuProps\", \"multiple\", \"native\", \"onClose\", \"onOpen\", \"open\", \"renderValue\", \"SelectDisplayProps\"]);\n var inputComponent = _native ? _NativeSelectInput.default : _SelectInput.default;\n return _react.default.cloneElement(input, (0, _extends2.default)({\n // Most of the logic is implemented in `SelectInput`.\n // The `Select` component is a simple API wrapper to expose something better to play with.\n inputComponent: inputComponent,\n inputProps: (0, _extends2.default)({\n children: children,\n IconComponent: IconComponent,\n type: undefined\n }, _native ? {} : {\n autoWidth: autoWidth,\n displayEmpty: displayEmpty,\n MenuProps: MenuProps,\n multiple: multiple,\n onClose: onClose,\n onOpen: onOpen,\n open: open,\n renderValue: renderValue,\n SelectDisplayProps: SelectDisplayProps\n }, inputProps, {\n classes: inputProps ? (0, _mergeClasses.default)({\n baseClasses: classes,\n newClasses: inputProps.classes,\n Component: Select\n }) : classes\n }, input ? input.props.inputProps : {})\n }, other));\n}\n\nSelect.propTypes = false ? undefined : {};\nSelect.defaultProps = {\n autoWidth: false,\n displayEmpty: false,\n IconComponent: _ArrowDropDown.default,\n input: _react.default.createElement(_Input.default, null),\n multiple: false,\n native: false\n};\nSelect.muiName = 'Select';\n\nvar _default = (0, _withStyles.default)(_NativeSelect.styles, {\n name: 'MuiSelect'\n})(Select);\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/core/Select/Select.js?"); /***/ }), @@ -3690,6 +3702,18 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he /***/ }), +/***/ "./node_modules/@material-ui/icons/FormatAlignJustify.js": +/*!***************************************************************!*\ + !*** ./node_modules/@material-ui/icons/FormatAlignJustify.js ***! + \***************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/builtin/interopRequireDefault */ \"./node_modules/@material-ui/icons/node_modules/@babel/runtime/helpers/builtin/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@material-ui/icons/utils/createSvgIcon.js\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"g\", null, _react.default.createElement(\"path\", {\n d: \"M3 21h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18v-2H3v2zm0-4h18V7H3v2zm0-6v2h18V3H3z\"\n})), 'FormatAlignJustify');\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/icons/FormatAlignJustify.js?"); + +/***/ }), + /***/ "./node_modules/@material-ui/icons/FormatAlignLeft.js": /*!************************************************************!*\ !*** ./node_modules/@material-ui/icons/FormatAlignLeft.js ***! @@ -3738,6 +3762,30 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he /***/ }), +/***/ "./node_modules/@material-ui/icons/FormatIndentDecrease.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@material-ui/icons/FormatIndentDecrease.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/builtin/interopRequireDefault */ \"./node_modules/@material-ui/icons/node_modules/@babel/runtime/helpers/builtin/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@material-ui/icons/utils/createSvgIcon.js\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"g\", null, _react.default.createElement(\"path\", {\n d: \"M11 17h10v-2H11v2zm-8-5l4 4V8l-4 4zm0 9h18v-2H3v2zM3 3v2h18V3H3zm8 6h10V7H11v2zm0 4h10v-2H11v2z\"\n})), 'FormatIndentDecrease');\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/icons/FormatIndentDecrease.js?"); + +/***/ }), + +/***/ "./node_modules/@material-ui/icons/FormatIndentIncrease.js": +/*!*****************************************************************!*\ + !*** ./node_modules/@material-ui/icons/FormatIndentIncrease.js ***! + \*****************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/builtin/interopRequireDefault */ \"./node_modules/@material-ui/icons/node_modules/@babel/runtime/helpers/builtin/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@material-ui/icons/utils/createSvgIcon.js\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"g\", null, _react.default.createElement(\"path\", {\n d: \"M3 21h18v-2H3v2zM3 8v8l4-4-4-4zm8 9h10v-2H11v2zM3 3v2h18V3H3zm8 6h10V7H11v2zm0 4h10v-2H11v2z\"\n})), 'FormatIndentIncrease');\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/icons/FormatIndentIncrease.js?"); + +/***/ }), + /***/ "./node_modules/@material-ui/icons/FormatItalic.js": /*!*********************************************************!*\ !*** ./node_modules/@material-ui/icons/FormatItalic.js ***! @@ -3750,6 +3798,18 @@ eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/he /***/ }), +/***/ "./node_modules/@material-ui/icons/FormatLineSpacing.js": +/*!**************************************************************!*\ + !*** ./node_modules/@material-ui/icons/FormatLineSpacing.js ***! + \**************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nvar _interopRequireDefault = __webpack_require__(/*! @babel/runtime/helpers/builtin/interopRequireDefault */ \"./node_modules/@material-ui/icons/node_modules/@babel/runtime/helpers/builtin/interopRequireDefault.js\");\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _react = _interopRequireDefault(__webpack_require__(/*! react */ \"./node_modules/react/index.js\"));\n\nvar _createSvgIcon = _interopRequireDefault(__webpack_require__(/*! ./utils/createSvgIcon */ \"./node_modules/@material-ui/icons/utils/createSvgIcon.js\"));\n\nvar _default = (0, _createSvgIcon.default)(_react.default.createElement(\"g\", null, _react.default.createElement(\"path\", {\n d: \"M6 7h2.5L5 3.5 1.5 7H4v10H1.5L5 20.5 8.5 17H6V7zm4-2v2h12V5H10zm0 14h12v-2H10v2zm0-6h12v-2H10v2z\"\n})), 'FormatLineSpacing');\n\nexports.default = _default;\n\n//# sourceURL=webpack:///./node_modules/@material-ui/icons/FormatLineSpacing.js?"); + +/***/ }), + /***/ "./node_modules/@material-ui/icons/FormatListBulleted.js": /*!***************************************************************!*\ !*** ./node_modules/@material-ui/icons/FormatListBulleted.js ***! @@ -4547,7 +4607,7 @@ eval("var toString = {}.toString;\n\nmodule.exports = function (it) {\n return /*! no static exports found */ /***/ (function(module, exports) { -eval("var core = module.exports = {\n version: '2.6.5'\n};\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js?"); +eval("var core = module.exports = {\n version: '2.6.8'\n};\nif (typeof __e == 'number') __e = core; // eslint-disable-line no-undef\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/_core.js?"); /***/ }), @@ -5168,7 +5228,7 @@ eval("\n\nvar $at = __webpack_require__(/*! ./_string-at */ \"./node_modules/bab /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval(" // ECMAScript 6 symbols shim\n\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\n\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\n\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\");\n\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\");\n\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js\");\n\nvar META = __webpack_require__(/*! ./_meta */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js\").KEY;\n\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\");\n\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\");\n\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\");\n\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\");\n\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\");\n\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\");\n\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\");\n\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js\");\n\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js\");\n\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\n\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\n\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\n\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\");\n\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\n\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js\");\n\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js\");\n\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js\");\n\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\");\n\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\n\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\n\nvar _stringify = $JSON && $JSON.stringify;\n\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function';\nvar QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function get() {\n return dP(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function wrap(tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n\n return setSymbolDesc(it, key, D);\n }\n\n return dP(it, key, D);\n};\n\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n\n while (l > i) {\n $defineProperty(it, key = keys[i++], P[key]);\n }\n\n return it;\n};\n\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n }\n\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n }\n\n return result;\n}; // 19.4.1.1 Symbol([description])\n\n\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n\n var $set = function $set(value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: $set\n });\n return wrap(tag);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(/*! ./_object-gopn */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js\").f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(/*! ./_object-pie */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\").f = $propertyIsEnumerable;\n __webpack_require__(/*! ./_object-gops */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\").f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\")) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {\n Symbol: $Symbol\n});\n\nfor (var es6Symbols = // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {\n wks(es6Symbols[j++]);\n}\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {\n wksDefine(wellKnownSymbols[k++]);\n}\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function _for(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n\n for (var key in SymbolRegistry) {\n if (SymbolRegistry[key] === sym) return key;\n }\n },\n useSetter: function useSetter() {\n setter = true;\n },\n useSimple: function useSimple() {\n setter = false;\n }\n});\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n}); // 24.3.2 JSON.stringify(value [, replacer [, space]])\n\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol(); // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n\n while (arguments.length > i) {\n args.push(arguments[i++]);\n }\n\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n\n if (!isArray(replacer)) replacer = function replacer(key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n}); // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // 19.4.3.5 Symbol.prototype[@@toStringTag]\n\nsetToStringTag($Symbol, 'Symbol'); // 20.2.1.9 Math[@@toStringTag]\n\nsetToStringTag(Math, 'Math', true); // 24.3.3 JSON[@@toStringTag]\n\nsetToStringTag(global.JSON, 'JSON', true);\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js?"); +eval(" // ECMAScript 6 symbols shim\n\nvar global = __webpack_require__(/*! ./_global */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_global.js\");\n\nvar has = __webpack_require__(/*! ./_has */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_has.js\");\n\nvar DESCRIPTORS = __webpack_require__(/*! ./_descriptors */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_descriptors.js\");\n\nvar $export = __webpack_require__(/*! ./_export */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_export.js\");\n\nvar redefine = __webpack_require__(/*! ./_redefine */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_redefine.js\");\n\nvar META = __webpack_require__(/*! ./_meta */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_meta.js\").KEY;\n\nvar $fails = __webpack_require__(/*! ./_fails */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_fails.js\");\n\nvar shared = __webpack_require__(/*! ./_shared */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_shared.js\");\n\nvar setToStringTag = __webpack_require__(/*! ./_set-to-string-tag */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_set-to-string-tag.js\");\n\nvar uid = __webpack_require__(/*! ./_uid */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_uid.js\");\n\nvar wks = __webpack_require__(/*! ./_wks */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks.js\");\n\nvar wksExt = __webpack_require__(/*! ./_wks-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-ext.js\");\n\nvar wksDefine = __webpack_require__(/*! ./_wks-define */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_wks-define.js\");\n\nvar enumKeys = __webpack_require__(/*! ./_enum-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_enum-keys.js\");\n\nvar isArray = __webpack_require__(/*! ./_is-array */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-array.js\");\n\nvar anObject = __webpack_require__(/*! ./_an-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_an-object.js\");\n\nvar isObject = __webpack_require__(/*! ./_is-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_is-object.js\");\n\nvar toObject = __webpack_require__(/*! ./_to-object */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-object.js\");\n\nvar toIObject = __webpack_require__(/*! ./_to-iobject */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-iobject.js\");\n\nvar toPrimitive = __webpack_require__(/*! ./_to-primitive */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_to-primitive.js\");\n\nvar createDesc = __webpack_require__(/*! ./_property-desc */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_property-desc.js\");\n\nvar _create = __webpack_require__(/*! ./_object-create */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-create.js\");\n\nvar gOPNExt = __webpack_require__(/*! ./_object-gopn-ext */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn-ext.js\");\n\nvar $GOPD = __webpack_require__(/*! ./_object-gopd */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopd.js\");\n\nvar $GOPS = __webpack_require__(/*! ./_object-gops */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gops.js\");\n\nvar $DP = __webpack_require__(/*! ./_object-dp */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-dp.js\");\n\nvar $keys = __webpack_require__(/*! ./_object-keys */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-keys.js\");\n\nvar gOPD = $GOPD.f;\nvar dP = $DP.f;\nvar gOPN = gOPNExt.f;\nvar $Symbol = global.Symbol;\nvar $JSON = global.JSON;\n\nvar _stringify = $JSON && $JSON.stringify;\n\nvar PROTOTYPE = 'prototype';\nvar HIDDEN = wks('_hidden');\nvar TO_PRIMITIVE = wks('toPrimitive');\nvar isEnum = {}.propertyIsEnumerable;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar OPSymbols = shared('op-symbols');\nvar ObjectProto = Object[PROTOTYPE];\nvar USE_NATIVE = typeof $Symbol == 'function' && !!$GOPS.f;\nvar QObject = global.QObject; // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\nvar setter = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\nvar setSymbolDesc = DESCRIPTORS && $fails(function () {\n return _create(dP({}, 'a', {\n get: function get() {\n return dP(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n}) ? function (it, key, D) {\n var protoDesc = gOPD(ObjectProto, key);\n if (protoDesc) delete ObjectProto[key];\n dP(it, key, D);\n if (protoDesc && it !== ObjectProto) dP(ObjectProto, key, protoDesc);\n} : dP;\n\nvar wrap = function wrap(tag) {\n var sym = AllSymbols[tag] = _create($Symbol[PROTOTYPE]);\n\n sym._k = tag;\n return sym;\n};\n\nvar isSymbol = USE_NATIVE && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return it instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectProto) $defineProperty(OPSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) dP(it, HIDDEN, createDesc(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = _create(D, {\n enumerable: createDesc(0, false)\n });\n }\n\n return setSymbolDesc(it, key, D);\n }\n\n return dP(it, key, D);\n};\n\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n\n while (l > i) {\n $defineProperty(it, key = keys[i++], P[key]);\n }\n\n return it;\n};\n\nvar $create = function create(it, P) {\n return P === undefined ? _create(it) : $defineProperties(_create(it), P);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = isEnum.call(this, key = toPrimitive(key, true));\n if (this === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectProto && has(AllSymbols, key) && !has(OPSymbols, key)) return;\n var D = gOPD(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = gOPN(toIObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && key != HIDDEN && key != META) result.push(key);\n }\n\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectProto;\n var names = gOPN(IS_OP ? OPSymbols : toIObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectProto, key) : true)) result.push(AllSymbols[key]);\n }\n\n return result;\n}; // 19.4.1.1 Symbol([description])\n\n\nif (!USE_NATIVE) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor!');\n var tag = uid(arguments.length > 0 ? arguments[0] : undefined);\n\n var $set = function $set(value) {\n if (this === ObjectProto) $set.call(OPSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDesc(this, tag, createDesc(1, value));\n };\n\n if (DESCRIPTORS && setter) setSymbolDesc(ObjectProto, tag, {\n configurable: true,\n set: $set\n });\n return wrap(tag);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return this._k;\n });\n $GOPD.f = $getOwnPropertyDescriptor;\n $DP.f = $defineProperty;\n __webpack_require__(/*! ./_object-gopn */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-gopn.js\").f = gOPNExt.f = $getOwnPropertyNames;\n __webpack_require__(/*! ./_object-pie */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_object-pie.js\").f = $propertyIsEnumerable;\n $GOPS.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS && !__webpack_require__(/*! ./_library */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_library.js\")) {\n redefine(ObjectProto, 'propertyIsEnumerable', $propertyIsEnumerable, true);\n }\n\n wksExt.f = function (name) {\n return wrap(wks(name));\n };\n}\n\n$export($export.G + $export.W + $export.F * !USE_NATIVE, {\n Symbol: $Symbol\n});\n\nfor (var es6Symbols = // 19.4.2.2, 19.4.2.3, 19.4.2.4, 19.4.2.6, 19.4.2.8, 19.4.2.9, 19.4.2.10, 19.4.2.11, 19.4.2.12, 19.4.2.13, 19.4.2.14\n'hasInstance,isConcatSpreadable,iterator,match,replace,search,species,split,toPrimitive,toStringTag,unscopables'.split(','), j = 0; es6Symbols.length > j;) {\n wks(es6Symbols[j++]);\n}\n\nfor (var wellKnownSymbols = $keys(wks.store), k = 0; wellKnownSymbols.length > k;) {\n wksDefine(wellKnownSymbols[k++]);\n}\n\n$export($export.S + $export.F * !USE_NATIVE, 'Symbol', {\n // 19.4.2.1 Symbol.for(key)\n 'for': function _for(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // 19.4.2.5 Symbol.keyFor(sym)\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol!');\n\n for (var key in SymbolRegistry) {\n if (SymbolRegistry[key] === sym) return key;\n }\n },\n useSetter: function useSetter() {\n setter = true;\n },\n useSimple: function useSimple() {\n setter = false;\n }\n});\n$export($export.S + $export.F * !USE_NATIVE, 'Object', {\n // 19.1.2.2 Object.create(O [, Properties])\n create: $create,\n // 19.1.2.4 Object.defineProperty(O, P, Attributes)\n defineProperty: $defineProperty,\n // 19.1.2.3 Object.defineProperties(O, Properties)\n defineProperties: $defineProperties,\n // 19.1.2.6 Object.getOwnPropertyDescriptor(O, P)\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor,\n // 19.1.2.7 Object.getOwnPropertyNames(O)\n getOwnPropertyNames: $getOwnPropertyNames,\n // 19.1.2.8 Object.getOwnPropertySymbols(O)\n getOwnPropertySymbols: $getOwnPropertySymbols\n}); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n\nvar FAILS_ON_PRIMITIVES = $fails(function () {\n $GOPS.f(1);\n});\n$export($export.S + $export.F * FAILS_ON_PRIMITIVES, 'Object', {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return $GOPS.f(toObject(it));\n }\n}); // 24.3.2 JSON.stringify(value [, replacer [, space]])\n\n$JSON && $export($export.S + $export.F * (!USE_NATIVE || $fails(function () {\n var S = $Symbol(); // MS Edge converts symbol values to JSON as {}\n // WebKit converts symbol values to JSON as null\n // V8 throws on boxed symbols\n\n return _stringify([S]) != '[null]' || _stringify({\n a: S\n }) != '{}' || _stringify(Object(S)) != '{}';\n})), 'JSON', {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n\n while (arguments.length > i) {\n args.push(arguments[i++]);\n }\n\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n\n if (!isArray(replacer)) replacer = function replacer(key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return _stringify.apply($JSON, args);\n }\n}); // 19.4.3.4 Symbol.prototype[@@toPrimitive](hint)\n\n$Symbol[PROTOTYPE][TO_PRIMITIVE] || __webpack_require__(/*! ./_hide */ \"./node_modules/babel-runtime/node_modules/core-js/library/modules/_hide.js\")($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // 19.4.3.5 Symbol.prototype[@@toStringTag]\n\nsetToStringTag($Symbol, 'Symbol'); // 20.2.1.9 Math[@@toStringTag]\n\nsetToStringTag(Math, 'Math', true); // 24.3.3 JSON[@@toStringTag]\n\nsetToStringTag(global.JSON, 'JSON', true);\n\n//# sourceURL=webpack:///./node_modules/babel-runtime/node_modules/core-js/library/modules/es6.symbol.js?"); /***/ }), @@ -5237,7 +5297,7 @@ eval("__webpack_require__.r(__webpack_exports__);\nfunction createBroadcast(init /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"target\", function() { return target; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return version; });\n/* harmony import */ var regexpu_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regexpu-core */ \"./node_modules/regexpu-core/rewrite-pattern.js\");\n/* harmony import */ var regexpu_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regexpu_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var magic_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! magic-string */ \"./node_modules/magic-string/dist/magic-string.es.js\");\n/* harmony import */ var acorn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! acorn */ \"./node_modules/acorn/dist/acorn.mjs\");\n/* harmony import */ var acorn_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! acorn-jsx */ \"./node_modules/acorn-jsx/index.js\");\n/* harmony import */ var acorn_jsx__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(acorn_jsx__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! acorn-dynamic-import */ \"./node_modules/acorn-dynamic-import/lib/index.js\");\n/* harmony import */ var acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n // used for debugging, without the noise created by\n// circular references\n\nfunction toJSON(node) {\n var obj = {};\n Object.keys(node).forEach(function (key) {\n if (key === 'parent' || key === 'program' || key === 'keys' || key === '__wrapped') {\n return;\n }\n\n if (Array.isArray(node[key])) {\n obj[key] = node[key].map(toJSON);\n } else if (node[key] && node[key].toJSON) {\n obj[key] = node[key].toJSON();\n } else {\n obj[key] = node[key];\n }\n });\n return obj;\n}\n\nvar Node = function Node() {};\n\nNode.prototype.ancestor = function ancestor(level) {\n var node = this;\n\n while (level--) {\n node = node.parent;\n\n if (!node) {\n return null;\n }\n }\n\n return node;\n};\n\nNode.prototype.contains = function contains(node) {\n while (node) {\n if (node === this) {\n return true;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\nNode.prototype.findLexicalBoundary = function findLexicalBoundary() {\n return this.parent.findLexicalBoundary();\n};\n\nNode.prototype.findNearest = function findNearest(type) {\n if (typeof type === 'string') {\n type = new RegExp(\"^\" + type + \"$\");\n }\n\n if (type.test(this.type)) {\n return this;\n }\n\n return this.parent.findNearest(type);\n};\n\nNode.prototype.unparenthesizedParent = function unparenthesizedParent() {\n var node = this.parent;\n\n while (node && node.type === 'ParenthesizedExpression') {\n node = node.parent;\n }\n\n return node;\n};\n\nNode.prototype.unparenthesize = function unparenthesize() {\n var node = this;\n\n while (node.type === 'ParenthesizedExpression') {\n node = node.expression;\n }\n\n return node;\n};\n\nNode.prototype.findScope = function findScope(functionScope) {\n return this.parent.findScope(functionScope);\n};\n\nNode.prototype.getIndentation = function getIndentation() {\n return this.parent.getIndentation();\n};\n\nNode.prototype.initialise = function initialise(transforms) {\n for (var i = 0, list = this.keys; i < list.length; i += 1) {\n var key = list[i];\n var value = this[key];\n\n if (Array.isArray(value)) {\n value.forEach(function (node) {\n return node && node.initialise(transforms);\n });\n } else if (value && typeof value === 'object') {\n value.initialise(transforms);\n }\n }\n};\n\nNode.prototype.toJSON = function toJSON$1() {\n return toJSON(this);\n};\n\nNode.prototype.toString = function toString() {\n return this.program.magicString.original.slice(this.start, this.end);\n};\n\nNode.prototype.transpile = function transpile(code, transforms) {\n for (var i = 0, list = this.keys; i < list.length; i += 1) {\n var key = list[i];\n var value = this[key];\n\n if (Array.isArray(value)) {\n value.forEach(function (node) {\n return node && node.transpile(code, transforms);\n });\n } else if (value && typeof value === 'object') {\n value.transpile(code, transforms);\n }\n }\n};\n\nfunction extractNames(node) {\n var names = [];\n extractors[node.type](names, node);\n return names;\n}\n\nvar extractors = {\n Identifier: function Identifier(names, node) {\n names.push(node);\n },\n ObjectPattern: function ObjectPattern(names, node) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n extractors[prop.type](names, prop);\n }\n },\n Property: function Property(names, node) {\n extractors[node.value.type](names, node.value);\n },\n ArrayPattern: function ArrayPattern(names, node) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var element = list[i];\n\n if (element) {\n extractors[element.type](names, element);\n }\n }\n },\n RestElement: function RestElement(names, node) {\n extractors[node.argument.type](names, node.argument);\n },\n AssignmentPattern: function AssignmentPattern(names, node) {\n extractors[node.left.type](names, node.left);\n }\n};\nvar reserved = Object.create(null);\n'do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof'.split(' ').forEach(function (word) {\n return reserved[word] = true;\n});\n\nfunction Scope(options) {\n options = options || {};\n this.parent = options.parent;\n this.isBlockScope = !!options.block;\n this.createDeclarationCallback = options.declare;\n var scope = this;\n\n while (scope.isBlockScope) {\n scope = scope.parent;\n }\n\n this.functionScope = scope;\n this.identifiers = [];\n this.declarations = Object.create(null);\n this.references = Object.create(null);\n this.blockScopedDeclarations = this.isBlockScope ? null : Object.create(null);\n this.aliases = Object.create(null);\n}\n\nScope.prototype = {\n addDeclaration: function addDeclaration(node, kind) {\n for (var i = 0, list = extractNames(node); i < list.length; i += 1) {\n var identifier = list[i];\n var name = identifier.name;\n var declaration = {\n name: name,\n node: identifier,\n kind: kind,\n instances: []\n };\n this.declarations[name] = declaration;\n\n if (this.isBlockScope) {\n if (!this.functionScope.blockScopedDeclarations[name]) {\n this.functionScope.blockScopedDeclarations[name] = [];\n }\n\n this.functionScope.blockScopedDeclarations[name].push(declaration);\n }\n }\n },\n addReference: function addReference(identifier) {\n if (this.consolidated) {\n this.consolidateReference(identifier);\n } else {\n this.identifiers.push(identifier);\n }\n },\n consolidate: function consolidate() {\n for (var i = 0; i < this.identifiers.length; i += 1) {\n // we might push to the array during consolidation, so don't cache length\n var identifier = this.identifiers[i];\n this.consolidateReference(identifier);\n }\n\n this.consolidated = true; // TODO understand why this is necessary... seems bad\n },\n consolidateReference: function consolidateReference(identifier) {\n var declaration = this.declarations[identifier.name];\n\n if (declaration) {\n declaration.instances.push(identifier);\n } else {\n this.references[identifier.name] = true;\n\n if (this.parent) {\n this.parent.addReference(identifier);\n }\n }\n },\n contains: function contains(name) {\n return this.declarations[name] || (this.parent ? this.parent.contains(name) : false);\n },\n createIdentifier: function createIdentifier(base) {\n if (typeof base === 'number') {\n base = base.toString();\n }\n\n base = base.replace(/\\s/g, '').replace(/\\[([^\\]]+)\\]/g, '_$1').replace(/[^a-zA-Z0-9_$]/g, '_').replace(/_{2,}/, '_');\n var name = base;\n var counter = 1;\n\n while (this.declarations[name] || this.references[name] || this.aliases[name] || name in reserved) {\n name = base + \"$\" + counter++;\n }\n\n this.aliases[name] = true;\n return name;\n },\n createDeclaration: function createDeclaration(base) {\n var id = this.createIdentifier(base);\n this.createDeclarationCallback(id);\n return id;\n },\n findDeclaration: function findDeclaration(name) {\n return this.declarations[name] || this.parent && this.parent.findDeclaration(name);\n },\n // Sometimes, block scope declarations change name during transpilation\n resolveName: function resolveName(name) {\n var declaration = this.findDeclaration(name);\n return declaration ? declaration.name : name;\n }\n};\n\nfunction locate(source, index) {\n var lines = source.split('\\n');\n var len = lines.length;\n var lineStart = 0;\n var i;\n\n for (i = 0; i < len; i += 1) {\n var line = lines[i];\n var lineEnd = lineStart + line.length + 1; // +1 for newline\n\n if (lineEnd > index) {\n return {\n line: i + 1,\n column: index - lineStart,\n char: i\n };\n }\n\n lineStart = lineEnd;\n }\n\n throw new Error('Could not determine location of character');\n}\n\nfunction pad(num, len) {\n var result = String(num);\n return result + repeat(' ', len - result.length);\n}\n\nfunction repeat(str, times) {\n var result = '';\n\n while (times--) {\n result += str;\n }\n\n return result;\n}\n\nfunction getSnippet(source, loc, length) {\n if (length === void 0) length = 1;\n var first = Math.max(loc.line - 5, 0);\n var last = loc.line;\n var numDigits = String(last).length;\n var lines = source.split('\\n').slice(first, last);\n var lastLine = lines[lines.length - 1];\n var offset = lastLine.slice(0, loc.column).replace(/\\t/g, ' ').length;\n var snippet = lines.map(function (line, i) {\n return pad(i + first + 1, numDigits) + \" : \" + line.replace(/\\t/g, ' ');\n }).join('\\n');\n snippet += '\\n' + repeat(' ', numDigits + 3 + offset) + repeat('^', length);\n return snippet;\n}\n\nvar CompileError =\n/*@__PURE__*/\nfunction (Error) {\n function CompileError(message, node) {\n Error.call(this, message);\n this.name = 'CompileError';\n\n if (!node) {\n return;\n }\n\n var source = node.program.magicString.original;\n var loc = locate(source, node.start);\n this.message = message + \" (\" + loc.line + \":\" + loc.column + \")\";\n this.stack = new Error().stack.replace(new RegExp(\".+new \" + this.name + \".+\\\\n\", 'm'), '');\n this.loc = loc;\n this.snippet = getSnippet(source, loc, node.end - node.start);\n }\n\n if (Error) CompileError.__proto__ = Error;\n CompileError.prototype = Object.create(Error && Error.prototype);\n CompileError.prototype.constructor = CompileError;\n\n CompileError.prototype.toString = function toString() {\n return this.name + \": \" + this.message + \"\\n\" + this.snippet;\n };\n\n CompileError.missingTransform = function missingTransform(feature, transformKey, node, dangerousKey) {\n if (dangerousKey === void 0) dangerousKey = null;\n var maybeDangerous = dangerousKey ? \", or `transforms: { \" + dangerousKey + \": true }` if you know what you're doing\" : '';\n throw new CompileError(\"Transforming \" + feature + \" is not \" + (dangerousKey ? \"fully supported\" : \"implemented\") + \". Use `transforms: { \" + transformKey + \": false }` to skip transformation and disable this error\" + maybeDangerous + \".\", node);\n };\n\n return CompileError;\n}(Error);\n\nfunction findIndex(array, fn) {\n for (var i = 0; i < array.length; i += 1) {\n if (fn(array[i], i)) {\n return i;\n }\n }\n\n return -1;\n}\n\nvar handlers = {\n Identifier: destructureIdentifier,\n AssignmentPattern: destructureAssignmentPattern,\n ArrayPattern: destructureArrayPattern,\n ObjectPattern: destructureObjectPattern\n};\n\nfunction destructure(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n handlers[node.type](code, createIdentifier, resolveName, node, ref, inline, statementGenerators);\n}\n\nfunction destructureIdentifier(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n statementGenerators.push(function (start, prefix, suffix) {\n code.overwrite(node.start, node.end, (inline ? prefix : prefix + \"var \") + resolveName(node) + \" = \" + ref + suffix);\n code.move(node.start, node.end, start);\n });\n}\n\nfunction destructureMemberExpression(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(node.start, inline ? prefix : prefix + \"var \");\n code.appendLeft(node.end, \" = \" + ref + suffix);\n code.move(node.start, node.end, start);\n });\n}\n\nfunction destructureAssignmentPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n var isIdentifier = node.left.type === 'Identifier';\n var name = isIdentifier ? node.left.name : ref;\n\n if (!inline) {\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(node.left.end, prefix + \"if ( \" + name + \" === void 0 ) \" + name);\n code.move(node.left.end, node.right.end, start);\n code.appendLeft(node.right.end, suffix);\n });\n }\n\n if (!isIdentifier) {\n destructure(code, createIdentifier, resolveName, node.left, ref, inline, statementGenerators);\n }\n}\n\nfunction destructureArrayPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n var c = node.start;\n node.elements.forEach(function (element, i) {\n if (!element) {\n return;\n }\n\n if (element.type === 'RestElement') {\n handleProperty(code, createIdentifier, resolveName, c, element.argument, ref + \".slice(\" + i + \")\", inline, statementGenerators);\n } else {\n handleProperty(code, createIdentifier, resolveName, c, element, ref + \"[\" + i + \"]\", inline, statementGenerators);\n }\n\n c = element.end;\n });\n code.remove(c, node.end);\n}\n\nfunction destructureObjectPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n var this$1 = this;\n var c = node.start;\n var nonRestKeys = [];\n node.properties.forEach(function (prop) {\n var value;\n var content;\n\n if (prop.type === 'Property') {\n content = prop.value;\n\n if (!prop.computed && prop.key.type === 'Identifier') {\n value = ref + \".\" + prop.key.name;\n nonRestKeys.push(\"\\\"\" + prop.key.name + \"\\\"\");\n } else if (!prop.computed && prop.key.type === 'Literal') {\n value = ref + \"[\" + prop.key.raw + \"]\";\n nonRestKeys.push(JSON.stringify(String(prop.key.value)));\n } else {\n var expr = code.slice(prop.key.start, prop.key.end);\n value = ref + \"[\" + expr + \"]\";\n nonRestKeys.push(\"String(\" + expr + \")\");\n }\n } else if (prop.type === 'RestElement') {\n content = prop.argument;\n value = createIdentifier('rest');\n statementGenerators.push(function (start, prefix, suffix) {\n var helper = prop.program.getObjectWithoutPropertiesHelper(code);\n code.overwrite(prop.start, c = prop.argument.start, (inline ? prefix : prefix + \"var \") + value + \" = \" + helper + \"( \" + ref + \", [\" + nonRestKeys.join(', ') + \"] )\" + suffix);\n code.move(prop.start, c, start);\n });\n } else {\n throw new CompileError(this$1, \"Unexpected node of type \" + prop.type + \" in object pattern\");\n }\n\n handleProperty(code, createIdentifier, resolveName, c, content, value, inline, statementGenerators);\n c = prop.end;\n });\n code.remove(c, node.end);\n}\n\nfunction handleProperty(code, createIdentifier, resolveName, c, node, value, inline, statementGenerators) {\n switch (node.type) {\n case 'Identifier':\n {\n code.remove(c, node.start);\n destructureIdentifier(code, createIdentifier, resolveName, node, value, inline, statementGenerators);\n break;\n }\n\n case 'MemberExpression':\n code.remove(c, node.start);\n destructureMemberExpression(code, createIdentifier, resolveName, node, value, true, statementGenerators);\n break;\n\n case 'AssignmentPattern':\n {\n var name;\n var isIdentifier = node.left.type === 'Identifier';\n\n if (isIdentifier) {\n name = resolveName(node.left);\n } else {\n name = createIdentifier(value);\n }\n\n statementGenerators.push(function (start, prefix, suffix) {\n if (inline) {\n code.prependRight(node.right.start, name + \" = \" + value + \", \" + name + \" = \" + name + \" === void 0 ? \");\n code.appendLeft(node.right.end, \" : \" + name + suffix);\n } else {\n code.prependRight(node.right.start, prefix + \"var \" + name + \" = \" + value + \"; if ( \" + name + \" === void 0 ) \" + name + \" = \");\n code.appendLeft(node.right.end, suffix);\n }\n\n code.move(node.right.start, node.right.end, start);\n });\n\n if (isIdentifier) {\n code.remove(c, node.right.start);\n } else {\n code.remove(c, node.left.start);\n code.remove(node.left.end, node.right.start);\n handleProperty(code, createIdentifier, resolveName, c, node.left, name, inline, statementGenerators);\n }\n\n break;\n }\n\n case 'ObjectPattern':\n {\n code.remove(c, c = node.start);\n var ref = value;\n\n if (node.properties.length > 1) {\n ref = createIdentifier(value);\n statementGenerators.push(function (start, prefix, suffix) {\n // this feels a tiny bit hacky, but we can't do a\n // straightforward appendLeft and keep correct order...\n code.prependRight(node.start, (inline ? '' : prefix + \"var \") + ref + \" = \");\n code.overwrite(node.start, c = node.start + 1, value);\n code.appendLeft(c, suffix);\n code.overwrite(node.start, c = node.start + 1, (inline ? '' : prefix + \"var \") + ref + \" = \" + value + suffix);\n code.move(node.start, c, start);\n });\n }\n\n destructureObjectPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators);\n break;\n }\n\n case 'ArrayPattern':\n {\n code.remove(c, c = node.start);\n\n if (node.elements.filter(Boolean).length > 1) {\n var ref$1 = createIdentifier(value);\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(node.start, (inline ? '' : prefix + \"var \") + ref$1 + \" = \");\n code.overwrite(node.start, c = node.start + 1, value, {\n contentOnly: true\n });\n code.appendLeft(c, suffix);\n code.move(node.start, c, start);\n });\n node.elements.forEach(function (element, i) {\n if (!element) {\n return;\n }\n\n if (element.type === 'RestElement') {\n handleProperty(code, createIdentifier, resolveName, c, element.argument, ref$1 + \".slice(\" + i + \")\", inline, statementGenerators);\n } else {\n handleProperty(code, createIdentifier, resolveName, c, element, ref$1 + \"[\" + i + \"]\", inline, statementGenerators);\n }\n\n c = element.end;\n });\n } else {\n var index = findIndex(node.elements, Boolean);\n var element = node.elements[index];\n\n if (element.type === 'RestElement') {\n handleProperty(code, createIdentifier, resolveName, c, element.argument, value + \".slice(\" + index + \")\", inline, statementGenerators);\n } else {\n handleProperty(code, createIdentifier, resolveName, c, element, value + \"[\" + index + \"]\", inline, statementGenerators);\n }\n\n c = element.end;\n }\n\n code.remove(c, node.end);\n break;\n }\n\n default:\n {\n throw new Error(\"Unexpected node type in destructuring (\" + node.type + \")\");\n }\n }\n}\n\nfunction isUseStrict(node) {\n if (!node) {\n return false;\n }\n\n if (node.type !== 'ExpressionStatement') {\n return false;\n }\n\n if (node.expression.type !== 'Literal') {\n return false;\n }\n\n return node.expression.value === 'use strict';\n}\n\nvar BlockStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function BlockStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) BlockStatement.__proto__ = Node$$1;\n BlockStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n BlockStatement.prototype.constructor = BlockStatement;\n\n BlockStatement.prototype.createScope = function createScope() {\n var this$1 = this;\n this.parentIsFunction = /Function/.test(this.parent.type);\n this.isFunctionBlock = this.parentIsFunction || this.parent.type === 'Root';\n this.scope = new Scope({\n block: !this.isFunctionBlock,\n parent: this.parent.findScope(false),\n declare: function declare(id) {\n return this$1.createdDeclarations.push(id);\n }\n });\n\n if (this.parentIsFunction) {\n this.parent.params.forEach(function (node) {\n this$1.scope.addDeclaration(node, 'param');\n });\n }\n };\n\n BlockStatement.prototype.initialise = function initialise(transforms) {\n this.thisAlias = null;\n this.argumentsAlias = null;\n this.defaultParameters = [];\n this.createdDeclarations = []; // normally the scope gets created here, during initialisation,\n // but in some cases (e.g. `for` statements), we need to create\n // the scope early, as it pertains to both the init block and\n // the body of the statement\n\n if (!this.scope) {\n this.createScope();\n }\n\n this.body.forEach(function (node) {\n return node.initialise(transforms);\n });\n this.scope.consolidate();\n };\n\n BlockStatement.prototype.findLexicalBoundary = function findLexicalBoundary() {\n if (this.type === 'Program') {\n return this;\n }\n\n if (/^Function/.test(this.parent.type)) {\n return this;\n }\n\n return this.parent.findLexicalBoundary();\n };\n\n BlockStatement.prototype.findScope = function findScope(functionScope) {\n if (functionScope && !this.isFunctionBlock) {\n return this.parent.findScope(functionScope);\n }\n\n return this.scope;\n };\n\n BlockStatement.prototype.getArgumentsAlias = function getArgumentsAlias() {\n if (!this.argumentsAlias) {\n this.argumentsAlias = this.scope.createIdentifier('arguments');\n }\n\n return this.argumentsAlias;\n };\n\n BlockStatement.prototype.getArgumentsArrayAlias = function getArgumentsArrayAlias() {\n if (!this.argumentsArrayAlias) {\n this.argumentsArrayAlias = this.scope.createIdentifier('argsArray');\n }\n\n return this.argumentsArrayAlias;\n };\n\n BlockStatement.prototype.getThisAlias = function getThisAlias() {\n if (!this.thisAlias) {\n this.thisAlias = this.scope.createIdentifier('this');\n }\n\n return this.thisAlias;\n };\n\n BlockStatement.prototype.getIndentation = function getIndentation() {\n if (this.indentation === undefined) {\n var source = this.program.magicString.original;\n var useOuter = this.synthetic || !this.body.length;\n var c = useOuter ? this.start : this.body[0].start;\n\n while (c && source[c] !== '\\n') {\n c -= 1;\n }\n\n this.indentation = ''; // eslint-disable-next-line no-constant-condition\n\n while (true) {\n c += 1;\n var char = source[c];\n\n if (char !== ' ' && char !== '\\t') {\n break;\n }\n\n this.indentation += char;\n }\n\n var indentString = this.program.magicString.getIndentString(); // account for dedented class constructors\n\n var parent = this.parent;\n\n while (parent) {\n if (parent.kind === 'constructor' && !parent.parent.parent.superClass) {\n this.indentation = this.indentation.replace(indentString, '');\n }\n\n parent = parent.parent;\n }\n\n if (useOuter) {\n this.indentation += indentString;\n }\n }\n\n return this.indentation;\n };\n\n BlockStatement.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var indentation = this.getIndentation();\n var introStatementGenerators = [];\n\n if (this.argumentsAlias) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var assignment = prefix + \"var \" + this$1.argumentsAlias + \" = arguments\" + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (this.thisAlias) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var assignment = prefix + \"var \" + this$1.thisAlias + \" = this\" + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (this.argumentsArrayAlias) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var i = this$1.scope.createIdentifier('i');\n var assignment = prefix + \"var \" + i + \" = arguments.length, \" + this$1.argumentsArrayAlias + \" = Array(\" + i + \");\\n\" + indentation + \"while ( \" + i + \"-- ) \" + this$1.argumentsArrayAlias + \"[\" + i + \"] = arguments[\" + i + \"]\" + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (/Function/.test(this.parent.type)) {\n this.transpileParameters(this.parent.params, code, transforms, indentation, introStatementGenerators);\n } else if ('CatchClause' === this.parent.type) {\n this.transpileParameters([this.parent.param], code, transforms, indentation, introStatementGenerators);\n }\n\n if (transforms.letConst && this.isFunctionBlock) {\n this.transpileBlockScopedIdentifiers(code);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (this.createdDeclarations.length) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var assignment = prefix + \"var \" + this$1.createdDeclarations.join(', ') + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (this.synthetic) {\n if (this.parent.type === 'ArrowFunctionExpression') {\n var expr = this.body[0];\n\n if (introStatementGenerators.length) {\n code.appendLeft(this.start, \"{\").prependRight(this.end, this.parent.getIndentation() + \"}\");\n code.prependRight(expr.start, \"\\n\" + indentation + \"return \");\n code.appendLeft(expr.end, \";\\n\");\n } else if (transforms.arrow) {\n code.prependRight(expr.start, \"{ return \");\n code.appendLeft(expr.end, \"; }\");\n }\n } else if (introStatementGenerators.length) {\n code.prependRight(this.start, \"{\").appendLeft(this.end, \"}\");\n }\n }\n\n var start;\n\n if (isUseStrict(this.body[0])) {\n start = this.body[0].end;\n } else if (this.synthetic || this.parent.type === 'Root') {\n start = this.start;\n } else {\n start = this.start + 1;\n }\n\n var prefix = \"\\n\" + indentation;\n var suffix = ';';\n introStatementGenerators.forEach(function (fn, i) {\n if (i === introStatementGenerators.length - 1) {\n suffix = \";\\n\";\n }\n\n fn(start, prefix, suffix);\n });\n };\n\n BlockStatement.prototype.transpileParameters = function transpileParameters(params, code, transforms, indentation, introStatementGenerators) {\n var this$1 = this;\n params.forEach(function (param) {\n if (param.type === 'AssignmentPattern' && param.left.type === 'Identifier') {\n if (transforms.defaultParameter) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var lhs = prefix + \"if ( \" + param.left.name + \" === void 0 ) \" + param.left.name;\n code.prependRight(param.left.end, lhs).move(param.left.end, param.right.end, start).appendLeft(param.right.end, suffix);\n });\n }\n } else if (param.type === 'RestElement') {\n if (transforms.spreadRest) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var penultimateParam = params[params.length - 2];\n\n if (penultimateParam) {\n code.remove(penultimateParam ? penultimateParam.end : param.start, param.end);\n } else {\n var start$1 = param.start,\n end = param.end; // TODO https://gitlab.com/Rich-Harris/buble/issues/8\n\n while (/\\s/.test(code.original[start$1 - 1])) {\n start$1 -= 1;\n }\n\n while (/\\s/.test(code.original[end])) {\n end += 1;\n }\n\n code.remove(start$1, end);\n }\n\n var name = param.argument.name;\n var len = this$1.scope.createIdentifier('len');\n var count = params.length - 1;\n\n if (count) {\n code.prependRight(start, prefix + \"var \" + name + \" = [], \" + len + \" = arguments.length - \" + count + \";\\n\" + indentation + \"while ( \" + len + \"-- > 0 ) \" + name + \"[ \" + len + \" ] = arguments[ \" + len + \" + \" + count + \" ]\" + suffix);\n } else {\n code.prependRight(start, prefix + \"var \" + name + \" = [], \" + len + \" = arguments.length;\\n\" + indentation + \"while ( \" + len + \"-- ) \" + name + \"[ \" + len + \" ] = arguments[ \" + len + \" ]\" + suffix);\n }\n });\n }\n } else if (param.type !== 'Identifier') {\n if (transforms.parameterDestructuring) {\n var ref = this$1.scope.createIdentifier('ref');\n destructure(code, function (id) {\n return this$1.scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return this$1.scope.resolveName(name);\n }, param, ref, false, introStatementGenerators);\n code.prependRight(param.start, ref);\n }\n }\n });\n };\n\n BlockStatement.prototype.transpileBlockScopedIdentifiers = function transpileBlockScopedIdentifiers(code) {\n var this$1 = this;\n Object.keys(this.scope.blockScopedDeclarations).forEach(function (name) {\n var declarations = this$1.scope.blockScopedDeclarations[name];\n\n for (var i$2 = 0, list$2 = declarations; i$2 < list$2.length; i$2 += 1) {\n var declaration = list$2[i$2];\n var cont = false; // TODO implement proper continue...\n\n if (declaration.kind === 'for.let') {\n // special case\n var forStatement = declaration.node.findNearest('ForStatement');\n\n if (forStatement.shouldRewriteAsFunction) {\n var outerAlias = this$1.scope.createIdentifier(name);\n var innerAlias = forStatement.reassigned[name] ? this$1.scope.createIdentifier(name) : name;\n declaration.name = outerAlias;\n code.overwrite(declaration.node.start, declaration.node.end, outerAlias, {\n storeName: true\n });\n forStatement.aliases[name] = {\n outer: outerAlias,\n inner: innerAlias\n };\n\n for (var i = 0, list = declaration.instances; i < list.length; i += 1) {\n var identifier = list[i];\n var alias = forStatement.body.contains(identifier) ? innerAlias : outerAlias;\n\n if (name !== alias) {\n code.overwrite(identifier.start, identifier.end, alias, {\n storeName: true\n });\n }\n }\n\n cont = true;\n }\n }\n\n if (!cont) {\n var alias$1 = this$1.scope.createIdentifier(name);\n\n if (name !== alias$1) {\n declaration.name = alias$1;\n code.overwrite(declaration.node.start, declaration.node.end, alias$1, {\n storeName: true\n });\n\n for (var i$1 = 0, list$1 = declaration.instances; i$1 < list$1.length; i$1 += 1) {\n var identifier$1 = list$1[i$1];\n identifier$1.rewritten = true;\n code.overwrite(identifier$1.start, identifier$1.end, alias$1, {\n storeName: true\n });\n }\n }\n }\n }\n });\n };\n\n return BlockStatement;\n}(Node);\n\nfunction isArguments(node) {\n return node.type === 'Identifier' && node.name === 'arguments';\n}\n\nfunction inlineSpreads(code, node, elements) {\n var i = elements.length;\n\n while (i--) {\n var element = elements[i];\n\n if (!element || element.type !== 'SpreadElement') {\n continue;\n }\n\n var argument = element.argument;\n\n if (argument.type !== 'ArrayExpression') {\n continue;\n }\n\n var subelements = argument.elements;\n\n if (subelements.some(function (subelement) {\n return subelement === null;\n })) {\n // Not even going to try inlining spread arrays with holes.\n // It's a lot of work (got to be VERY careful in comma counting for\n // ArrayExpression, and turn blanks into undefined for\n // CallExpression and NewExpression), and probably literally no one\n // would ever benefit from it.\n continue;\n } // We can inline it: drop the `...[` and `]` and sort out any commas.\n\n\n var isLast = i === elements.length - 1;\n\n if (subelements.length === 0) {\n code.remove(isLast && i !== 0 ? elements[i - 1].end // Take the previous comma too\n : element.start, isLast ? node.end - 1 // Must remove trailing comma; element.end wouldn’t\n : elements[i + 1].start);\n } else {\n // Strip the `...[` and the `]` with a possible trailing comma before it,\n // leaving just the possible trailing comma after it.\n code.remove(element.start, subelements[0].start);\n code.remove( // Strip a possible trailing comma after the last element\n subelements[subelements.length - 1].end, // And also a possible trailing comma after the spread\n isLast ? node.end - 1 : element.end);\n }\n\n elements.splice.apply(elements, [i, 1].concat(subelements));\n i += subelements.length;\n }\n} // Returns false if it’s safe to simply append a method call to the node,\n// e.g. `a` → `a.concat()`.\n//\n// Returns true if it may not be and so parentheses should be employed,\n// e.g. `a ? b : c` → `a ? b : c.concat()` would be wrong.\n//\n// This test may be overcautious; if desired it can be refined over time.\n\n\nfunction needsParentheses(node) {\n switch (node.type) {\n // Currently whitelisted are all relevant ES5 node types ('Literal' and\n // 'ObjectExpression' are skipped as irrelevant for array/call spread.)\n case 'ArrayExpression':\n case 'CallExpression':\n case 'Identifier':\n case 'ParenthesizedExpression':\n case 'ThisExpression':\n return false;\n\n default:\n return true;\n }\n}\n\nfunction spread(code, elements, start, argumentsArrayAlias, isNew) {\n var i = elements.length;\n var firstSpreadIndex = -1;\n\n while (i--) {\n var element$1 = elements[i];\n\n if (element$1 && element$1.type === 'SpreadElement') {\n if (isArguments(element$1.argument)) {\n code.overwrite(element$1.argument.start, element$1.argument.end, argumentsArrayAlias);\n }\n\n firstSpreadIndex = i;\n }\n }\n\n if (firstSpreadIndex === -1) {\n return false;\n } // false indicates no spread elements\n\n\n if (isNew) {\n for (i = 0; i < elements.length; i += 1) {\n var element$2 = elements[i];\n\n if (element$2.type === 'SpreadElement') {\n code.remove(element$2.start, element$2.argument.start);\n } else {\n code.prependRight(element$2.start, '[');\n code.prependRight(element$2.end, ']');\n }\n }\n\n return true; // true indicates some spread elements\n }\n\n var element = elements[firstSpreadIndex];\n var previousElement = elements[firstSpreadIndex - 1];\n\n if (!previousElement) {\n // We may need to parenthesize it to handle ternaries like [...a ? b : c].\n var addClosingParen;\n\n if (start !== element.start) {\n if (addClosingParen = needsParentheses(element.argument)) {\n code.overwrite(start, element.start, '( ');\n } else {\n code.remove(start, element.start);\n }\n } else if (element.parent.type === 'CallExpression') {\n // CallExpression inserts `( ` itself, we add the ).\n // (Yeah, CallExpression did the needsParentheses call already,\n // but we don’t have its result handy, so do it again. It’s cheap.)\n addClosingParen = needsParentheses(element.argument);\n } else {\n // Should be unreachable, but doing this is more robust.\n throw new CompileError('Unsupported spread construct, please raise an issue at https://github.com/bublejs/buble/issues', element);\n }\n\n code.overwrite(element.end, elements[1].start, addClosingParen ? ' ).concat( ' : '.concat( ');\n } else {\n code.overwrite(previousElement.end, element.start, ' ].concat( ');\n }\n\n for (i = firstSpreadIndex; i < elements.length; i += 1) {\n element = elements[i];\n\n if (element) {\n if (element.type === 'SpreadElement') {\n code.remove(element.start, element.argument.start);\n } else {\n code.appendLeft(element.start, '[');\n code.appendLeft(element.end, ']');\n }\n }\n }\n\n return true; // true indicates some spread elements\n}\n\nvar ArrayExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ArrayExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ArrayExpression.__proto__ = Node$$1;\n ArrayExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ArrayExpression.prototype.constructor = ArrayExpression;\n\n ArrayExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.spreadRest && this.elements.length) {\n var lexicalBoundary = this.findLexicalBoundary();\n var i = this.elements.length;\n\n while (i--) {\n var element = this.elements[i];\n\n if (element && element.type === 'SpreadElement' && isArguments(element.argument)) {\n this.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n }\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ArrayExpression.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.spreadRest) {\n inlineSpreads(code, this, this.elements); // erase trailing comma after last array element if not an array hole\n\n if (this.elements.length) {\n var lastElement = this.elements[this.elements.length - 1];\n\n if (lastElement && /\\s*,/.test(code.original.slice(lastElement.end, this.end))) {\n code.overwrite(lastElement.end, this.end - 1, ' ');\n }\n }\n\n if (this.elements.length === 1) {\n var element = this.elements[0];\n\n if (element && element.type === 'SpreadElement') {\n // special case – [ ...arguments ]\n if (isArguments(element.argument)) {\n code.overwrite(this.start, this.end, \"[].concat( \" + this.argumentsArrayAlias + \" )\"); // TODO if this is the only use of argsArray, don't bother concating\n } else {\n code.overwrite(this.start, element.argument.start, '[].concat( ');\n code.overwrite(element.end, this.end, ' )');\n }\n }\n } else {\n var hasSpreadElements = spread(code, this.elements, this.start, this.argumentsArrayAlias);\n\n if (hasSpreadElements) {\n code.overwrite(this.end - 1, this.end, ')');\n }\n }\n }\n };\n\n return ArrayExpression;\n}(Node);\n\nfunction removeTrailingComma(code, c) {\n while (code.original[c] !== ')') {\n if (code.original[c] === ',') {\n code.remove(c, c + 1);\n return;\n }\n\n if (code.original[c] === '/') {\n c = code.original.indexOf(code.original[c + 1] === '/' ? '\\n' : '*/', c) + 1;\n }\n\n c += 1;\n }\n}\n\nvar ArrowFunctionExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ArrowFunctionExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ArrowFunctionExpression.__proto__ = Node$$1;\n ArrowFunctionExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ArrowFunctionExpression.prototype.constructor = ArrowFunctionExpression;\n\n ArrowFunctionExpression.prototype.initialise = function initialise(transforms) {\n if (this.async && transforms.asyncAwait) {\n CompileError.missingTransform(\"async arrow functions\", \"asyncAwait\", this);\n }\n\n this.body.createScope();\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ArrowFunctionExpression.prototype.transpile = function transpile(code, transforms) {\n var openParensPos = this.start;\n\n for (var end = (this.body || this.params[0]).start - 1; code.original[openParensPos] !== '(' && openParensPos < end;) {\n ++openParensPos;\n }\n\n if (code.original[openParensPos] !== '(') {\n openParensPos = -1;\n }\n\n var naked = openParensPos === -1;\n\n if (transforms.arrow || this.needsArguments(transforms)) {\n // remove arrow\n var charIndex = this.body.start;\n\n while (code.original[charIndex] !== '=') {\n charIndex -= 1;\n }\n\n code.remove(charIndex, this.body.start);\n Node$$1.prototype.transpile.call(this, code, transforms); // wrap naked parameter\n\n if (naked) {\n code.prependRight(this.params[0].start, '(');\n code.appendLeft(this.params[0].end, ')');\n } // standalone expression statement\n\n\n var standalone = this.parent && this.parent.type === 'ExpressionStatement';\n var start,\n text = standalone ? '!' : '';\n\n if (this.async) {\n text += 'async ';\n }\n\n text += 'function';\n\n if (!standalone) {\n text += ' ';\n }\n\n if (naked) {\n start = this.params[0].start;\n } else {\n start = openParensPos;\n } // add function\n\n\n if (start > this.start) {\n code.overwrite(this.start, start, text);\n } else {\n code.prependRight(this.start, text);\n }\n } else {\n Node$$1.prototype.transpile.call(this, code, transforms);\n }\n\n if (transforms.trailingFunctionCommas && this.params.length && !naked) {\n removeTrailingComma(code, this.params[this.params.length - 1].end);\n }\n }; // Returns whether any transforms that will happen use `arguments`\n\n\n ArrowFunctionExpression.prototype.needsArguments = function needsArguments(transforms) {\n return transforms.spreadRest && this.params.filter(function (param) {\n return param.type === 'RestElement';\n }).length > 0;\n };\n\n return ArrowFunctionExpression;\n}(Node);\n\nfunction checkConst(identifier, scope) {\n var declaration = scope.findDeclaration(identifier.name);\n\n if (declaration && declaration.kind === 'const') {\n throw new CompileError(identifier.name + \" is read-only\", identifier);\n }\n}\n\nvar AssignmentExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function AssignmentExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) AssignmentExpression.__proto__ = Node$$1;\n AssignmentExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n AssignmentExpression.prototype.constructor = AssignmentExpression;\n\n AssignmentExpression.prototype.initialise = function initialise(transforms) {\n if (this.left.type === 'Identifier') {\n var declaration = this.findScope(false).findDeclaration(this.left.name); // special case – https://gitlab.com/Rich-Harris/buble/issues/11\n\n var statement = declaration && declaration.node.ancestor(3);\n\n if (statement && statement.type === 'ForStatement' && statement.body.contains(this)) {\n statement.reassigned[this.left.name] = true;\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n AssignmentExpression.prototype.transpile = function transpile(code, transforms) {\n if (this.left.type === 'Identifier') {\n // Do this check after everything has been initialized to find\n // shadowing declarations after this expression\n checkConst(this.left, this.findScope(false));\n }\n\n if (this.operator === '**=' && transforms.exponentiation) {\n this.transpileExponentiation(code, transforms);\n } else if (/Pattern/.test(this.left.type) && transforms.destructuring) {\n this.transpileDestructuring(code);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n AssignmentExpression.prototype.transpileDestructuring = function transpileDestructuring(code) {\n var this$1 = this;\n var writeScope = this.findScope(true);\n var lookupScope = this.findScope(false);\n var assign = writeScope.createDeclaration('assign');\n code.appendRight(this.left.end, \"(\" + assign);\n code.appendLeft(this.right.end, ', ');\n var statementGenerators = [];\n destructure(code, function (id) {\n return writeScope.createDeclaration(id);\n }, function (node) {\n var name = lookupScope.resolveName(node.name);\n checkConst(node, lookupScope);\n return name;\n }, this.left, assign, true, statementGenerators);\n var suffix = ', ';\n statementGenerators.forEach(function (fn, j) {\n if (j === statementGenerators.length - 1) {\n suffix = '';\n }\n\n fn(this$1.end, '', suffix);\n });\n\n if (this.unparenthesizedParent().type === 'ExpressionStatement') {\n // no rvalue needed for expression statement\n code.prependRight(this.end, \")\");\n } else {\n // destructuring is part of an expression - need an rvalue\n code.appendRight(this.end, \", \" + assign + \")\");\n }\n };\n\n AssignmentExpression.prototype.transpileExponentiation = function transpileExponentiation(code) {\n var scope = this.findScope(false); // first, the easy part – `**=` -> `=`\n\n var charIndex = this.left.end;\n\n while (code.original[charIndex] !== '*') {\n charIndex += 1;\n }\n\n code.remove(charIndex, charIndex + 2); // how we do the next part depends on a number of factors – whether\n // this is a top-level statement, and whether we're updating a\n // simple or complex reference\n\n var base;\n var left = this.left.unparenthesize();\n\n if (left.type === 'Identifier') {\n base = scope.resolveName(left.name);\n } else if (left.type === 'MemberExpression') {\n var object;\n var needsObjectVar = false;\n var property;\n var needsPropertyVar = false;\n var statement = this.findNearest(/(?:Statement|Declaration)$/);\n var i0 = statement.getIndentation();\n\n if (left.property.type === 'Identifier') {\n property = left.computed ? scope.resolveName(left.property.name) : left.property.name;\n } else {\n property = scope.createDeclaration('property');\n needsPropertyVar = true;\n }\n\n if (left.object.type === 'Identifier') {\n object = scope.resolveName(left.object.name);\n } else {\n object = scope.createDeclaration('object');\n needsObjectVar = true;\n }\n\n if (left.start === statement.start) {\n if (needsObjectVar && needsPropertyVar) {\n code.prependRight(statement.start, object + \" = \");\n code.overwrite(left.object.end, left.property.start, \";\\n\" + i0 + property + \" = \");\n code.overwrite(left.property.end, left.end, \";\\n\" + i0 + object + \"[\" + property + \"]\");\n } else if (needsObjectVar) {\n code.prependRight(statement.start, object + \" = \");\n code.appendLeft(left.object.end, \";\\n\" + i0);\n code.appendLeft(left.object.end, object);\n } else if (needsPropertyVar) {\n code.prependRight(left.property.start, property + \" = \");\n code.appendLeft(left.property.end, \";\\n\" + i0);\n code.move(left.property.start, left.property.end, this.start);\n code.appendLeft(left.object.end, \"[\" + property + \"]\");\n code.remove(left.object.end, left.property.start);\n code.remove(left.property.end, left.end);\n }\n } else {\n if (needsObjectVar && needsPropertyVar) {\n code.prependRight(left.start, \"( \" + object + \" = \");\n code.overwrite(left.object.end, left.property.start, \", \" + property + \" = \");\n code.overwrite(left.property.end, left.end, \", \" + object + \"[\" + property + \"]\");\n } else if (needsObjectVar) {\n code.prependRight(left.start, \"( \" + object + \" = \");\n code.appendLeft(left.object.end, \", \" + object);\n } else if (needsPropertyVar) {\n code.prependRight(left.property.start, \"( \" + property + \" = \");\n code.appendLeft(left.property.end, \", \");\n code.move(left.property.start, left.property.end, left.start);\n code.overwrite(left.object.end, left.property.start, \"[\" + property + \"]\");\n code.remove(left.property.end, left.end);\n }\n\n if (needsPropertyVar) {\n code.appendLeft(this.end, \" )\");\n }\n }\n\n base = object + (left.computed || needsPropertyVar ? \"[\" + property + \"]\" : \".\" + property);\n }\n\n code.prependRight(this.right.start, \"Math.pow( \" + base + \", \");\n code.appendLeft(this.right.end, \" )\");\n };\n\n return AssignmentExpression;\n}(Node);\n\nvar AwaitExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function AwaitExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) AwaitExpression.__proto__ = Node$$1;\n AwaitExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n AwaitExpression.prototype.constructor = AwaitExpression;\n\n AwaitExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.asyncAwait) {\n CompileError.missingTransform(\"await\", \"asyncAwait\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return AwaitExpression;\n}(Node);\n\nvar BinaryExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function BinaryExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) BinaryExpression.__proto__ = Node$$1;\n BinaryExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n BinaryExpression.prototype.constructor = BinaryExpression;\n\n BinaryExpression.prototype.transpile = function transpile(code, transforms) {\n if (this.operator === '**' && transforms.exponentiation) {\n code.prependRight(this.start, \"Math.pow( \");\n code.overwrite(this.left.end, this.right.start, \", \");\n code.appendLeft(this.end, \" )\");\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return BinaryExpression;\n}(Node);\n\nvar loopStatement = /(?:For(?:In|Of)?|While)Statement/;\n\nvar BreakStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function BreakStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) BreakStatement.__proto__ = Node$$1;\n BreakStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n BreakStatement.prototype.constructor = BreakStatement;\n\n BreakStatement.prototype.initialise = function initialise() {\n var loop = this.findNearest(loopStatement);\n var switchCase = this.findNearest('SwitchCase');\n\n if (loop && (!switchCase || loop.depth > switchCase.depth)) {\n loop.canBreak = true;\n this.loop = loop;\n }\n };\n\n BreakStatement.prototype.transpile = function transpile(code) {\n if (this.loop && this.loop.shouldRewriteAsFunction) {\n if (this.label) {\n throw new CompileError('Labels are not currently supported in a loop with locally-scoped variables', this);\n }\n\n code.overwrite(this.start, this.start + 5, \"return 'break'\");\n }\n };\n\n return BreakStatement;\n}(Node);\n\nvar CallExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function CallExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) CallExpression.__proto__ = Node$$1;\n CallExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n CallExpression.prototype.constructor = CallExpression;\n\n CallExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.spreadRest && this.arguments.length > 1) {\n var lexicalBoundary = this.findLexicalBoundary();\n var i = this.arguments.length;\n\n while (i--) {\n var arg = this.arguments[i];\n\n if (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n this.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n }\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n CallExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.spreadRest && this.arguments.length) {\n inlineSpreads(code, this, this.arguments); // this.arguments.length may have changed, must retest.\n }\n\n if (transforms.spreadRest && this.arguments.length) {\n var hasSpreadElements = false;\n var context;\n var firstArgument = this.arguments[0];\n\n if (this.arguments.length === 1) {\n if (firstArgument.type === 'SpreadElement') {\n code.remove(firstArgument.start, firstArgument.argument.start);\n hasSpreadElements = true;\n }\n } else {\n hasSpreadElements = spread(code, this.arguments, firstArgument.start, this.argumentsArrayAlias);\n }\n\n if (hasSpreadElements) {\n // we need to handle super() and super.method() differently\n // due to its instance\n var _super = null;\n\n if (this.callee.type === 'Super') {\n _super = this.callee;\n } else if (this.callee.type === 'MemberExpression' && this.callee.object.type === 'Super') {\n _super = this.callee.object;\n }\n\n if (!_super && this.callee.type === 'MemberExpression') {\n if (this.callee.object.type === 'Identifier') {\n context = this.callee.object.name;\n } else {\n context = this.findScope(true).createDeclaration('ref');\n var callExpression = this.callee.object;\n code.prependRight(callExpression.start, \"(\" + context + \" = \");\n code.appendLeft(callExpression.end, \")\");\n }\n } else {\n context = 'void 0';\n }\n\n code.appendLeft(this.callee.end, '.apply');\n\n if (_super) {\n _super.noCall = true; // bit hacky...\n\n if (this.arguments.length > 1) {\n if (firstArgument.type === 'SpreadElement') {\n if (needsParentheses(firstArgument.argument)) {\n code.prependRight(firstArgument.start, \"( \");\n }\n } else {\n code.prependRight(firstArgument.start, \"[ \");\n }\n\n code.appendLeft(this.arguments[this.arguments.length - 1].end, ' )');\n }\n } else if (this.arguments.length === 1) {\n code.prependRight(firstArgument.start, context + \", \");\n } else {\n if (firstArgument.type === 'SpreadElement') {\n if (needsParentheses(firstArgument.argument)) {\n code.appendLeft(firstArgument.start, context + \", ( \");\n } else {\n code.appendLeft(firstArgument.start, context + \", \");\n }\n } else {\n code.appendLeft(firstArgument.start, context + \", [ \");\n }\n\n code.appendLeft(this.arguments[this.arguments.length - 1].end, ' )');\n }\n }\n }\n\n if (transforms.trailingFunctionCommas && this.arguments.length) {\n removeTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return CallExpression;\n}(Node); // TODO this code is pretty wild, tidy it up\n\n\nvar ClassBody =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ClassBody() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ClassBody.__proto__ = Node$$1;\n ClassBody.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ClassBody.prototype.constructor = ClassBody;\n\n ClassBody.prototype.transpile = function transpile(code, transforms, inFunctionExpression, superName) {\n var this$1 = this;\n\n if (transforms.classes) {\n var name = this.parent.name;\n var indentStr = code.getIndentString();\n var i0 = this.getIndentation() + (inFunctionExpression ? indentStr : '');\n var i1 = i0 + indentStr;\n var constructorIndex = findIndex(this.body, function (node) {\n return node.kind === 'constructor';\n });\n var constructor = this.body[constructorIndex];\n var introBlock = '';\n var outroBlock = '';\n\n if (this.body.length) {\n code.remove(this.start, this.body[0].start);\n code.remove(this.body[this.body.length - 1].end, this.end);\n } else {\n code.remove(this.start, this.end);\n }\n\n if (constructor) {\n constructor.value.body.isConstructorBody = true;\n var previousMethod = this.body[constructorIndex - 1];\n var nextMethod = this.body[constructorIndex + 1]; // ensure constructor is first\n\n if (constructorIndex > 0) {\n code.remove(previousMethod.end, constructor.start);\n code.move(constructor.start, nextMethod ? nextMethod.start : this.end - 1, this.body[0].start);\n }\n\n if (!inFunctionExpression) {\n code.appendLeft(constructor.end, ';');\n }\n }\n\n var namedFunctions = this.program.options.namedFunctionExpressions !== false;\n var namedConstructor = namedFunctions || this.parent.superClass || this.parent.type !== 'ClassDeclaration';\n\n if (this.parent.superClass) {\n var inheritanceBlock = \"if ( \" + superName + \" ) \" + name + \".__proto__ = \" + superName + \";\\n\" + i0 + name + \".prototype = Object.create( \" + superName + \" && \" + superName + \".prototype );\\n\" + i0 + name + \".prototype.constructor = \" + name + \";\";\n\n if (constructor) {\n introBlock += \"\\n\\n\" + i0 + inheritanceBlock;\n } else {\n var fn = \"function \" + name + \" () {\" + (superName ? \"\\n\" + i1 + superName + \".apply(this, arguments);\\n\" + i0 + \"}\" : \"}\") + (inFunctionExpression ? '' : ';') + (this.body.length ? \"\\n\\n\" + i0 : '');\n inheritanceBlock = fn + inheritanceBlock;\n introBlock += inheritanceBlock + \"\\n\\n\" + i0;\n }\n } else if (!constructor) {\n var fn$1 = 'function ' + (namedConstructor ? name + ' ' : '') + '() {}';\n\n if (this.parent.type === 'ClassDeclaration') {\n fn$1 += ';';\n }\n\n if (this.body.length) {\n fn$1 += \"\\n\\n\" + i0;\n }\n\n introBlock += fn$1;\n }\n\n var scope = this.findScope(false);\n var prototypeGettersAndSetters = [];\n var staticGettersAndSetters = [];\n var prototypeAccessors;\n var staticAccessors;\n this.body.forEach(function (method, i) {\n if ((method.kind === 'get' || method.kind === 'set') && transforms.getterSetter) {\n CompileError.missingTransform(\"getters and setters\", \"getterSetter\", method);\n }\n\n if (method.kind === 'constructor') {\n var constructorName = namedConstructor ? ' ' + name : '';\n code.overwrite(method.key.start, method.key.end, \"function\" + constructorName);\n return;\n }\n\n if (method.static) {\n var len = code.original[method.start + 6] == ' ' ? 7 : 6;\n code.remove(method.start, method.start + len);\n }\n\n var isAccessor = method.kind !== 'method';\n var lhs;\n var methodName = method.key.name;\n\n if (reserved[methodName] || method.value.body.scope.references[methodName]) {\n methodName = scope.createIdentifier(methodName);\n } // when method name is a string or a number let's pretend it's a computed method\n\n\n var fake_computed = false;\n\n if (!method.computed && method.key.type === 'Literal') {\n fake_computed = true;\n method.computed = true;\n }\n\n if (isAccessor) {\n if (method.computed) {\n throw new Error('Computed accessor properties are not currently supported');\n }\n\n code.remove(method.start, method.key.start);\n\n if (method.static) {\n if (!~staticGettersAndSetters.indexOf(method.key.name)) {\n staticGettersAndSetters.push(method.key.name);\n }\n\n if (!staticAccessors) {\n staticAccessors = scope.createIdentifier('staticAccessors');\n }\n\n lhs = \"\" + staticAccessors;\n } else {\n if (!~prototypeGettersAndSetters.indexOf(method.key.name)) {\n prototypeGettersAndSetters.push(method.key.name);\n }\n\n if (!prototypeAccessors) {\n prototypeAccessors = scope.createIdentifier('prototypeAccessors');\n }\n\n lhs = \"\" + prototypeAccessors;\n }\n } else {\n lhs = method.static ? \"\" + name : name + \".prototype\";\n }\n\n if (!method.computed) {\n lhs += '.';\n }\n\n var insertNewlines = constructorIndex > 0 && i === constructorIndex + 1 || i === 0 && constructorIndex === this$1.body.length - 1;\n\n if (insertNewlines) {\n lhs = \"\\n\\n\" + i0 + lhs;\n }\n\n var c = method.key.end;\n\n if (method.computed) {\n if (fake_computed) {\n code.prependRight(method.key.start, '[');\n code.appendLeft(method.key.end, ']');\n } else {\n while (code.original[c] !== ']') {\n c += 1;\n }\n\n c += 1;\n }\n }\n\n var funcName = method.computed || isAccessor || !namedFunctions ? '' : methodName + \" \";\n var rhs = (isAccessor ? \".\" + method.kind : '') + \" = \" + (method.value.async ? 'async ' : '') + \"function\" + (method.value.generator ? '* ' : ' ') + funcName;\n code.remove(c, method.value.start);\n code.prependRight(method.value.start, rhs);\n code.appendLeft(method.end, ';');\n\n if (method.value.generator) {\n code.remove(method.start, method.key.start);\n }\n\n var start = method.key.start;\n\n if (method.computed && !fake_computed) {\n while (code.original[start] != '[') {\n --start;\n }\n }\n\n if (method.start < start) {\n code.overwrite(method.start, start, lhs);\n } else {\n code.prependRight(method.start, lhs);\n }\n });\n\n if (prototypeGettersAndSetters.length || staticGettersAndSetters.length) {\n var intro = [];\n var outro = [];\n\n if (prototypeGettersAndSetters.length) {\n intro.push(\"var \" + prototypeAccessors + \" = { \" + prototypeGettersAndSetters.map(function (name) {\n return name + \": { configurable: true }\";\n }).join(',') + \" };\");\n outro.push(\"Object.defineProperties( \" + name + \".prototype, \" + prototypeAccessors + \" );\");\n }\n\n if (staticGettersAndSetters.length) {\n intro.push(\"var \" + staticAccessors + \" = { \" + staticGettersAndSetters.map(function (name) {\n return name + \": { configurable: true }\";\n }).join(',') + \" };\");\n outro.push(\"Object.defineProperties( \" + name + \", \" + staticAccessors + \" );\");\n }\n\n if (constructor) {\n introBlock += \"\\n\\n\" + i0;\n }\n\n introBlock += intro.join(\"\\n\" + i0);\n\n if (!constructor) {\n introBlock += \"\\n\\n\" + i0;\n }\n\n outroBlock += \"\\n\\n\" + i0 + outro.join(\"\\n\" + i0);\n }\n\n if (constructor) {\n code.appendLeft(constructor.end, introBlock);\n } else {\n code.prependRight(this.start, introBlock);\n }\n\n code.appendLeft(this.end, outroBlock);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return ClassBody;\n}(Node); // TODO this function is slightly flawed – it works on the original string,\n// not its current edited state.\n// That's not a problem for the way that it's currently used, but it could\n// be in future...\n\n\nfunction deindent(node, code) {\n var start = node.start;\n var end = node.end;\n var indentStr = code.getIndentString();\n var indentStrLen = indentStr.length;\n var indentStart = start - indentStrLen;\n\n if (!node.program.indentExclusions[indentStart] && code.original.slice(indentStart, start) === indentStr) {\n code.remove(indentStart, start);\n }\n\n var pattern = new RegExp(indentStr + '\\\\S', 'g');\n var slice = code.original.slice(start, end);\n var match;\n\n while (match = pattern.exec(slice)) {\n var removeStart = start + match.index;\n\n if (!node.program.indentExclusions[removeStart]) {\n code.remove(removeStart, removeStart + indentStrLen);\n }\n }\n}\n\nvar ClassDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ClassDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ClassDeclaration.__proto__ = Node$$1;\n ClassDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ClassDeclaration.prototype.constructor = ClassDeclaration;\n\n ClassDeclaration.prototype.initialise = function initialise(transforms) {\n if (this.id) {\n this.name = this.id.name;\n this.findScope(true).addDeclaration(this.id, 'class');\n } else {\n this.name = this.findScope(true).createIdentifier(\"defaultExport\");\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ClassDeclaration.prototype.transpile = function transpile(code, transforms) {\n if (transforms.classes) {\n if (!this.superClass) {\n deindent(this.body, code);\n }\n\n var superName = this.superClass && (this.superClass.name || 'superclass');\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString(); // if this is an export default statement, we have to move the export to\n // after the declaration, because `export default var Foo = ...` is illegal\n\n var isExportDefaultDeclaration = this.parent.type === 'ExportDefaultDeclaration';\n\n if (isExportDefaultDeclaration) {\n code.remove(this.parent.start, this.start);\n }\n\n var c = this.start;\n\n if (this.id) {\n code.overwrite(c, this.id.start, 'var ');\n c = this.id.end;\n } else {\n code.prependLeft(c, \"var \" + this.name);\n }\n\n if (this.superClass) {\n if (this.superClass.end === this.body.start) {\n code.remove(c, this.superClass.start);\n code.appendLeft(c, \" = /*@__PURE__*/(function (\" + superName + \") {\\n\" + i1);\n } else {\n code.overwrite(c, this.superClass.start, ' = ');\n code.overwrite(this.superClass.end, this.body.start, \"/*@__PURE__*/(function (\" + superName + \") {\\n\" + i1);\n }\n } else {\n if (c === this.body.start) {\n code.appendLeft(c, ' = ');\n } else {\n code.overwrite(c, this.body.start, ' = ');\n }\n }\n\n this.body.transpile(code, transforms, !!this.superClass, superName);\n var syntheticDefaultExport = isExportDefaultDeclaration ? \"\\n\\n\" + i0 + \"export default \" + this.name + \";\" : '';\n\n if (this.superClass) {\n code.appendLeft(this.end, \"\\n\\n\" + i1 + \"return \" + this.name + \";\\n\" + i0 + \"}(\");\n code.move(this.superClass.start, this.superClass.end, this.end);\n code.prependRight(this.end, \"));\" + syntheticDefaultExport);\n } else if (syntheticDefaultExport) {\n code.prependRight(this.end, syntheticDefaultExport);\n }\n } else {\n this.body.transpile(code, transforms, false, null);\n }\n };\n\n return ClassDeclaration;\n}(Node);\n\nvar ClassExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ClassExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ClassExpression.__proto__ = Node$$1;\n ClassExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ClassExpression.prototype.constructor = ClassExpression;\n\n ClassExpression.prototype.initialise = function initialise(transforms) {\n this.name = (this.id ? this.id.name : this.parent.type === 'VariableDeclarator' ? this.parent.id.name : this.parent.type !== 'AssignmentExpression' ? null : this.parent.left.type === 'Identifier' ? this.parent.left.name : this.parent.left.type === 'MemberExpression' ? this.parent.left.property.name : null) || this.findScope(true).createIdentifier('anonymous');\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ClassExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.classes) {\n var superName = this.superClass && (this.superClass.name || 'superclass');\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n\n if (this.superClass) {\n code.remove(this.start, this.superClass.start);\n code.remove(this.superClass.end, this.body.start);\n code.appendRight(this.start, \"/*@__PURE__*/(function (\" + superName + \") {\\n\" + i1);\n } else {\n code.overwrite(this.start, this.body.start, \"/*@__PURE__*/(function () {\\n\" + i1);\n }\n\n this.body.transpile(code, transforms, true, superName);\n var superClass = '';\n\n if (this.superClass) {\n superClass = code.slice(this.superClass.start, this.superClass.end);\n code.remove(this.superClass.start, this.superClass.end);\n }\n\n code.appendLeft(this.end, \"\\n\\n\" + i1 + \"return \" + this.name + \";\\n\" + i0 + \"}(\" + superClass + \"))\");\n } else {\n this.body.transpile(code, transforms, false);\n }\n };\n\n return ClassExpression;\n}(Node);\n\nvar ContinueStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ContinueStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ContinueStatement.__proto__ = Node$$1;\n ContinueStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ContinueStatement.prototype.constructor = ContinueStatement;\n\n ContinueStatement.prototype.transpile = function transpile(code) {\n var loop = this.findNearest(loopStatement);\n\n if (loop.shouldRewriteAsFunction) {\n if (this.label) {\n throw new CompileError('Labels are not currently supported in a loop with locally-scoped variables', this);\n }\n\n code.overwrite(this.start, this.start + 8, 'return');\n }\n };\n\n return ContinueStatement;\n}(Node);\n\nvar ExportDefaultDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ExportDefaultDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ExportDefaultDeclaration.__proto__ = Node$$1;\n ExportDefaultDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ExportDefaultDeclaration.prototype.constructor = ExportDefaultDeclaration;\n\n ExportDefaultDeclaration.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleExport) {\n CompileError.missingTransform(\"export\", \"moduleExport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ExportDefaultDeclaration;\n}(Node);\n\nvar ExportNamedDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ExportNamedDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ExportNamedDeclaration.__proto__ = Node$$1;\n ExportNamedDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ExportNamedDeclaration.prototype.constructor = ExportNamedDeclaration;\n\n ExportNamedDeclaration.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleExport) {\n CompileError.missingTransform(\"export\", \"moduleExport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ExportNamedDeclaration;\n}(Node);\n\nvar LoopStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function LoopStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) LoopStatement.__proto__ = Node$$1;\n LoopStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n LoopStatement.prototype.constructor = LoopStatement;\n\n LoopStatement.prototype.findScope = function findScope(functionScope) {\n return functionScope || !this.createdScope ? this.parent.findScope(functionScope) : this.body.scope;\n };\n\n LoopStatement.prototype.initialise = function initialise(transforms) {\n this.body.createScope();\n this.createdScope = true; // this is populated as and when reassignments occur\n\n this.reassigned = Object.create(null);\n this.aliases = Object.create(null);\n this.thisRefs = [];\n Node$$1.prototype.initialise.call(this, transforms);\n\n if (transforms.letConst) {\n // see if any block-scoped declarations are referenced\n // inside function expressions\n var names = Object.keys(this.body.scope.declarations);\n var i = names.length;\n\n while (i--) {\n var name = names[i];\n var declaration = this.body.scope.declarations[name];\n var j = declaration.instances.length;\n\n while (j--) {\n var instance = declaration.instances[j];\n var nearestFunctionExpression = instance.findNearest(/Function/);\n\n if (nearestFunctionExpression && nearestFunctionExpression.depth > this.depth) {\n this.shouldRewriteAsFunction = true;\n\n for (var i$1 = 0, list = this.thisRefs; i$1 < list.length; i$1 += 1) {\n var node = list[i$1];\n node.alias = node.alias || node.findLexicalBoundary().getThisAlias();\n }\n\n break;\n }\n }\n\n if (this.shouldRewriteAsFunction) {\n break;\n }\n }\n }\n };\n\n LoopStatement.prototype.transpile = function transpile(code, transforms) {\n var needsBlock = this.type != 'ForOfStatement' && (this.body.type !== 'BlockStatement' || this.body.type === 'BlockStatement' && this.body.synthetic);\n\n if (this.shouldRewriteAsFunction) {\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n var argString = this.args ? \" \" + this.args.join(', ') + \" \" : '';\n var paramString = this.params ? \" \" + this.params.join(', ') + \" \" : '';\n var functionScope = this.findScope(true);\n var loop = functionScope.createIdentifier('loop');\n var before = \"var \" + loop + \" = function (\" + paramString + \") \" + (this.body.synthetic ? \"{\\n\" + i0 + code.getIndentString() : '');\n var after = (this.body.synthetic ? \"\\n\" + i0 + \"}\" : '') + \";\\n\\n\" + i0;\n code.prependRight(this.body.start, before);\n code.appendLeft(this.body.end, after);\n code.move(this.start, this.body.start, this.body.end);\n\n if (this.canBreak || this.canReturn) {\n var returned = functionScope.createIdentifier('returned');\n var insert = \"{\\n\" + i1 + \"var \" + returned + \" = \" + loop + \"(\" + argString + \");\\n\";\n\n if (this.canBreak) {\n insert += \"\\n\" + i1 + \"if ( \" + returned + \" === 'break' ) break;\";\n }\n\n if (this.canReturn) {\n insert += \"\\n\" + i1 + \"if ( \" + returned + \" ) return \" + returned + \".v;\";\n }\n\n insert += \"\\n\" + i0 + \"}\";\n code.prependRight(this.body.end, insert);\n } else {\n var callExpression = loop + \"(\" + argString + \");\";\n\n if (this.type === 'DoWhileStatement') {\n code.overwrite(this.start, this.body.start, \"do {\\n\" + i1 + callExpression + \"\\n\" + i0 + \"}\");\n } else {\n code.prependRight(this.body.end, callExpression);\n }\n }\n } else if (needsBlock) {\n code.appendLeft(this.body.start, '{ ');\n code.prependRight(this.body.end, ' }');\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return LoopStatement;\n}(Node);\n\nvar ForStatement =\n/*@__PURE__*/\nfunction (LoopStatement$$1) {\n function ForStatement() {\n LoopStatement$$1.apply(this, arguments);\n }\n\n if (LoopStatement$$1) ForStatement.__proto__ = LoopStatement$$1;\n ForStatement.prototype = Object.create(LoopStatement$$1 && LoopStatement$$1.prototype);\n ForStatement.prototype.constructor = ForStatement;\n\n ForStatement.prototype.findScope = function findScope(functionScope) {\n return functionScope || !this.createdScope ? this.parent.findScope(functionScope) : this.body.scope;\n };\n\n ForStatement.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var i1 = this.getIndentation() + code.getIndentString();\n\n if (this.shouldRewriteAsFunction) {\n // which variables are declared in the init statement?\n var names = this.init.type === 'VariableDeclaration' ? this.init.declarations.map(function (declarator) {\n return extractNames(declarator.id);\n }) : [];\n var aliases = this.aliases;\n this.args = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].outer : name;\n });\n this.params = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].inner : name;\n });\n var updates = Object.keys(this.reassigned).map(function (name) {\n return aliases[name].outer + \" = \" + aliases[name].inner + \";\";\n });\n\n if (updates.length) {\n if (this.body.synthetic) {\n code.appendLeft(this.body.body[0].end, \"; \" + updates.join(\" \"));\n } else {\n var lastStatement = this.body.body[this.body.body.length - 1];\n code.appendLeft(lastStatement.end, \"\\n\\n\" + i1 + updates.join(\"\\n\" + i1));\n }\n }\n }\n\n LoopStatement$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return ForStatement;\n}(LoopStatement);\n\nvar ForInStatement =\n/*@__PURE__*/\nfunction (LoopStatement$$1) {\n function ForInStatement() {\n LoopStatement$$1.apply(this, arguments);\n }\n\n if (LoopStatement$$1) ForInStatement.__proto__ = LoopStatement$$1;\n ForInStatement.prototype = Object.create(LoopStatement$$1 && LoopStatement$$1.prototype);\n ForInStatement.prototype.constructor = ForInStatement;\n\n ForInStatement.prototype.findScope = function findScope(functionScope) {\n return functionScope || !this.createdScope ? this.parent.findScope(functionScope) : this.body.scope;\n };\n\n ForInStatement.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var hasDeclaration = this.left.type === 'VariableDeclaration';\n\n if (this.shouldRewriteAsFunction) {\n // which variables are declared in the init statement?\n var names = hasDeclaration ? this.left.declarations.map(function (declarator) {\n return extractNames(declarator.id);\n }) : [];\n this.args = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].outer : name;\n });\n this.params = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].inner : name;\n });\n }\n\n LoopStatement$$1.prototype.transpile.call(this, code, transforms);\n var maybePattern = hasDeclaration ? this.left.declarations[0].id : this.left;\n\n if (maybePattern.type !== 'Identifier') {\n this.destructurePattern(code, maybePattern, hasDeclaration);\n }\n };\n\n ForInStatement.prototype.destructurePattern = function destructurePattern(code, pattern, isDeclaration) {\n var scope = this.findScope(true);\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n var ref = scope.createIdentifier('ref');\n var bodyStart = this.body.body.length ? this.body.body[0].start : this.body.start + 1;\n code.move(pattern.start, pattern.end, bodyStart);\n code.prependRight(pattern.end, isDeclaration ? ref : \"var \" + ref);\n var statementGenerators = [];\n destructure(code, function (id) {\n return scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return scope.resolveName(name);\n }, pattern, ref, false, statementGenerators);\n var suffix = \";\\n\" + i1;\n statementGenerators.forEach(function (fn, i) {\n if (i === statementGenerators.length - 1) {\n suffix = \";\\n\\n\" + i1;\n }\n\n fn(bodyStart, '', suffix);\n });\n };\n\n return ForInStatement;\n}(LoopStatement);\n\nvar ForOfStatement =\n/*@__PURE__*/\nfunction (LoopStatement$$1) {\n function ForOfStatement() {\n LoopStatement$$1.apply(this, arguments);\n }\n\n if (LoopStatement$$1) ForOfStatement.__proto__ = LoopStatement$$1;\n ForOfStatement.prototype = Object.create(LoopStatement$$1 && LoopStatement$$1.prototype);\n ForOfStatement.prototype.constructor = ForOfStatement;\n\n ForOfStatement.prototype.initialise = function initialise(transforms) {\n if (transforms.forOf && !transforms.dangerousForOf) {\n CompileError.missingTransform(\"for-of statements\", \"forOf\", this, \"dangerousForOf\");\n }\n\n if (this.await && transforms.asyncAwait) {\n CompileError.missingTransform(\"for-await-of statements\", \"asyncAwait\", this);\n }\n\n LoopStatement$$1.prototype.initialise.call(this, transforms);\n };\n\n ForOfStatement.prototype.transpile = function transpile(code, transforms) {\n LoopStatement$$1.prototype.transpile.call(this, code, transforms);\n\n if (!transforms.dangerousForOf) {\n return;\n } // edge case (#80)\n\n\n if (!this.body.body[0]) {\n if (this.left.type === 'VariableDeclaration' && this.left.kind === 'var') {\n code.remove(this.start, this.left.start);\n code.appendLeft(this.left.end, ';');\n code.remove(this.left.end, this.end);\n } else {\n code.remove(this.start, this.end);\n }\n\n return;\n }\n\n var scope = this.findScope(true);\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n var key = scope.createIdentifier('i');\n var list = scope.createIdentifier('list');\n\n if (this.body.synthetic) {\n code.prependRight(this.left.start, \"{\\n\" + i1);\n code.appendLeft(this.body.body[0].end, \"\\n\" + i0 + \"}\");\n }\n\n var bodyStart = this.body.body[0].start;\n code.remove(this.left.end, this.right.start);\n code.move(this.left.start, this.left.end, bodyStart);\n code.prependRight(this.right.start, \"var \" + key + \" = 0, \" + list + \" = \");\n code.appendLeft(this.right.end, \"; \" + key + \" < \" + list + \".length; \" + key + \" += 1\");\n var isDeclaration = this.left.type === 'VariableDeclaration';\n var maybeDestructuring = isDeclaration ? this.left.declarations[0].id : this.left;\n\n if (maybeDestructuring.type !== 'Identifier') {\n var statementGenerators = [];\n var ref = scope.createIdentifier('ref');\n destructure(code, function (id) {\n return scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return scope.resolveName(name);\n }, maybeDestructuring, ref, !isDeclaration, statementGenerators);\n var suffix = \";\\n\" + i1;\n statementGenerators.forEach(function (fn, i) {\n if (i === statementGenerators.length - 1) {\n suffix = \";\\n\\n\" + i1;\n }\n\n fn(bodyStart, '', suffix);\n });\n\n if (isDeclaration) {\n code.appendLeft(this.left.start + this.left.kind.length + 1, ref);\n code.appendLeft(this.left.end, \" = \" + list + \"[\" + key + \"];\\n\" + i1);\n } else {\n code.appendLeft(this.left.end, \"var \" + ref + \" = \" + list + \"[\" + key + \"];\\n\" + i1);\n }\n } else {\n code.appendLeft(this.left.end, \" = \" + list + \"[\" + key + \"];\\n\\n\" + i1);\n }\n };\n\n return ForOfStatement;\n}(LoopStatement);\n\nvar FunctionDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function FunctionDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) FunctionDeclaration.__proto__ = Node$$1;\n FunctionDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n FunctionDeclaration.prototype.constructor = FunctionDeclaration;\n\n FunctionDeclaration.prototype.initialise = function initialise(transforms) {\n if (this.generator && transforms.generator) {\n CompileError.missingTransform(\"generators\", \"generator\", this);\n }\n\n if (this.async && transforms.asyncAwait) {\n CompileError.missingTransform(\"async functions\", \"asyncAwait\", this);\n }\n\n this.body.createScope();\n\n if (this.id) {\n this.findScope(true).addDeclaration(this.id, 'function');\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n FunctionDeclaration.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.trailingFunctionCommas && this.params.length) {\n removeTrailingComma(code, this.params[this.params.length - 1].end);\n }\n };\n\n return FunctionDeclaration;\n}(Node);\n\nvar FunctionExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function FunctionExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) FunctionExpression.__proto__ = Node$$1;\n FunctionExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n FunctionExpression.prototype.constructor = FunctionExpression;\n\n FunctionExpression.prototype.initialise = function initialise(transforms) {\n if (this.generator && transforms.generator) {\n CompileError.missingTransform(\"generators\", \"generator\", this);\n }\n\n if (this.async && transforms.asyncAwait) {\n CompileError.missingTransform(\"async functions\", \"asyncAwait\", this);\n }\n\n this.body.createScope();\n\n if (this.id) {\n // function expression IDs belong to the child scope...\n this.body.scope.addDeclaration(this.id, 'function');\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n var parent = this.parent;\n var methodName;\n\n if (transforms.conciseMethodProperty && parent.type === 'Property' && parent.kind === 'init' && parent.method && parent.key.type === 'Identifier') {\n // object literal concise method\n methodName = parent.key.name;\n } else if (transforms.classes && parent.type === 'MethodDefinition' && parent.kind === 'method' && parent.key.type === 'Identifier') {\n // method definition in a class\n methodName = parent.key.name;\n } else if (this.id && this.id.type === 'Identifier') {\n // naked function expression\n methodName = this.id.alias || this.id.name;\n }\n\n if (methodName) {\n for (var i$1 = 0, list$1 = this.params; i$1 < list$1.length; i$1 += 1) {\n var param = list$1[i$1];\n\n if (param.type === 'Identifier' && methodName === param.name) {\n // workaround for Safari 9/WebKit bug:\n // https://gitlab.com/Rich-Harris/buble/issues/154\n // change parameter name when same as method name\n var scope = this.body.scope;\n var declaration = scope.declarations[methodName];\n var alias = scope.createIdentifier(methodName);\n param.alias = alias;\n\n for (var i = 0, list = declaration.instances; i < list.length; i += 1) {\n var identifier = list[i];\n identifier.alias = alias;\n }\n\n break;\n }\n }\n }\n };\n\n FunctionExpression.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.trailingFunctionCommas && this.params.length) {\n removeTrailingComma(code, this.params[this.params.length - 1].end);\n }\n };\n\n return FunctionExpression;\n}(Node);\n\nfunction isReference(node, parent) {\n if (node.type === 'MemberExpression') {\n return !node.computed && isReference(node.object, node);\n }\n\n if (node.type === 'Identifier') {\n // the only time we could have an identifier node without a parent is\n // if it's the entire body of a function without a block statement –\n // i.e. an arrow function expression like `a => a`\n if (!parent) {\n return true;\n }\n\n if (/(Function|Class)Expression/.test(parent.type)) {\n return false;\n }\n\n if (parent.type === 'VariableDeclarator') {\n return node === parent.init;\n } // TODO is this right?\n\n\n if (parent.type === 'MemberExpression' || parent.type === 'MethodDefinition') {\n return parent.computed || node === parent.object;\n }\n\n if (parent.type === 'ArrayPattern') {\n return false;\n } // disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\n\n if (parent.type === 'Property') {\n if (parent.parent.type === 'ObjectPattern') {\n return false;\n }\n\n return parent.computed || node === parent.value;\n } // disregard the `bar` in `class Foo { bar () {...} }`\n\n\n if (parent.type === 'MethodDefinition') {\n return false;\n } // disregard the `bar` in `export { foo as bar }`\n\n\n if (parent.type === 'ExportSpecifier' && node !== parent.local) {\n return false;\n }\n\n return true;\n }\n}\n\nvar Identifier =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Identifier() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Identifier.__proto__ = Node$$1;\n Identifier.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Identifier.prototype.constructor = Identifier;\n\n Identifier.prototype.findScope = function findScope(functionScope) {\n if (this.parent.params && ~this.parent.params.indexOf(this)) {\n return this.parent.body.scope;\n }\n\n if (this.parent.type === 'FunctionExpression' && this === this.parent.id) {\n return this.parent.body.scope;\n }\n\n return this.parent.findScope(functionScope);\n };\n\n Identifier.prototype.initialise = function initialise(transforms) {\n if (isReference(this, this.parent)) {\n if (transforms.arrow && this.name === 'arguments' && !this.findScope(false).contains(this.name)) {\n var lexicalBoundary = this.findLexicalBoundary();\n var arrowFunction = this.findNearest('ArrowFunctionExpression');\n var loop = this.findNearest(loopStatement);\n\n if (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n this.alias = lexicalBoundary.getArgumentsAlias();\n }\n\n if (loop && loop.body.contains(this) && loop.depth > lexicalBoundary.depth) {\n this.alias = lexicalBoundary.getArgumentsAlias();\n }\n }\n\n this.findScope(false).addReference(this);\n }\n };\n\n Identifier.prototype.transpile = function transpile(code) {\n if (this.alias) {\n code.overwrite(this.start, this.end, this.alias, {\n storeName: true,\n contentOnly: true\n });\n }\n };\n\n return Identifier;\n}(Node);\n\nvar IfStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function IfStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) IfStatement.__proto__ = Node$$1;\n IfStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n IfStatement.prototype.constructor = IfStatement;\n\n IfStatement.prototype.initialise = function initialise(transforms) {\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n IfStatement.prototype.transpile = function transpile(code, transforms) {\n if (this.consequent.type !== 'BlockStatement' || this.consequent.type === 'BlockStatement' && this.consequent.synthetic) {\n code.appendLeft(this.consequent.start, '{ ');\n code.prependRight(this.consequent.end, ' }');\n }\n\n if (this.alternate && this.alternate.type !== 'IfStatement' && (this.alternate.type !== 'BlockStatement' || this.alternate.type === 'BlockStatement' && this.alternate.synthetic)) {\n code.appendLeft(this.alternate.start, '{ ');\n code.prependRight(this.alternate.end, ' }');\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return IfStatement;\n}(Node);\n\nvar Import =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Import() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Import.__proto__ = Node$$1;\n Import.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Import.prototype.constructor = Import;\n\n Import.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleImport) {\n CompileError.missingTransform(\"dynamic import expressions\", \"moduleImport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return Import;\n}(Node);\n\nvar ImportDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ImportDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ImportDeclaration.__proto__ = Node$$1;\n ImportDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ImportDeclaration.prototype.constructor = ImportDeclaration;\n\n ImportDeclaration.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleImport) {\n CompileError.missingTransform(\"import\", \"moduleImport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ImportDeclaration;\n}(Node);\n\nvar ImportDefaultSpecifier =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ImportDefaultSpecifier() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ImportDefaultSpecifier.__proto__ = Node$$1;\n ImportDefaultSpecifier.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ImportDefaultSpecifier.prototype.constructor = ImportDefaultSpecifier;\n\n ImportDefaultSpecifier.prototype.initialise = function initialise(transforms) {\n this.findScope(true).addDeclaration(this.local, 'import');\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ImportDefaultSpecifier;\n}(Node);\n\nvar ImportSpecifier =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ImportSpecifier() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ImportSpecifier.__proto__ = Node$$1;\n ImportSpecifier.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ImportSpecifier.prototype.constructor = ImportSpecifier;\n\n ImportSpecifier.prototype.initialise = function initialise(transforms) {\n this.findScope(true).addDeclaration(this.local, 'import');\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ImportSpecifier;\n}(Node);\n\nvar hasDashes = function hasDashes(val) {\n return /-/.test(val);\n};\n\nvar formatKey = function formatKey(key) {\n return hasDashes(key) ? \"'\" + key + \"'\" : key;\n};\n\nvar formatVal = function formatVal(val) {\n return val ? '' : 'true';\n};\n\nvar JSXAttribute =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXAttribute() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXAttribute.__proto__ = Node$$1;\n JSXAttribute.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXAttribute.prototype.constructor = JSXAttribute;\n\n JSXAttribute.prototype.transpile = function transpile(code, transforms) {\n var ref = this.name;\n var start = ref.start;\n var name = ref.name; // Overwrite equals sign if value is present.\n\n var end = this.value ? this.value.start : this.name.end;\n code.overwrite(start, end, formatKey(name) + \": \" + formatVal(this.value));\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return JSXAttribute;\n}(Node);\n\nfunction containsNewLine(node) {\n return node.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value);\n}\n\nvar JSXClosingElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXClosingElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXClosingElement.__proto__ = Node$$1;\n JSXClosingElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXClosingElement.prototype.constructor = JSXClosingElement;\n\n JSXClosingElement.prototype.transpile = function transpile(code) {\n var spaceBeforeParen = true;\n var lastChild = this.parent.children[this.parent.children.length - 1]; // omit space before closing paren if\n // a) this is on a separate line, or\n // b) there are no children but there are attributes\n\n if (lastChild && containsNewLine(lastChild) || this.parent.openingElement.attributes.length) {\n spaceBeforeParen = false;\n }\n\n code.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n };\n\n return JSXClosingElement;\n}(Node);\n\nfunction containsNewLine$1(node) {\n return node.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value);\n}\n\nvar JSXClosingFragment =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXClosingFragment() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXClosingFragment.__proto__ = Node$$1;\n JSXClosingFragment.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXClosingFragment.prototype.constructor = JSXClosingFragment;\n\n JSXClosingFragment.prototype.transpile = function transpile(code) {\n var spaceBeforeParen = true;\n var lastChild = this.parent.children[this.parent.children.length - 1]; // omit space before closing paren if this is on a separate line\n\n if (lastChild && containsNewLine$1(lastChild)) {\n spaceBeforeParen = false;\n }\n\n code.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n };\n\n return JSXClosingFragment;\n}(Node);\n\nfunction normalise(str, removeTrailingWhitespace) {\n str = str.replace(/\\u00a0/g, ' ');\n\n if (removeTrailingWhitespace && /\\n/.test(str)) {\n str = str.replace(/\\s+$/, '');\n }\n\n str = str.replace(/^\\n\\r?\\s+/, '') // remove leading newline + space\n .replace(/\\s*\\n\\r?\\s*/gm, ' '); // replace newlines with spaces\n // TODO prefer single quotes?\n\n return JSON.stringify(str);\n}\n\nvar JSXElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXElement.__proto__ = Node$$1;\n JSXElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXElement.prototype.constructor = JSXElement;\n\n JSXElement.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n var children = this.children.filter(function (child) {\n if (child.type !== 'JSXText') {\n return true;\n } // remove whitespace-only literals, unless on a single line\n\n\n return /\\S/.test(child.raw) || !/\\n/.test(child.raw);\n });\n\n if (children.length) {\n var c = (this.openingElement || this.openingFragment).end;\n var i;\n\n for (i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (child.type === 'JSXExpressionContainer' && child.expression.type === 'JSXEmptyExpression') ;else {\n var tail = code.original[c] === '\\n' && child.type !== 'JSXText' ? '' : ' ';\n code.appendLeft(c, \",\" + tail);\n }\n\n if (child.type === 'JSXText') {\n var str = normalise(child.value, i === children.length - 1);\n code.overwrite(child.start, child.end, str);\n }\n\n c = child.end;\n }\n }\n };\n\n return JSXElement;\n}(Node);\n\nvar JSXExpressionContainer =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXExpressionContainer() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXExpressionContainer.__proto__ = Node$$1;\n JSXExpressionContainer.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXExpressionContainer.prototype.constructor = JSXExpressionContainer;\n\n JSXExpressionContainer.prototype.transpile = function transpile(code, transforms) {\n code.remove(this.start, this.expression.start);\n code.remove(this.expression.end, this.end);\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return JSXExpressionContainer;\n}(Node);\n\nvar JSXFragment =\n/*@__PURE__*/\nfunction (JSXElement$$1) {\n function JSXFragment() {\n JSXElement$$1.apply(this, arguments);\n }\n\n if (JSXElement$$1) JSXFragment.__proto__ = JSXElement$$1;\n JSXFragment.prototype = Object.create(JSXElement$$1 && JSXElement$$1.prototype);\n JSXFragment.prototype.constructor = JSXFragment;\n return JSXFragment;\n}(JSXElement);\n\nvar JSXOpeningElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXOpeningElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXOpeningElement.__proto__ = Node$$1;\n JSXOpeningElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXOpeningElement.prototype.constructor = JSXOpeningElement;\n\n JSXOpeningElement.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n code.overwrite(this.start, this.name.start, this.program.jsx + \"( \");\n var html = this.name.type === 'JSXIdentifier' && this.name.name[0] === this.name.name[0].toLowerCase();\n\n if (html) {\n code.prependRight(this.name.start, \"'\");\n }\n\n var len = this.attributes.length;\n var c = this.name.end;\n\n if (len) {\n var i;\n var hasSpread = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.attributes[i].type === 'JSXSpreadAttribute') {\n hasSpread = true;\n break;\n }\n }\n\n c = this.attributes[0].end;\n\n for (i = 0; i < len; i += 1) {\n var attr = this.attributes[i];\n\n if (i > 0) {\n if (attr.start === c) {\n code.prependRight(c, ', ');\n } else {\n code.overwrite(c, attr.start, ', ');\n }\n }\n\n if (hasSpread && attr.type !== 'JSXSpreadAttribute') {\n var lastAttr = this.attributes[i - 1];\n var nextAttr = this.attributes[i + 1];\n\n if (!lastAttr || lastAttr.type === 'JSXSpreadAttribute') {\n code.prependRight(attr.start, '{ ');\n }\n\n if (!nextAttr || nextAttr.type === 'JSXSpreadAttribute') {\n code.appendLeft(attr.end, ' }');\n }\n }\n\n c = attr.end;\n }\n\n var after;\n var before;\n\n if (hasSpread) {\n if (len === 1) {\n before = html ? \"',\" : ',';\n } else {\n if (!this.program.options.objectAssign) {\n throw new CompileError(\"Mixed JSX attributes ending in spread requires specified objectAssign option with 'Object.assign' or polyfill helper.\", this);\n }\n\n before = html ? \"', \" + this.program.options.objectAssign + \"({},\" : \", \" + this.program.options.objectAssign + \"({},\";\n after = ')';\n }\n } else {\n before = html ? \"', {\" : ', {';\n after = ' }';\n }\n\n code.prependRight(this.name.end, before);\n\n if (after) {\n code.appendLeft(this.attributes[len - 1].end, after);\n }\n } else {\n code.appendLeft(this.name.end, html ? \"', null\" : \", null\");\n c = this.name.end;\n }\n\n if (this.selfClosing) {\n code.overwrite(c, this.end, this.attributes.length ? \")\" : \" )\");\n } else {\n code.remove(c, this.end);\n }\n };\n\n return JSXOpeningElement;\n}(Node);\n\nvar JSXOpeningFragment =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXOpeningFragment() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXOpeningFragment.__proto__ = Node$$1;\n JSXOpeningFragment.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXOpeningFragment.prototype.constructor = JSXOpeningFragment;\n\n JSXOpeningFragment.prototype.transpile = function transpile(code) {\n code.overwrite(this.start, this.end, this.program.jsx + \"( React.Fragment, null\");\n };\n\n return JSXOpeningFragment;\n}(Node);\n\nvar JSXSpreadAttribute =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXSpreadAttribute() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXSpreadAttribute.__proto__ = Node$$1;\n JSXSpreadAttribute.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXSpreadAttribute.prototype.constructor = JSXSpreadAttribute;\n\n JSXSpreadAttribute.prototype.transpile = function transpile(code, transforms) {\n code.remove(this.start, this.argument.start);\n code.remove(this.argument.end, this.end);\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return JSXSpreadAttribute;\n}(Node);\n\nvar nonAsciiLsOrPs = /[\\u2028-\\u2029]/g;\n\nvar Literal =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Literal() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Literal.__proto__ = Node$$1;\n Literal.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Literal.prototype.constructor = Literal;\n\n Literal.prototype.initialise = function initialise() {\n if (typeof this.value === 'string') {\n this.program.indentExclusionElements.push(this);\n }\n };\n\n Literal.prototype.transpile = function transpile(code, transforms) {\n if (transforms.numericLiteral) {\n if (this.raw.match(/^0[bo]/i)) {\n code.overwrite(this.start, this.end, String(this.value), {\n storeName: true,\n contentOnly: true\n });\n }\n }\n\n if (this.regex) {\n var ref = this.regex;\n var pattern = ref.pattern;\n var flags = ref.flags;\n\n if (transforms.stickyRegExp && /y/.test(flags)) {\n CompileError.missingTransform('the regular expression sticky flag', 'stickyRegExp', this);\n }\n\n if (transforms.unicodeRegExp && /u/.test(flags)) {\n code.overwrite(this.start, this.end, \"/\" + regexpu_core__WEBPACK_IMPORTED_MODULE_0___default()(pattern, flags) + \"/\" + flags.replace('u', ''), {\n contentOnly: true\n });\n }\n } else if (typeof this.value === \"string\" && this.value.match(nonAsciiLsOrPs)) {\n code.overwrite(this.start, this.end, this.raw.replace(nonAsciiLsOrPs, function (m) {\n return m == \"\\u2028\" ? \"\\\\u2028\" : \"\\\\u2029\";\n }), {\n contentOnly: true\n });\n }\n };\n\n return Literal;\n}(Node);\n\nvar MemberExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function MemberExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) MemberExpression.__proto__ = Node$$1;\n MemberExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n MemberExpression.prototype.constructor = MemberExpression;\n\n MemberExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.reservedProperties && reserved[this.property.name]) {\n code.overwrite(this.object.end, this.property.start, \"['\");\n code.appendLeft(this.property.end, \"']\");\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return MemberExpression;\n}(Node);\n\nvar NewExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function NewExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) NewExpression.__proto__ = Node$$1;\n NewExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n NewExpression.prototype.constructor = NewExpression;\n\n NewExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.spreadRest && this.arguments.length) {\n var lexicalBoundary = this.findLexicalBoundary();\n var i = this.arguments.length;\n\n while (i--) {\n var arg = this.arguments[i];\n\n if (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n this.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n break;\n }\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n NewExpression.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.spreadRest && this.arguments.length) {\n inlineSpreads(code, this, this.arguments); // this.arguments.length may have changed, must retest.\n }\n\n if (transforms.spreadRest && this.arguments.length) {\n var firstArgument = this.arguments[0];\n var isNew = true;\n var hasSpreadElements = spread(code, this.arguments, firstArgument.start, this.argumentsArrayAlias, isNew);\n\n if (hasSpreadElements) {\n code.prependRight(this.start + 'new'.length, ' (Function.prototype.bind.apply(');\n code.overwrite(this.callee.end, firstArgument.start, ', [ null ].concat( ');\n code.appendLeft(this.end, ' ))');\n }\n }\n\n if (this.arguments.length) {\n removeTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n }\n };\n\n return NewExpression;\n}(Node);\n\nvar ObjectExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ObjectExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ObjectExpression.__proto__ = Node$$1;\n ObjectExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ObjectExpression.prototype.constructor = ObjectExpression;\n\n ObjectExpression.prototype.transpile = function transpile(code, transforms) {\n var ref;\n Node$$1.prototype.transpile.call(this, code, transforms);\n var firstPropertyStart = this.start + 1;\n var spreadPropertyCount = 0;\n var computedPropertyCount = 0;\n var firstSpreadProperty = null;\n var firstComputedProperty = null;\n\n for (var i = 0; i < this.properties.length; ++i) {\n var prop = this.properties[i];\n\n if (prop.type === 'SpreadElement') {\n // First see if we can inline the spread, to save needing objectAssign.\n var argument = prop.argument;\n\n if (argument.type === 'ObjectExpression' || argument.type === 'Literal' && typeof argument.value !== 'string') {\n if (argument.type === 'ObjectExpression' && argument.properties.length > 0) {\n // Strip the `...{` and the `}` with a possible trailing comma before it,\n // leaving just the possible trailing comma after it.\n code.remove(prop.start, argument.properties[0].start);\n code.remove(argument.properties[argument.properties.length - 1].end, prop.end);\n (ref = this.properties).splice.apply(ref, [i, 1].concat(argument.properties));\n i--;\n } else {\n // An empty object, boolean, null, undefined, number or regexp (but NOT\n // string) will spread to nothing, so just remove the element altogether,\n // including a possible trailing comma.\n code.remove(prop.start, i === this.properties.length - 1 ? prop.end : this.properties[i + 1].start);\n this.properties.splice(i, 1);\n i--;\n }\n } else {\n spreadPropertyCount += 1;\n\n if (firstSpreadProperty === null) {\n firstSpreadProperty = i;\n }\n }\n } else if (prop.computed && transforms.computedProperty) {\n computedPropertyCount += 1;\n\n if (firstComputedProperty === null) {\n firstComputedProperty = i;\n }\n }\n }\n\n if (spreadPropertyCount && !transforms.objectRestSpread && !(computedPropertyCount && transforms.computedProperty)) {\n spreadPropertyCount = 0;\n firstSpreadProperty = null;\n } else if (spreadPropertyCount) {\n if (!this.program.options.objectAssign) {\n throw new CompileError(\"Object spread operator requires specified objectAssign option with 'Object.assign' or polyfill helper.\", this);\n }\n\n var i$1 = this.properties.length;\n\n while (i$1--) {\n var prop$1 = this.properties[i$1]; // enclose run of non-spread properties in curlies\n\n if (prop$1.type === 'Property' && !computedPropertyCount) {\n var lastProp = this.properties[i$1 - 1];\n var nextProp = this.properties[i$1 + 1];\n\n if (!lastProp || lastProp.type !== 'Property') {\n code.prependRight(prop$1.start, '{');\n }\n\n if (!nextProp || nextProp.type !== 'Property') {\n code.appendLeft(prop$1.end, '}');\n }\n } // Remove ellipsis on spread property\n\n\n if (prop$1.type === 'SpreadElement') {\n code.remove(prop$1.start, prop$1.argument.start);\n code.remove(prop$1.argument.end, prop$1.end);\n }\n } // wrap the whole thing in Object.assign\n\n\n firstPropertyStart = this.properties[0].start;\n\n if (!computedPropertyCount) {\n code.overwrite(this.start, firstPropertyStart, this.program.options.objectAssign + \"({}, \");\n code.overwrite(this.properties[this.properties.length - 1].end, this.end, ')');\n } else if (this.properties[0].type === 'SpreadElement') {\n code.overwrite(this.start, firstPropertyStart, this.program.options.objectAssign + \"({}, \");\n code.remove(this.end - 1, this.end);\n code.appendRight(this.end, ')');\n } else {\n code.prependLeft(this.start, this.program.options.objectAssign + \"(\");\n code.appendRight(this.end, ')');\n }\n }\n\n if (computedPropertyCount && transforms.computedProperty) {\n var i0 = this.getIndentation();\n var isSimpleAssignment;\n var name;\n\n if (this.parent.type === 'VariableDeclarator' && this.parent.parent.declarations.length === 1 && this.parent.id.type === 'Identifier') {\n isSimpleAssignment = true;\n name = this.parent.id.alias || this.parent.id.name; // TODO is this right?\n } else if (this.parent.type === 'AssignmentExpression' && this.parent.parent.type === 'ExpressionStatement' && this.parent.left.type === 'Identifier') {\n isSimpleAssignment = true;\n name = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n } else if (this.parent.type === 'AssignmentPattern' && this.parent.left.type === 'Identifier') {\n isSimpleAssignment = true;\n name = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n }\n\n if (spreadPropertyCount) {\n isSimpleAssignment = false;\n } // handle block scoping\n\n\n name = this.findScope(false).resolveName(name);\n var start = firstPropertyStart;\n var end = this.end;\n if (isSimpleAssignment) ;else {\n if (firstSpreadProperty === null || firstComputedProperty < firstSpreadProperty) {\n name = this.findScope(true).createDeclaration('obj');\n code.prependRight(this.start, \"( \" + name + \" = \");\n } else {\n name = null;\n } // We don't actually need this variable\n\n }\n var len = this.properties.length;\n var lastComputedProp;\n var sawNonComputedProperty = false;\n var isFirst = true;\n\n for (var i$2 = 0; i$2 < len; i$2 += 1) {\n var prop$2 = this.properties[i$2];\n var moveStart = i$2 > 0 ? this.properties[i$2 - 1].end : start;\n\n if (prop$2.type === 'Property' && (prop$2.computed || lastComputedProp && !spreadPropertyCount)) {\n if (i$2 === 0) {\n moveStart = this.start + 1;\n } // Trim leading whitespace\n\n\n lastComputedProp = prop$2;\n\n if (!name) {\n name = this.findScope(true).createDeclaration('obj');\n var propId = name + (prop$2.computed ? '' : '.');\n code.appendRight(prop$2.start, \"( \" + name + \" = {}, \" + propId);\n } else {\n var propId$1 = (isSimpleAssignment ? \";\\n\" + i0 + name : \", \" + name) + (prop$2.key.type === 'Literal' || prop$2.computed ? '' : '.');\n\n if (moveStart < prop$2.start) {\n code.overwrite(moveStart, prop$2.start, propId$1);\n } else {\n code.prependRight(prop$2.start, propId$1);\n }\n }\n\n var c = prop$2.key.end;\n\n if (prop$2.computed) {\n while (code.original[c] !== ']') {\n c += 1;\n }\n\n c += 1;\n }\n\n if (prop$2.key.type === 'Literal' && !prop$2.computed) {\n code.overwrite(prop$2.start, prop$2.key.end + 1, '[' + code.slice(prop$2.start, prop$2.key.end) + '] = ');\n } else if (prop$2.shorthand || prop$2.method && !prop$2.computed && transforms.conciseMethodProperty) {\n // Replace : with = if Property::transpile inserted the :\n code.overwrite(prop$2.key.start, prop$2.key.end, code.slice(prop$2.key.start, prop$2.key.end).replace(/:/, ' ='));\n } else {\n if (prop$2.value.start > c) {\n code.remove(c, prop$2.value.start);\n }\n\n code.prependLeft(c, ' = ');\n } // This duplicates behavior from Property::transpile which is disabled\n // for computed properties or if conciseMethodProperty is false\n\n\n if (prop$2.method && (prop$2.computed || !transforms.conciseMethodProperty)) {\n if (prop$2.value.generator) {\n code.remove(prop$2.start, prop$2.key.start);\n }\n\n code.prependRight(prop$2.value.start, \"function\" + (prop$2.value.generator ? '*' : '') + \" \");\n }\n } else if (prop$2.type === 'SpreadElement') {\n if (name && i$2 > 0) {\n if (!lastComputedProp) {\n lastComputedProp = this.properties[i$2 - 1];\n }\n\n code.appendLeft(lastComputedProp.end, \", \" + name + \" )\");\n lastComputedProp = null;\n name = null;\n }\n } else {\n if (!isFirst && spreadPropertyCount) {\n // We are in an Object.assign context, so we need to wrap regular properties\n code.prependRight(prop$2.start, '{');\n code.appendLeft(prop$2.end, '}');\n }\n\n sawNonComputedProperty = true;\n }\n\n if (isFirst && (prop$2.type === 'SpreadElement' || prop$2.computed)) {\n var beginEnd = sawNonComputedProperty ? this.properties[this.properties.length - 1].end : this.end - 1; // Trim trailing comma because it can easily become a leading comma which is illegal\n\n if (code.original[beginEnd] == ',') {\n ++beginEnd;\n }\n\n var closing = code.slice(beginEnd, end);\n code.prependLeft(moveStart, closing);\n code.remove(beginEnd, end);\n isFirst = false;\n } // Clean up some extranous whitespace\n\n\n var c$1 = prop$2.end;\n\n if (i$2 < len - 1 && !sawNonComputedProperty) {\n while (code.original[c$1] !== ',') {\n c$1 += 1;\n }\n } else if (i$2 == len - 1) {\n c$1 = this.end;\n }\n\n if (prop$2.end != c$1) {\n code.overwrite(prop$2.end, c$1, '', {\n contentOnly: true\n });\n }\n }\n\n if (!isSimpleAssignment && name) {\n code.appendLeft(lastComputedProp.end, \", \" + name + \" )\");\n }\n }\n };\n\n return ObjectExpression;\n}(Node);\n\nvar Property =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Property() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Property.__proto__ = Node$$1;\n Property.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Property.prototype.constructor = Property;\n\n Property.prototype.initialise = function initialise(transforms) {\n if ((this.kind === 'get' || this.kind === 'set') && transforms.getterSetter) {\n CompileError.missingTransform(\"getters and setters\", \"getterSetter\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n Property.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.conciseMethodProperty && !this.computed && this.parent.type !== 'ObjectPattern') {\n if (this.shorthand) {\n code.prependRight(this.start, this.key.name + \": \");\n } else if (this.method) {\n var name = '';\n\n if (this.program.options.namedFunctionExpressions !== false) {\n if (this.key.type === 'Literal' && typeof this.key.value === 'number') {\n name = '';\n } else if (this.key.type === 'Identifier') {\n if (reserved[this.key.name] || !/^[a-z_$][a-z0-9_$]*$/i.test(this.key.name) || this.value.body.scope.references[this.key.name]) {\n name = this.findScope(true).createIdentifier(this.key.name);\n } else {\n name = this.key.name;\n }\n } else {\n name = this.findScope(true).createIdentifier(this.key.value);\n }\n\n name = ' ' + name;\n }\n\n if (this.start < this.key.start) {\n code.remove(this.start, this.key.start);\n }\n\n code.appendLeft(this.key.end, \": \" + (this.value.async ? 'async ' : '') + \"function\" + (this.value.generator ? '*' : '') + name);\n }\n }\n\n if (transforms.reservedProperties && reserved[this.key.name]) {\n code.prependRight(this.key.start, \"'\");\n code.appendLeft(this.key.end, \"'\");\n }\n };\n\n return Property;\n}(Node);\n\nvar ReturnStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ReturnStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ReturnStatement.__proto__ = Node$$1;\n ReturnStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ReturnStatement.prototype.constructor = ReturnStatement;\n\n ReturnStatement.prototype.initialise = function initialise(transforms) {\n this.loop = this.findNearest(loopStatement);\n this.nearestFunction = this.findNearest(/Function/);\n\n if (this.loop && (!this.nearestFunction || this.loop.depth > this.nearestFunction.depth)) {\n this.loop.canReturn = true;\n this.shouldWrap = true;\n }\n\n if (this.argument) {\n this.argument.initialise(transforms);\n }\n };\n\n ReturnStatement.prototype.transpile = function transpile(code, transforms) {\n var shouldWrap = this.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n if (this.argument) {\n if (shouldWrap) {\n code.prependRight(this.argument.start, \"{ v: \");\n }\n\n this.argument.transpile(code, transforms);\n\n if (shouldWrap) {\n code.appendLeft(this.argument.end, \" }\");\n }\n } else if (shouldWrap) {\n code.appendLeft(this.start + 6, ' {}');\n }\n };\n\n return ReturnStatement;\n}(Node);\n\nvar Super =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Super() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Super.__proto__ = Node$$1;\n Super.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Super.prototype.constructor = Super;\n\n Super.prototype.initialise = function initialise(transforms) {\n if (transforms.classes) {\n this.method = this.findNearest('MethodDefinition');\n\n if (!this.method) {\n throw new CompileError('use of super outside class method', this);\n }\n\n var parentClass = this.findNearest('ClassBody').parent;\n this.superClassName = parentClass.superClass && (parentClass.superClass.name || 'superclass');\n\n if (!this.superClassName) {\n throw new CompileError('super used in base class', this);\n }\n\n this.isCalled = this.parent.type === 'CallExpression' && this === this.parent.callee;\n\n if (this.method.kind !== 'constructor' && this.isCalled) {\n throw new CompileError('super() not allowed outside class constructor', this);\n }\n\n this.isMember = this.parent.type === 'MemberExpression';\n\n if (!this.isCalled && !this.isMember) {\n throw new CompileError('Unexpected use of `super` (expected `super(...)` or `super.*`)', this);\n }\n }\n\n if (transforms.arrow) {\n var lexicalBoundary = this.findLexicalBoundary();\n var arrowFunction = this.findNearest('ArrowFunctionExpression');\n var loop = this.findNearest(loopStatement);\n\n if (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n this.thisAlias = lexicalBoundary.getThisAlias();\n }\n\n if (loop && loop.body.contains(this) && loop.depth > lexicalBoundary.depth) {\n this.thisAlias = lexicalBoundary.getThisAlias();\n }\n }\n };\n\n Super.prototype.transpile = function transpile(code, transforms) {\n if (transforms.classes) {\n var expression = this.isCalled || this.method.static ? this.superClassName : this.superClassName + \".prototype\";\n code.overwrite(this.start, this.end, expression, {\n storeName: true,\n contentOnly: true\n });\n var callExpression = this.isCalled ? this.parent : this.parent.parent;\n\n if (callExpression && callExpression.type === 'CallExpression') {\n if (!this.noCall) {\n // special case – `super( ...args )`\n code.appendLeft(callExpression.callee.end, '.call');\n }\n\n var thisAlias = this.thisAlias || 'this';\n\n if (callExpression.arguments.length) {\n code.appendLeft(callExpression.arguments[0].start, thisAlias + \", \");\n } else {\n code.appendLeft(callExpression.end - 1, \"\" + thisAlias);\n }\n }\n }\n };\n\n return Super;\n}(Node);\n\nvar TaggedTemplateExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function TaggedTemplateExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) TaggedTemplateExpression.__proto__ = Node$$1;\n TaggedTemplateExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n TaggedTemplateExpression.prototype.constructor = TaggedTemplateExpression;\n\n TaggedTemplateExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.templateString && !transforms.dangerousTaggedTemplateString) {\n CompileError.missingTransform(\"tagged template strings\", \"templateString\", this, \"dangerousTaggedTemplateString\");\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n TaggedTemplateExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.templateString && transforms.dangerousTaggedTemplateString) {\n var ordered = this.quasi.expressions.concat(this.quasi.quasis).sort(function (a, b) {\n return a.start - b.start;\n });\n var program = this.program;\n var rootScope = program.body.scope; // insert strings at start\n\n var templateStrings = this.quasi.quasis.map(function (quasi) {\n return JSON.stringify(quasi.value.cooked);\n }).join(', ');\n var templateObject = this.program.templateLiteralQuasis[templateStrings];\n\n if (!templateObject) {\n templateObject = rootScope.createIdentifier('templateObject');\n code.prependRight(this.program.prependAt, \"var \" + templateObject + \" = Object.freeze([\" + templateStrings + \"]);\\n\");\n this.program.templateLiteralQuasis[templateStrings] = templateObject;\n }\n\n code.overwrite(this.tag.end, ordered[0].start, \"(\" + templateObject);\n var lastIndex = ordered[0].start;\n ordered.forEach(function (node) {\n if (node.type === 'TemplateElement') {\n code.remove(lastIndex, node.end);\n } else {\n code.overwrite(lastIndex, node.start, ', ');\n }\n\n lastIndex = node.end;\n });\n code.overwrite(lastIndex, this.end, ')');\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return TaggedTemplateExpression;\n}(Node);\n\nvar TemplateElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function TemplateElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) TemplateElement.__proto__ = Node$$1;\n TemplateElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n TemplateElement.prototype.constructor = TemplateElement;\n\n TemplateElement.prototype.initialise = function initialise() {\n this.program.indentExclusionElements.push(this);\n };\n\n return TemplateElement;\n}(Node);\n\nvar TemplateLiteral =\n/*@__PURE__*/\nfunction (Node$$1) {\n function TemplateLiteral() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) TemplateLiteral.__proto__ = Node$$1;\n TemplateLiteral.prototype = Object.create(Node$$1 && Node$$1.prototype);\n TemplateLiteral.prototype.constructor = TemplateLiteral;\n\n TemplateLiteral.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.templateString && this.parent.type !== 'TaggedTemplateExpression') {\n var ordered = this.expressions.concat(this.quasis).sort(function (a, b) {\n return a.start - b.start || a.end - b.end;\n }).filter(function (node, i) {\n // include all expressions\n if (node.type !== 'TemplateElement') {\n return true;\n } // include all non-empty strings\n\n\n if (node.value.raw) {\n return true;\n } // exclude all empty strings not at the head\n\n\n return !i;\n }); // special case – we may be able to skip the first element,\n // if it's the empty string, but only if the second and\n // third elements aren't both expressions (since they maybe\n // be numeric, and `1 + 2 + '3' === '33'`)\n\n if (ordered.length >= 3) {\n var first = ordered[0];\n var third = ordered[2];\n\n if (first.type === 'TemplateElement' && first.value.raw === '' && third.type === 'TemplateElement') {\n ordered.shift();\n }\n }\n\n var parenthesise = (this.quasis.length !== 1 || this.expressions.length !== 0) && this.parent.type !== 'TemplateLiteral' && this.parent.type !== 'AssignmentExpression' && this.parent.type !== 'AssignmentPattern' && this.parent.type !== 'VariableDeclarator' && (this.parent.type !== 'BinaryExpression' || this.parent.operator !== '+');\n\n if (parenthesise) {\n code.appendRight(this.start, '(');\n }\n\n var lastIndex = this.start;\n ordered.forEach(function (node, i) {\n var prefix = i === 0 ? parenthesise ? '(' : '' : ' + ';\n\n if (node.type === 'TemplateElement') {\n code.overwrite(lastIndex, node.end, prefix + JSON.stringify(node.value.cooked));\n } else {\n var parenthesise$1 = node.type !== 'Identifier'; // TODO other cases where it's safe\n\n if (parenthesise$1) {\n prefix += '(';\n }\n\n code.remove(lastIndex, node.start);\n\n if (prefix) {\n code.prependRight(node.start, prefix);\n }\n\n if (parenthesise$1) {\n code.appendLeft(node.end, ')');\n }\n }\n\n lastIndex = node.end;\n });\n\n if (parenthesise) {\n code.appendLeft(lastIndex, ')');\n }\n\n code.overwrite(lastIndex, this.end, \"\", {\n contentOnly: true\n });\n }\n };\n\n return TemplateLiteral;\n}(Node);\n\nvar ThisExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ThisExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ThisExpression.__proto__ = Node$$1;\n ThisExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ThisExpression.prototype.constructor = ThisExpression;\n\n ThisExpression.prototype.initialise = function initialise(transforms) {\n var lexicalBoundary = this.findLexicalBoundary();\n\n if (transforms.letConst) {\n // save all loops up to the lexical boundary in case we need\n // to alias them later for block-scoped declarations\n var node = this.findNearest(loopStatement);\n\n while (node && node.depth > lexicalBoundary.depth) {\n node.thisRefs.push(this);\n node = node.parent.findNearest(loopStatement);\n }\n }\n\n if (transforms.arrow) {\n var arrowFunction = this.findNearest('ArrowFunctionExpression');\n\n if (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n this.alias = lexicalBoundary.getThisAlias();\n }\n }\n };\n\n ThisExpression.prototype.transpile = function transpile(code) {\n if (this.alias) {\n code.overwrite(this.start, this.end, this.alias, {\n storeName: true,\n contentOnly: true\n });\n }\n };\n\n return ThisExpression;\n}(Node);\n\nvar UpdateExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function UpdateExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) UpdateExpression.__proto__ = Node$$1;\n UpdateExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n UpdateExpression.prototype.constructor = UpdateExpression;\n\n UpdateExpression.prototype.initialise = function initialise(transforms) {\n if (this.argument.type === 'Identifier') {\n var declaration = this.findScope(false).findDeclaration(this.argument.name); // special case – https://gitlab.com/Rich-Harris/buble/issues/150\n\n var statement = declaration && declaration.node.ancestor(3);\n\n if (statement && statement.type === 'ForStatement' && statement.body.contains(this)) {\n statement.reassigned[this.argument.name] = true;\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n UpdateExpression.prototype.transpile = function transpile(code, transforms) {\n if (this.argument.type === 'Identifier') {\n // Do this check after everything has been initialized to find\n // shadowing declarations after this expression\n checkConst(this.argument, this.findScope(false));\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return UpdateExpression;\n}(Node);\n\nvar VariableDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function VariableDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) VariableDeclaration.__proto__ = Node$$1;\n VariableDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n VariableDeclaration.prototype.constructor = VariableDeclaration;\n\n VariableDeclaration.prototype.initialise = function initialise(transforms) {\n this.scope = this.findScope(this.kind === 'var');\n this.declarations.forEach(function (declarator) {\n return declarator.initialise(transforms);\n });\n };\n\n VariableDeclaration.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var i0 = this.getIndentation();\n var kind = this.kind;\n\n if (transforms.letConst && kind !== 'var') {\n kind = 'var';\n code.overwrite(this.start, this.start + this.kind.length, kind, {\n contentOnly: true,\n storeName: true\n });\n }\n\n if (transforms.destructuring && this.parent.type !== 'ForOfStatement' && this.parent.type !== 'ForInStatement') {\n var c = this.start;\n var lastDeclaratorIsPattern;\n this.declarations.forEach(function (declarator, i) {\n declarator.transpile(code, transforms);\n\n if (declarator.id.type === 'Identifier') {\n if (i > 0 && this$1.declarations[i - 1].id.type !== 'Identifier') {\n code.overwrite(c, declarator.id.start, \"var \");\n }\n } else {\n var inline = loopStatement.test(this$1.parent.type);\n\n if (i === 0) {\n code.remove(c, declarator.id.start);\n } else {\n code.overwrite(c, declarator.id.start, \";\\n\" + i0);\n }\n\n var simple = declarator.init.type === 'Identifier' && !declarator.init.rewritten;\n var name = simple ? declarator.init.alias || declarator.init.name : declarator.findScope(true).createIdentifier('ref');\n c = declarator.start;\n var statementGenerators = [];\n\n if (simple) {\n code.remove(declarator.id.end, declarator.end);\n } else {\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(declarator.id.end, \"var \" + name);\n code.appendLeft(declarator.init.end, \"\" + suffix);\n code.move(declarator.id.end, declarator.end, start);\n });\n }\n\n var scope = declarator.findScope(false);\n destructure(code, function (id) {\n return scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return scope.resolveName(name);\n }, declarator.id, name, inline, statementGenerators);\n var prefix = inline ? 'var ' : '';\n var suffix = inline ? \", \" : \";\\n\" + i0;\n statementGenerators.forEach(function (fn, j) {\n if (i === this$1.declarations.length - 1 && j === statementGenerators.length - 1) {\n suffix = inline ? '' : ';';\n }\n\n fn(declarator.start, j === 0 ? prefix : '', suffix);\n });\n }\n\n c = declarator.end;\n lastDeclaratorIsPattern = declarator.id.type !== 'Identifier';\n });\n\n if (lastDeclaratorIsPattern && this.end > c) {\n code.overwrite(c, this.end, '', {\n contentOnly: true\n });\n }\n } else {\n this.declarations.forEach(function (declarator) {\n declarator.transpile(code, transforms);\n });\n }\n };\n\n return VariableDeclaration;\n}(Node);\n\nvar VariableDeclarator =\n/*@__PURE__*/\nfunction (Node$$1) {\n function VariableDeclarator() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) VariableDeclarator.__proto__ = Node$$1;\n VariableDeclarator.prototype = Object.create(Node$$1 && Node$$1.prototype);\n VariableDeclarator.prototype.constructor = VariableDeclarator;\n\n VariableDeclarator.prototype.initialise = function initialise(transforms) {\n var kind = this.parent.kind;\n\n if (kind === 'let' && this.parent.parent.type === 'ForStatement') {\n kind = 'for.let'; // special case...\n }\n\n this.parent.scope.addDeclaration(this.id, kind);\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n VariableDeclarator.prototype.transpile = function transpile(code, transforms) {\n if (!this.init && transforms.letConst && this.parent.kind !== 'var') {\n var inLoop = this.findNearest(/Function|^For(In|Of)?Statement|^(?:Do)?WhileStatement/);\n\n if (inLoop && !/Function/.test(inLoop.type) && !this.isLeftDeclaratorOfLoop()) {\n code.appendLeft(this.id.end, ' = (void 0)');\n }\n }\n\n if (this.id) {\n this.id.transpile(code, transforms);\n }\n\n if (this.init) {\n this.init.transpile(code, transforms);\n }\n };\n\n VariableDeclarator.prototype.isLeftDeclaratorOfLoop = function isLeftDeclaratorOfLoop() {\n return this.parent && this.parent.type === 'VariableDeclaration' && this.parent.parent && (this.parent.parent.type === 'ForInStatement' || this.parent.parent.type === 'ForOfStatement') && this.parent.parent.left && this.parent.parent.left.declarations[0] === this;\n };\n\n return VariableDeclarator;\n}(Node);\n\nvar types = {\n ArrayExpression: ArrayExpression,\n ArrowFunctionExpression: ArrowFunctionExpression,\n AssignmentExpression: AssignmentExpression,\n AwaitExpression: AwaitExpression,\n BinaryExpression: BinaryExpression,\n BreakStatement: BreakStatement,\n CallExpression: CallExpression,\n ClassBody: ClassBody,\n ClassDeclaration: ClassDeclaration,\n ClassExpression: ClassExpression,\n ContinueStatement: ContinueStatement,\n DoWhileStatement: LoopStatement,\n ExportNamedDeclaration: ExportNamedDeclaration,\n ExportDefaultDeclaration: ExportDefaultDeclaration,\n ForStatement: ForStatement,\n ForInStatement: ForInStatement,\n ForOfStatement: ForOfStatement,\n FunctionDeclaration: FunctionDeclaration,\n FunctionExpression: FunctionExpression,\n Identifier: Identifier,\n IfStatement: IfStatement,\n Import: Import,\n ImportDeclaration: ImportDeclaration,\n ImportDefaultSpecifier: ImportDefaultSpecifier,\n ImportSpecifier: ImportSpecifier,\n JSXAttribute: JSXAttribute,\n JSXClosingElement: JSXClosingElement,\n JSXClosingFragment: JSXClosingFragment,\n JSXElement: JSXElement,\n JSXExpressionContainer: JSXExpressionContainer,\n JSXFragment: JSXFragment,\n JSXOpeningElement: JSXOpeningElement,\n JSXOpeningFragment: JSXOpeningFragment,\n JSXSpreadAttribute: JSXSpreadAttribute,\n Literal: Literal,\n MemberExpression: MemberExpression,\n NewExpression: NewExpression,\n ObjectExpression: ObjectExpression,\n Property: Property,\n ReturnStatement: ReturnStatement,\n Super: Super,\n TaggedTemplateExpression: TaggedTemplateExpression,\n TemplateElement: TemplateElement,\n TemplateLiteral: TemplateLiteral,\n ThisExpression: ThisExpression,\n UpdateExpression: UpdateExpression,\n VariableDeclaration: VariableDeclaration,\n VariableDeclarator: VariableDeclarator,\n WhileStatement: LoopStatement\n};\nvar keys = {\n Program: ['body'],\n Literal: []\n};\nvar statementsWithBlocks = {\n IfStatement: 'consequent',\n ForStatement: 'body',\n ForInStatement: 'body',\n ForOfStatement: 'body',\n WhileStatement: 'body',\n DoWhileStatement: 'body',\n ArrowFunctionExpression: 'body'\n};\n\nfunction wrap(raw, parent) {\n if (!raw) {\n return;\n }\n\n if ('length' in raw) {\n var i = raw.length;\n\n while (i--) {\n wrap(raw[i], parent);\n }\n\n return;\n } // with e.g. shorthand properties, key and value are\n // the same node. We don't want to wrap an object twice\n\n\n if (raw.__wrapped) {\n return;\n }\n\n raw.__wrapped = true;\n\n if (!keys[raw.type]) {\n keys[raw.type] = Object.keys(raw).filter(function (key) {\n return typeof raw[key] === 'object';\n });\n } // special case – body-less if/for/while statements. TODO others?\n\n\n var bodyType = statementsWithBlocks[raw.type];\n\n if (bodyType && raw[bodyType].type !== 'BlockStatement') {\n var expression = raw[bodyType]; // create a synthetic block statement, otherwise all hell\n // breaks loose when it comes to block scoping\n\n raw[bodyType] = {\n start: expression.start,\n end: expression.end,\n type: 'BlockStatement',\n body: [expression],\n synthetic: true\n };\n }\n\n raw.parent = parent;\n raw.program = parent.program || parent;\n raw.depth = parent.depth + 1;\n raw.keys = keys[raw.type];\n raw.indentation = undefined;\n\n for (var i$1 = 0, list = keys[raw.type]; i$1 < list.length; i$1 += 1) {\n var key = list[i$1];\n wrap(raw[key], raw);\n }\n\n raw.program.magicString.addSourcemapLocation(raw.start);\n raw.program.magicString.addSourcemapLocation(raw.end);\n var type = (raw.type === 'BlockStatement' ? BlockStatement : types[raw.type]) || Node;\n raw.__proto__ = type.prototype;\n}\n\nfunction Program(source, ast, transforms, options) {\n this.type = 'Root'; // options\n\n this.jsx = options.jsx || 'React.createElement';\n this.options = options;\n this.source = source;\n this.magicString = new magic_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"](source);\n this.ast = ast;\n this.depth = 0;\n wrap(this.body = ast, this);\n this.body.__proto__ = BlockStatement.prototype;\n this.templateLiteralQuasis = Object.create(null);\n\n for (var i = 0; i < this.body.body.length; ++i) {\n if (!this.body.body[i].directive) {\n this.prependAt = this.body.body[i].start;\n break;\n }\n }\n\n this.objectWithoutPropertiesHelper = null;\n this.indentExclusionElements = [];\n this.body.initialise(transforms);\n this.indentExclusions = Object.create(null);\n\n for (var i$2 = 0, list = this.indentExclusionElements; i$2 < list.length; i$2 += 1) {\n var node = list[i$2];\n\n for (var i$1 = node.start; i$1 < node.end; i$1 += 1) {\n this.indentExclusions[i$1] = true;\n }\n }\n\n this.body.transpile(this.magicString, transforms);\n}\n\nProgram.prototype = {\n export: function export$1(options) {\n if (options === void 0) options = {};\n return {\n code: this.magicString.toString(),\n map: this.magicString.generateMap({\n file: options.file,\n source: options.source,\n includeContent: options.includeContent !== false\n })\n };\n },\n findNearest: function findNearest() {\n return null;\n },\n findScope: function findScope() {\n return null;\n },\n getObjectWithoutPropertiesHelper: function getObjectWithoutPropertiesHelper(code) {\n if (!this.objectWithoutPropertiesHelper) {\n this.objectWithoutPropertiesHelper = this.body.scope.createIdentifier('objectWithoutProperties');\n code.prependLeft(this.prependAt, \"function \" + this.objectWithoutPropertiesHelper + \" (obj, exclude) { \" + \"var target = {}; for (var k in obj) \" + \"if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) \" + \"target[k] = obj[k]; return target; }\\n\");\n }\n\n return this.objectWithoutPropertiesHelper;\n }\n};\nvar matrix = {\n chrome: {\n 48: 610719,\n 49: 652287,\n 50: 783359,\n 51: 783359,\n 52: 1045503,\n 53: 1045503,\n 54: 1045503,\n 55: 3142655,\n 56: 3142655,\n 57: 3142655,\n 58: 4191231,\n 59: 4191231,\n 60: 8385535,\n 61: 8385535,\n 62: 8385535,\n 63: 8385535,\n 64: 8385535,\n 65: 8385535,\n 66: 8385535,\n 67: 8385535,\n 68: 8385535,\n 69: 8385535,\n 70: 8385535,\n 71: 8385535\n },\n firefox: {\n 43: 643515,\n 44: 643515,\n 45: 643519,\n 46: 774591,\n 47: 774655,\n 48: 774655,\n 49: 774655,\n 50: 774655,\n 51: 775167,\n 52: 4191231,\n 53: 4191231,\n 54: 4191231,\n 55: 8385535,\n 56: 8385535,\n 57: 8385535,\n 58: 8385535,\n 59: 8385535,\n 60: 8385535,\n 61: 8385535,\n 62: 8385535,\n 63: 8385535,\n 64: 8385535\n },\n safari: {\n 8: 524297,\n 9: 594141,\n 10: 1831935,\n '10.1': 4191231,\n 11: 4191231,\n '11.1': 8385535,\n 12: 8385535\n },\n ie: {\n 8: 0,\n 9: 524289,\n 10: 524289,\n 11: 524289 // no let/const in for loops\n\n },\n edge: {\n 12: 610459,\n 13: 774559,\n 14: 2085887,\n 15: 4183039,\n 16: 4183039,\n 17: 4183039,\n 18: 4183039,\n 19: 4183039\n },\n node: {\n '0.10': 524289,\n '0.12': 524417,\n 4: 594335,\n 5: 594335,\n 6: 783359,\n 8: 4191231,\n '8.3': 8385535,\n '8.7': 8385535,\n '8.10': 8385535\n }\n};\nvar features = ['getterSetter', 'arrow', 'classes', 'computedProperty', 'conciseMethodProperty', 'defaultParameter', 'destructuring', 'forOf', 'generator', 'letConst', 'moduleExport', 'moduleImport', 'numericLiteral', 'parameterDestructuring', 'spreadRest', 'stickyRegExp', 'templateString', 'unicodeRegExp', // ES2016\n'exponentiation', // additional transforms, not from\n// https://featuretests.io\n'reservedProperties', 'trailingFunctionCommas', 'asyncAwait', 'objectRestSpread'];\nvar version = \"0.19.7\";\nvar parser = acorn__WEBPACK_IMPORTED_MODULE_2__[\"Parser\"].extend(acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4___default.a, acorn_jsx__WEBPACK_IMPORTED_MODULE_3___default()());\nvar dangerousTransforms = ['dangerousTaggedTemplateString', 'dangerousForOf'];\n\nfunction target(target) {\n var targets = Object.keys(target);\n var bitmask = targets.length ? 8388607 : 524289;\n Object.keys(target).forEach(function (environment) {\n var versions = matrix[environment];\n\n if (!versions) {\n throw new Error(\"Unknown environment '\" + environment + \"'. Please raise an issue at https://github.com/bublejs/buble/issues\");\n }\n\n var targetVersion = target[environment];\n\n if (!(targetVersion in versions)) {\n throw new Error(\"Support data exists for the following versions of \" + environment + \": \" + Object.keys(versions).join(', ') + \". Please raise an issue at https://github.com/bublejs/buble/issues\");\n }\n\n var support = versions[targetVersion];\n bitmask &= support;\n });\n var transforms = Object.create(null);\n features.forEach(function (name, i) {\n transforms[name] = !(bitmask & 1 << i);\n });\n dangerousTransforms.forEach(function (name) {\n transforms[name] = false;\n });\n return transforms;\n}\n\nfunction transform(source, options) {\n if (options === void 0) options = {};\n var ast;\n var jsx = null;\n\n try {\n ast = parser.parse(source, {\n ecmaVersion: 10,\n preserveParens: true,\n sourceType: 'module',\n allowAwaitOutsideFunction: true,\n allowReturnOutsideFunction: true,\n onComment: function onComment(block, text) {\n if (!jsx) {\n var match = /@jsx\\s+([^\\s]+)/.exec(text);\n\n if (match) {\n jsx = match[1];\n }\n }\n }\n });\n options.jsx = jsx || options.jsx;\n } catch (err) {\n err.snippet = getSnippet(source, err.loc);\n\n err.toString = function () {\n return err.name + \": \" + err.message + \"\\n\" + err.snippet;\n };\n\n throw err;\n }\n\n var transforms = target(options.target || {});\n Object.keys(options.transforms || {}).forEach(function (name) {\n if (name === 'modules') {\n if (!('moduleImport' in options.transforms)) {\n transforms.moduleImport = options.transforms.modules;\n }\n\n if (!('moduleExport' in options.transforms)) {\n transforms.moduleExport = options.transforms.modules;\n }\n\n return;\n }\n\n if (!(name in transforms)) {\n throw new Error(\"Unknown transform '\" + name + \"'\");\n }\n\n transforms[name] = options.transforms[name];\n });\n\n if (options.objectAssign === true) {\n options.objectAssign = 'Object.assign';\n }\n\n return new Program(source, ast, transforms, options).export(options);\n}\n\n\n\n//# sourceURL=webpack:///./node_modules/buble/dist/buble-browser.es.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"target\", function() { return target; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"transform\", function() { return transform; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VERSION\", function() { return version; });\n/* harmony import */ var regexpu_core__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! regexpu-core */ \"./node_modules/regexpu-core/rewrite-pattern.js\");\n/* harmony import */ var regexpu_core__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(regexpu_core__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var magic_string__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! magic-string */ \"./node_modules/magic-string/dist/magic-string.es.js\");\n/* harmony import */ var acorn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! acorn */ \"./node_modules/acorn/dist/acorn.mjs\");\n/* harmony import */ var acorn_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! acorn-jsx */ \"./node_modules/acorn-jsx/index.js\");\n/* harmony import */ var acorn_jsx__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(acorn_jsx__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! acorn-dynamic-import */ \"./node_modules/acorn-dynamic-import/lib/index.js\");\n/* harmony import */ var acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n // used for debugging, without the noise created by\n// circular references\n\nfunction toJSON(node) {\n var obj = {};\n Object.keys(node).forEach(function (key) {\n if (key === 'parent' || key === 'program' || key === 'keys' || key === '__wrapped') {\n return;\n }\n\n if (Array.isArray(node[key])) {\n obj[key] = node[key].map(toJSON);\n } else if (node[key] && node[key].toJSON) {\n obj[key] = node[key].toJSON();\n } else {\n obj[key] = node[key];\n }\n });\n return obj;\n}\n\nvar Node = function Node() {};\n\nNode.prototype.ancestor = function ancestor(level) {\n var node = this;\n\n while (level--) {\n node = node.parent;\n\n if (!node) {\n return null;\n }\n }\n\n return node;\n};\n\nNode.prototype.contains = function contains(node) {\n while (node) {\n if (node === this) {\n return true;\n }\n\n node = node.parent;\n }\n\n return false;\n};\n\nNode.prototype.findLexicalBoundary = function findLexicalBoundary() {\n return this.parent.findLexicalBoundary();\n};\n\nNode.prototype.findNearest = function findNearest(type) {\n if (typeof type === 'string') {\n type = new RegExp(\"^\" + type + \"$\");\n }\n\n if (type.test(this.type)) {\n return this;\n }\n\n return this.parent.findNearest(type);\n};\n\nNode.prototype.unparenthesizedParent = function unparenthesizedParent() {\n var node = this.parent;\n\n while (node && node.type === 'ParenthesizedExpression') {\n node = node.parent;\n }\n\n return node;\n};\n\nNode.prototype.unparenthesize = function unparenthesize() {\n var node = this;\n\n while (node.type === 'ParenthesizedExpression') {\n node = node.expression;\n }\n\n return node;\n};\n\nNode.prototype.findScope = function findScope(functionScope) {\n return this.parent.findScope(functionScope);\n};\n\nNode.prototype.getIndentation = function getIndentation() {\n return this.parent.getIndentation();\n};\n\nNode.prototype.initialise = function initialise(transforms) {\n for (var i = 0, list = this.keys; i < list.length; i += 1) {\n var key = list[i];\n var value = this[key];\n\n if (Array.isArray(value)) {\n value.forEach(function (node) {\n return node && node.initialise(transforms);\n });\n } else if (value && typeof value === 'object') {\n value.initialise(transforms);\n }\n }\n};\n\nNode.prototype.toJSON = function toJSON$1() {\n return toJSON(this);\n};\n\nNode.prototype.toString = function toString() {\n return this.program.magicString.original.slice(this.start, this.end);\n};\n\nNode.prototype.transpile = function transpile(code, transforms) {\n for (var i = 0, list = this.keys; i < list.length; i += 1) {\n var key = list[i];\n var value = this[key];\n\n if (Array.isArray(value)) {\n value.forEach(function (node) {\n return node && node.transpile(code, transforms);\n });\n } else if (value && typeof value === 'object') {\n value.transpile(code, transforms);\n }\n }\n};\n\nfunction extractNames(node) {\n var names = [];\n extractors[node.type](names, node);\n return names;\n}\n\nvar extractors = {\n Identifier: function Identifier(names, node) {\n names.push(node);\n },\n ObjectPattern: function ObjectPattern(names, node) {\n for (var i = 0, list = node.properties; i < list.length; i += 1) {\n var prop = list[i];\n extractors[prop.type](names, prop);\n }\n },\n Property: function Property(names, node) {\n extractors[node.value.type](names, node.value);\n },\n ArrayPattern: function ArrayPattern(names, node) {\n for (var i = 0, list = node.elements; i < list.length; i += 1) {\n var element = list[i];\n\n if (element) {\n extractors[element.type](names, element);\n }\n }\n },\n RestElement: function RestElement(names, node) {\n extractors[node.argument.type](names, node.argument);\n },\n AssignmentPattern: function AssignmentPattern(names, node) {\n extractors[node.left.type](names, node.left);\n }\n};\nvar reserved = Object.create(null);\n'do if in for let new try var case else enum eval null this true void with await break catch class const false super throw while yield delete export import public return static switch typeof default extends finally package private continue debugger function arguments interface protected implements instanceof'.split(' ').forEach(function (word) {\n return reserved[word] = true;\n});\n\nfunction Scope(options) {\n options = options || {};\n this.parent = options.parent;\n this.isBlockScope = !!options.block;\n this.createDeclarationCallback = options.declare;\n var scope = this;\n\n while (scope.isBlockScope) {\n scope = scope.parent;\n }\n\n this.functionScope = scope;\n this.identifiers = [];\n this.declarations = Object.create(null);\n this.references = Object.create(null);\n this.blockScopedDeclarations = this.isBlockScope ? null : Object.create(null);\n this.aliases = Object.create(null);\n}\n\nScope.prototype = {\n addDeclaration: function addDeclaration(node, kind) {\n for (var i = 0, list = extractNames(node); i < list.length; i += 1) {\n var identifier = list[i];\n var name = identifier.name;\n var declaration = {\n name: name,\n node: identifier,\n kind: kind,\n instances: []\n };\n this.declarations[name] = declaration;\n\n if (this.isBlockScope) {\n if (!this.functionScope.blockScopedDeclarations[name]) {\n this.functionScope.blockScopedDeclarations[name] = [];\n }\n\n this.functionScope.blockScopedDeclarations[name].push(declaration);\n }\n }\n },\n addReference: function addReference(identifier) {\n if (this.consolidated) {\n this.consolidateReference(identifier);\n } else {\n this.identifiers.push(identifier);\n }\n },\n consolidate: function consolidate() {\n for (var i = 0; i < this.identifiers.length; i += 1) {\n // we might push to the array during consolidation, so don't cache length\n var identifier = this.identifiers[i];\n this.consolidateReference(identifier);\n }\n\n this.consolidated = true; // TODO understand why this is necessary... seems bad\n },\n consolidateReference: function consolidateReference(identifier) {\n var declaration = this.declarations[identifier.name];\n\n if (declaration) {\n declaration.instances.push(identifier);\n } else {\n this.references[identifier.name] = true;\n\n if (this.parent) {\n this.parent.addReference(identifier);\n }\n }\n },\n contains: function contains(name) {\n return this.declarations[name] || (this.parent ? this.parent.contains(name) : false);\n },\n createIdentifier: function createIdentifier(base) {\n if (typeof base === 'number') {\n base = base.toString();\n }\n\n base = base.replace(/\\s/g, '').replace(/\\[([^\\]]+)\\]/g, '_$1').replace(/[^a-zA-Z0-9_$]/g, '_').replace(/_{2,}/, '_');\n var name = base;\n var counter = 1;\n\n while (this.declarations[name] || this.references[name] || this.aliases[name] || name in reserved) {\n name = base + \"$\" + counter++;\n }\n\n this.aliases[name] = true;\n return name;\n },\n createDeclaration: function createDeclaration(base) {\n var id = this.createIdentifier(base);\n this.createDeclarationCallback(id);\n return id;\n },\n findDeclaration: function findDeclaration(name) {\n return this.declarations[name] || this.parent && this.parent.findDeclaration(name);\n },\n // Sometimes, block scope declarations change name during transpilation\n resolveName: function resolveName(name) {\n var declaration = this.findDeclaration(name);\n return declaration ? declaration.name : name;\n }\n};\n\nfunction locate(source, index) {\n var lines = source.split('\\n');\n var len = lines.length;\n var lineStart = 0;\n var i;\n\n for (i = 0; i < len; i += 1) {\n var line = lines[i];\n var lineEnd = lineStart + line.length + 1; // +1 for newline\n\n if (lineEnd > index) {\n return {\n line: i + 1,\n column: index - lineStart,\n char: i\n };\n }\n\n lineStart = lineEnd;\n }\n\n throw new Error('Could not determine location of character');\n}\n\nfunction pad(num, len) {\n var result = String(num);\n return result + repeat(' ', len - result.length);\n}\n\nfunction repeat(str, times) {\n var result = '';\n\n while (times--) {\n result += str;\n }\n\n return result;\n}\n\nfunction getSnippet(source, loc, length) {\n if (length === void 0) length = 1;\n var first = Math.max(loc.line - 5, 0);\n var last = loc.line;\n var numDigits = String(last).length;\n var lines = source.split('\\n').slice(first, last);\n var lastLine = lines[lines.length - 1];\n var offset = lastLine.slice(0, loc.column).replace(/\\t/g, ' ').length;\n var snippet = lines.map(function (line, i) {\n return pad(i + first + 1, numDigits) + \" : \" + line.replace(/\\t/g, ' ');\n }).join('\\n');\n snippet += '\\n' + repeat(' ', numDigits + 3 + offset) + repeat('^', length);\n return snippet;\n}\n\nvar CompileError =\n/*@__PURE__*/\nfunction (Error) {\n function CompileError(message, node) {\n Error.call(this, message);\n this.name = 'CompileError';\n\n if (!node) {\n return;\n }\n\n var source = node.program.magicString.original;\n var loc = locate(source, node.start);\n this.message = message + \" (\" + loc.line + \":\" + loc.column + \")\";\n this.stack = new Error().stack.replace(new RegExp(\".+new \" + this.name + \".+\\\\n\", 'm'), '');\n this.loc = loc;\n this.snippet = getSnippet(source, loc, node.end - node.start);\n }\n\n if (Error) CompileError.__proto__ = Error;\n CompileError.prototype = Object.create(Error && Error.prototype);\n CompileError.prototype.constructor = CompileError;\n\n CompileError.prototype.toString = function toString() {\n return this.name + \": \" + this.message + \"\\n\" + this.snippet;\n };\n\n CompileError.missingTransform = function missingTransform(feature, transformKey, node, dangerousKey) {\n if (dangerousKey === void 0) dangerousKey = null;\n var maybeDangerous = dangerousKey ? \", or `transforms: { \" + dangerousKey + \": true }` if you know what you're doing\" : '';\n throw new CompileError(\"Transforming \" + feature + \" is not \" + (dangerousKey ? \"fully supported\" : \"implemented\") + \". Use `transforms: { \" + transformKey + \": false }` to skip transformation and disable this error\" + maybeDangerous + \".\", node);\n };\n\n return CompileError;\n}(Error);\n\nfunction findIndex(array, fn) {\n for (var i = 0; i < array.length; i += 1) {\n if (fn(array[i], i)) {\n return i;\n }\n }\n\n return -1;\n}\n\nvar handlers = {\n Identifier: destructureIdentifier,\n AssignmentPattern: destructureAssignmentPattern,\n ArrayPattern: destructureArrayPattern,\n ObjectPattern: destructureObjectPattern\n};\n\nfunction destructure(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n handlers[node.type](code, createIdentifier, resolveName, node, ref, inline, statementGenerators);\n}\n\nfunction destructureIdentifier(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n statementGenerators.push(function (start, prefix, suffix) {\n code.overwrite(node.start, node.end, (inline ? prefix : prefix + \"var \") + resolveName(node) + \" = \" + ref + suffix);\n code.move(node.start, node.end, start);\n });\n}\n\nfunction destructureMemberExpression(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(node.start, inline ? prefix : prefix + \"var \");\n code.appendLeft(node.end, \" = \" + ref + suffix);\n code.move(node.start, node.end, start);\n });\n}\n\nfunction destructureAssignmentPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n var isIdentifier = node.left.type === 'Identifier';\n var name = isIdentifier ? node.left.name : ref;\n\n if (!inline) {\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(node.left.end, prefix + \"if ( \" + name + \" === void 0 ) \" + name);\n code.move(node.left.end, node.right.end, start);\n code.appendLeft(node.right.end, suffix);\n });\n }\n\n if (!isIdentifier) {\n destructure(code, createIdentifier, resolveName, node.left, ref, inline, statementGenerators);\n }\n}\n\nfunction destructureArrayPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n var c = node.start;\n node.elements.forEach(function (element, i) {\n if (!element) {\n return;\n }\n\n if (element.type === 'RestElement') {\n handleProperty(code, createIdentifier, resolveName, c, element.argument, ref + \".slice(\" + i + \")\", inline, statementGenerators);\n } else {\n handleProperty(code, createIdentifier, resolveName, c, element, ref + \"[\" + i + \"]\", inline, statementGenerators);\n }\n\n c = element.end;\n });\n code.remove(c, node.end);\n}\n\nfunction destructureObjectPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators) {\n var this$1 = this;\n var c = node.start;\n var nonRestKeys = [];\n node.properties.forEach(function (prop) {\n var value;\n var content;\n\n if (prop.type === 'Property') {\n content = prop.value;\n\n if (!prop.computed && prop.key.type === 'Identifier') {\n value = ref + \".\" + prop.key.name;\n nonRestKeys.push(\"\\\"\" + prop.key.name + \"\\\"\");\n } else if (!prop.computed && prop.key.type === 'Literal') {\n value = ref + \"[\" + prop.key.raw + \"]\";\n nonRestKeys.push(JSON.stringify(String(prop.key.value)));\n } else {\n var expr = code.slice(prop.key.start, prop.key.end);\n value = ref + \"[\" + expr + \"]\";\n nonRestKeys.push(\"String(\" + expr + \")\");\n }\n } else if (prop.type === 'RestElement') {\n content = prop.argument;\n value = createIdentifier('rest');\n statementGenerators.push(function (start, prefix, suffix) {\n var helper = prop.program.getObjectWithoutPropertiesHelper(code);\n code.overwrite(prop.start, c = prop.argument.start, (inline ? prefix : prefix + \"var \") + value + \" = \" + helper + \"( \" + ref + \", [\" + nonRestKeys.join(', ') + \"] )\" + suffix);\n code.move(prop.start, c, start);\n });\n } else {\n throw new CompileError(this$1, \"Unexpected node of type \" + prop.type + \" in object pattern\");\n }\n\n handleProperty(code, createIdentifier, resolveName, c, content, value, inline, statementGenerators);\n c = prop.end;\n });\n code.remove(c, node.end);\n}\n\nfunction handleProperty(code, createIdentifier, resolveName, c, node, value, inline, statementGenerators) {\n switch (node.type) {\n case 'Identifier':\n {\n code.remove(c, node.start);\n destructureIdentifier(code, createIdentifier, resolveName, node, value, inline, statementGenerators);\n break;\n }\n\n case 'MemberExpression':\n code.remove(c, node.start);\n destructureMemberExpression(code, createIdentifier, resolveName, node, value, true, statementGenerators);\n break;\n\n case 'AssignmentPattern':\n {\n var name;\n var isIdentifier = node.left.type === 'Identifier';\n\n if (isIdentifier) {\n name = resolveName(node.left);\n } else {\n name = createIdentifier(value);\n }\n\n statementGenerators.push(function (start, prefix, suffix) {\n if (inline) {\n code.prependRight(node.right.start, name + \" = \" + value + \", \" + name + \" = \" + name + \" === void 0 ? \");\n code.appendLeft(node.right.end, \" : \" + name + suffix);\n } else {\n code.prependRight(node.right.start, prefix + \"var \" + name + \" = \" + value + \"; if ( \" + name + \" === void 0 ) \" + name + \" = \");\n code.appendLeft(node.right.end, suffix);\n }\n\n code.move(node.right.start, node.right.end, start);\n });\n\n if (isIdentifier) {\n code.remove(c, node.right.start);\n } else {\n code.remove(c, node.left.start);\n code.remove(node.left.end, node.right.start);\n handleProperty(code, createIdentifier, resolveName, c, node.left, name, inline, statementGenerators);\n }\n\n break;\n }\n\n case 'ObjectPattern':\n {\n code.remove(c, c = node.start);\n var ref = value;\n\n if (node.properties.length > 1) {\n ref = createIdentifier(value);\n statementGenerators.push(function (start, prefix, suffix) {\n // this feels a tiny bit hacky, but we can't do a\n // straightforward appendLeft and keep correct order...\n code.prependRight(node.start, (inline ? '' : prefix + \"var \") + ref + \" = \");\n code.overwrite(node.start, c = node.start + 1, value);\n code.appendLeft(c, suffix);\n code.overwrite(node.start, c = node.start + 1, (inline ? '' : prefix + \"var \") + ref + \" = \" + value + suffix);\n code.move(node.start, c, start);\n });\n }\n\n destructureObjectPattern(code, createIdentifier, resolveName, node, ref, inline, statementGenerators);\n break;\n }\n\n case 'ArrayPattern':\n {\n code.remove(c, c = node.start);\n\n if (node.elements.filter(Boolean).length > 1) {\n var ref$1 = createIdentifier(value);\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(node.start, (inline ? '' : prefix + \"var \") + ref$1 + \" = \");\n code.overwrite(node.start, c = node.start + 1, value, {\n contentOnly: true\n });\n code.appendLeft(c, suffix);\n code.move(node.start, c, start);\n });\n node.elements.forEach(function (element, i) {\n if (!element) {\n return;\n }\n\n if (element.type === 'RestElement') {\n handleProperty(code, createIdentifier, resolveName, c, element.argument, ref$1 + \".slice(\" + i + \")\", inline, statementGenerators);\n } else {\n handleProperty(code, createIdentifier, resolveName, c, element, ref$1 + \"[\" + i + \"]\", inline, statementGenerators);\n }\n\n c = element.end;\n });\n } else {\n var index = findIndex(node.elements, Boolean);\n var element = node.elements[index];\n\n if (element.type === 'RestElement') {\n handleProperty(code, createIdentifier, resolveName, c, element.argument, value + \".slice(\" + index + \")\", inline, statementGenerators);\n } else {\n handleProperty(code, createIdentifier, resolveName, c, element, value + \"[\" + index + \"]\", inline, statementGenerators);\n }\n\n c = element.end;\n }\n\n code.remove(c, node.end);\n break;\n }\n\n default:\n {\n throw new Error(\"Unexpected node type in destructuring (\" + node.type + \")\");\n }\n }\n}\n\nfunction isUseStrict(node) {\n if (!node) {\n return false;\n }\n\n if (node.type !== 'ExpressionStatement') {\n return false;\n }\n\n if (node.expression.type !== 'Literal') {\n return false;\n }\n\n return node.expression.value === 'use strict';\n}\n\nvar BlockStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function BlockStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) BlockStatement.__proto__ = Node$$1;\n BlockStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n BlockStatement.prototype.constructor = BlockStatement;\n\n BlockStatement.prototype.createScope = function createScope() {\n var this$1 = this;\n this.parentIsFunction = /Function/.test(this.parent.type);\n this.isFunctionBlock = this.parentIsFunction || this.parent.type === 'Root';\n this.scope = new Scope({\n block: !this.isFunctionBlock,\n parent: this.parent.findScope(false),\n declare: function declare(id) {\n return this$1.createdDeclarations.push(id);\n }\n });\n\n if (this.parentIsFunction) {\n this.parent.params.forEach(function (node) {\n this$1.scope.addDeclaration(node, 'param');\n });\n }\n };\n\n BlockStatement.prototype.initialise = function initialise(transforms) {\n this.thisAlias = null;\n this.argumentsAlias = null;\n this.defaultParameters = [];\n this.createdDeclarations = []; // normally the scope gets created here, during initialisation,\n // but in some cases (e.g. `for` statements), we need to create\n // the scope early, as it pertains to both the init block and\n // the body of the statement\n\n if (!this.scope) {\n this.createScope();\n }\n\n this.body.forEach(function (node) {\n return node.initialise(transforms);\n });\n this.scope.consolidate();\n };\n\n BlockStatement.prototype.findLexicalBoundary = function findLexicalBoundary() {\n if (this.type === 'Program') {\n return this;\n }\n\n if (/^Function/.test(this.parent.type)) {\n return this;\n }\n\n return this.parent.findLexicalBoundary();\n };\n\n BlockStatement.prototype.findScope = function findScope(functionScope) {\n if (functionScope && !this.isFunctionBlock) {\n return this.parent.findScope(functionScope);\n }\n\n return this.scope;\n };\n\n BlockStatement.prototype.getArgumentsAlias = function getArgumentsAlias() {\n if (!this.argumentsAlias) {\n this.argumentsAlias = this.scope.createIdentifier('arguments');\n }\n\n return this.argumentsAlias;\n };\n\n BlockStatement.prototype.getArgumentsArrayAlias = function getArgumentsArrayAlias() {\n if (!this.argumentsArrayAlias) {\n this.argumentsArrayAlias = this.scope.createIdentifier('argsArray');\n }\n\n return this.argumentsArrayAlias;\n };\n\n BlockStatement.prototype.getThisAlias = function getThisAlias() {\n if (!this.thisAlias) {\n this.thisAlias = this.scope.createIdentifier('this');\n }\n\n return this.thisAlias;\n };\n\n BlockStatement.prototype.getIndentation = function getIndentation() {\n if (this.indentation === undefined) {\n var source = this.program.magicString.original;\n var useOuter = this.synthetic || !this.body.length;\n var c = useOuter ? this.start : this.body[0].start;\n\n while (c && source[c] !== '\\n') {\n c -= 1;\n }\n\n this.indentation = ''; // eslint-disable-next-line no-constant-condition\n\n while (true) {\n c += 1;\n var _char = source[c];\n\n if (_char !== ' ' && _char !== '\\t') {\n break;\n }\n\n this.indentation += _char;\n }\n\n var indentString = this.program.magicString.getIndentString(); // account for dedented class constructors\n\n var parent = this.parent;\n\n while (parent) {\n if (parent.kind === 'constructor' && !parent.parent.parent.superClass) {\n this.indentation = this.indentation.replace(indentString, '');\n }\n\n parent = parent.parent;\n }\n\n if (useOuter) {\n this.indentation += indentString;\n }\n }\n\n return this.indentation;\n };\n\n BlockStatement.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var indentation = this.getIndentation();\n var introStatementGenerators = [];\n\n if (this.argumentsAlias) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var assignment = prefix + \"var \" + this$1.argumentsAlias + \" = arguments\" + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (this.thisAlias) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var assignment = prefix + \"var \" + this$1.thisAlias + \" = this\" + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (this.argumentsArrayAlias) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var i = this$1.scope.createIdentifier('i');\n var assignment = prefix + \"var \" + i + \" = arguments.length, \" + this$1.argumentsArrayAlias + \" = Array(\" + i + \");\\n\" + indentation + \"while ( \" + i + \"-- ) \" + this$1.argumentsArrayAlias + \"[\" + i + \"] = arguments[\" + i + \"]\" + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (/Function/.test(this.parent.type)) {\n this.transpileParameters(this.parent.params, code, transforms, indentation, introStatementGenerators);\n } else if ('CatchClause' === this.parent.type) {\n this.transpileParameters([this.parent.param], code, transforms, indentation, introStatementGenerators);\n }\n\n if (transforms.letConst && this.isFunctionBlock) {\n this.transpileBlockScopedIdentifiers(code);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (this.createdDeclarations.length) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var assignment = prefix + \"var \" + this$1.createdDeclarations.join(', ') + suffix;\n code.appendLeft(start, assignment);\n });\n }\n\n if (this.synthetic) {\n if (this.parent.type === 'ArrowFunctionExpression') {\n var expr = this.body[0];\n\n if (introStatementGenerators.length) {\n code.appendLeft(this.start, \"{\").prependRight(this.end, this.parent.getIndentation() + \"}\");\n code.prependRight(expr.start, \"\\n\" + indentation + \"return \");\n code.appendLeft(expr.end, \";\\n\");\n } else if (transforms.arrow) {\n code.prependRight(expr.start, \"{ return \");\n code.appendLeft(expr.end, \"; }\");\n }\n } else if (introStatementGenerators.length) {\n code.prependRight(this.start, \"{\").appendLeft(this.end, \"}\");\n }\n }\n\n var start;\n\n if (isUseStrict(this.body[0])) {\n start = this.body[0].end;\n } else if (this.synthetic || this.parent.type === 'Root') {\n start = this.start;\n } else {\n start = this.start + 1;\n }\n\n var prefix = \"\\n\" + indentation;\n var suffix = ';';\n introStatementGenerators.forEach(function (fn, i) {\n if (i === introStatementGenerators.length - 1) {\n suffix = \";\\n\";\n }\n\n fn(start, prefix, suffix);\n });\n };\n\n BlockStatement.prototype.transpileParameters = function transpileParameters(params, code, transforms, indentation, introStatementGenerators) {\n var this$1 = this;\n params.forEach(function (param) {\n if (param.type === 'AssignmentPattern' && param.left.type === 'Identifier') {\n if (transforms.defaultParameter) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var lhs = prefix + \"if ( \" + param.left.name + \" === void 0 ) \" + param.left.name;\n code.prependRight(param.left.end, lhs).move(param.left.end, param.right.end, start).appendLeft(param.right.end, suffix);\n });\n }\n } else if (param.type === 'RestElement') {\n if (transforms.spreadRest) {\n introStatementGenerators.push(function (start, prefix, suffix) {\n var penultimateParam = params[params.length - 2];\n\n if (penultimateParam) {\n code.remove(penultimateParam ? penultimateParam.end : param.start, param.end);\n } else {\n var start$1 = param.start,\n end = param.end; // TODO https://gitlab.com/Rich-Harris/buble/issues/8\n\n while (/\\s/.test(code.original[start$1 - 1])) {\n start$1 -= 1;\n }\n\n while (/\\s/.test(code.original[end])) {\n end += 1;\n }\n\n code.remove(start$1, end);\n }\n\n var name = param.argument.name;\n var len = this$1.scope.createIdentifier('len');\n var count = params.length - 1;\n\n if (count) {\n code.prependRight(start, prefix + \"var \" + name + \" = [], \" + len + \" = arguments.length - \" + count + \";\\n\" + indentation + \"while ( \" + len + \"-- > 0 ) \" + name + \"[ \" + len + \" ] = arguments[ \" + len + \" + \" + count + \" ]\" + suffix);\n } else {\n code.prependRight(start, prefix + \"var \" + name + \" = [], \" + len + \" = arguments.length;\\n\" + indentation + \"while ( \" + len + \"-- ) \" + name + \"[ \" + len + \" ] = arguments[ \" + len + \" ]\" + suffix);\n }\n });\n }\n } else if (param.type !== 'Identifier') {\n if (transforms.parameterDestructuring) {\n var ref = this$1.scope.createIdentifier('ref');\n destructure(code, function (id) {\n return this$1.scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return this$1.scope.resolveName(name);\n }, param, ref, false, introStatementGenerators);\n code.prependRight(param.start, ref);\n }\n }\n });\n };\n\n BlockStatement.prototype.transpileBlockScopedIdentifiers = function transpileBlockScopedIdentifiers(code) {\n var this$1 = this;\n Object.keys(this.scope.blockScopedDeclarations).forEach(function (name) {\n var declarations = this$1.scope.blockScopedDeclarations[name];\n\n for (var i$2 = 0, list$2 = declarations; i$2 < list$2.length; i$2 += 1) {\n var declaration = list$2[i$2];\n var cont = false; // TODO implement proper continue...\n\n if (declaration.kind === 'for.let') {\n // special case\n var forStatement = declaration.node.findNearest('ForStatement');\n\n if (forStatement.shouldRewriteAsFunction) {\n var outerAlias = this$1.scope.createIdentifier(name);\n var innerAlias = forStatement.reassigned[name] ? this$1.scope.createIdentifier(name) : name;\n declaration.name = outerAlias;\n code.overwrite(declaration.node.start, declaration.node.end, outerAlias, {\n storeName: true\n });\n forStatement.aliases[name] = {\n outer: outerAlias,\n inner: innerAlias\n };\n\n for (var i = 0, list = declaration.instances; i < list.length; i += 1) {\n var identifier = list[i];\n var alias = forStatement.body.contains(identifier) ? innerAlias : outerAlias;\n\n if (name !== alias) {\n code.overwrite(identifier.start, identifier.end, alias, {\n storeName: true\n });\n }\n }\n\n cont = true;\n }\n }\n\n if (!cont) {\n var alias$1 = this$1.scope.createIdentifier(name);\n\n if (name !== alias$1) {\n declaration.name = alias$1;\n code.overwrite(declaration.node.start, declaration.node.end, alias$1, {\n storeName: true\n });\n\n for (var i$1 = 0, list$1 = declaration.instances; i$1 < list$1.length; i$1 += 1) {\n var identifier$1 = list$1[i$1];\n identifier$1.rewritten = true;\n code.overwrite(identifier$1.start, identifier$1.end, alias$1, {\n storeName: true\n });\n }\n }\n }\n }\n });\n };\n\n return BlockStatement;\n}(Node);\n\nfunction isArguments(node) {\n return node.type === 'Identifier' && node.name === 'arguments';\n}\n\nfunction inlineSpreads(code, node, elements) {\n var i = elements.length;\n\n while (i--) {\n var element = elements[i];\n\n if (!element || element.type !== 'SpreadElement') {\n continue;\n }\n\n var argument = element.argument;\n\n if (argument.type !== 'ArrayExpression') {\n continue;\n }\n\n var subelements = argument.elements;\n\n if (subelements.some(function (subelement) {\n return subelement === null;\n })) {\n // Not even going to try inlining spread arrays with holes.\n // It's a lot of work (got to be VERY careful in comma counting for\n // ArrayExpression, and turn blanks into undefined for\n // CallExpression and NewExpression), and probably literally no one\n // would ever benefit from it.\n continue;\n } // We can inline it: drop the `...[` and `]` and sort out any commas.\n\n\n var isLast = i === elements.length - 1;\n\n if (subelements.length === 0) {\n code.remove(isLast && i !== 0 ? elements[i - 1].end // Take the previous comma too\n : element.start, isLast ? node.end - 1 // Must remove trailing comma; element.end wouldn’t\n : elements[i + 1].start);\n } else {\n // Strip the `...[` and the `]` with a possible trailing comma before it,\n // leaving just the possible trailing comma after it.\n code.remove(element.start, subelements[0].start);\n code.remove( // Strip a possible trailing comma after the last element\n subelements[subelements.length - 1].end, // And also a possible trailing comma after the spread\n isLast ? node.end - 1 : element.end);\n }\n\n elements.splice.apply(elements, [i, 1].concat(subelements));\n i += subelements.length;\n }\n} // Returns false if it’s safe to simply append a method call to the node,\n// e.g. `a` → `a.concat()`.\n//\n// Returns true if it may not be and so parentheses should be employed,\n// e.g. `a ? b : c` → `a ? b : c.concat()` would be wrong.\n//\n// This test may be overcautious; if desired it can be refined over time.\n\n\nfunction needsParentheses(node) {\n switch (node.type) {\n // Currently whitelisted are all relevant ES5 node types ('Literal' and\n // 'ObjectExpression' are skipped as irrelevant for array/call spread.)\n case 'ArrayExpression':\n case 'CallExpression':\n case 'Identifier':\n case 'ParenthesizedExpression':\n case 'ThisExpression':\n return false;\n\n default:\n return true;\n }\n}\n\nfunction spread(code, elements, start, argumentsArrayAlias, isNew) {\n var i = elements.length;\n var firstSpreadIndex = -1;\n\n while (i--) {\n var element$1 = elements[i];\n\n if (element$1 && element$1.type === 'SpreadElement') {\n if (isArguments(element$1.argument)) {\n code.overwrite(element$1.argument.start, element$1.argument.end, argumentsArrayAlias);\n }\n\n firstSpreadIndex = i;\n }\n }\n\n if (firstSpreadIndex === -1) {\n return false;\n } // false indicates no spread elements\n\n\n if (isNew) {\n for (i = 0; i < elements.length; i += 1) {\n var element$2 = elements[i];\n\n if (element$2.type === 'SpreadElement') {\n code.remove(element$2.start, element$2.argument.start);\n } else {\n code.prependRight(element$2.start, '[');\n code.prependRight(element$2.end, ']');\n }\n }\n\n return true; // true indicates some spread elements\n }\n\n var element = elements[firstSpreadIndex];\n var previousElement = elements[firstSpreadIndex - 1];\n\n if (!previousElement) {\n // We may need to parenthesize it to handle ternaries like [...a ? b : c].\n var addClosingParen;\n\n if (start !== element.start) {\n if (addClosingParen = needsParentheses(element.argument)) {\n code.overwrite(start, element.start, '( ');\n } else {\n code.remove(start, element.start);\n }\n } else if (element.parent.type === 'CallExpression') {\n // CallExpression inserts `( ` itself, we add the ).\n // (Yeah, CallExpression did the needsParentheses call already,\n // but we don’t have its result handy, so do it again. It’s cheap.)\n addClosingParen = needsParentheses(element.argument);\n } else {\n // Should be unreachable, but doing this is more robust.\n throw new CompileError('Unsupported spread construct, please raise an issue at https://github.com/bublejs/buble/issues', element);\n }\n\n code.overwrite(element.end, elements[1].start, addClosingParen ? ' ).concat( ' : '.concat( ');\n } else {\n code.overwrite(previousElement.end, element.start, ' ].concat( ');\n }\n\n for (i = firstSpreadIndex; i < elements.length; i += 1) {\n element = elements[i];\n\n if (element) {\n if (element.type === 'SpreadElement') {\n code.remove(element.start, element.argument.start);\n } else {\n code.appendLeft(element.start, '[');\n code.appendLeft(element.end, ']');\n }\n }\n }\n\n return true; // true indicates some spread elements\n}\n\nvar ArrayExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ArrayExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ArrayExpression.__proto__ = Node$$1;\n ArrayExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ArrayExpression.prototype.constructor = ArrayExpression;\n\n ArrayExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.spreadRest && this.elements.length) {\n var lexicalBoundary = this.findLexicalBoundary();\n var i = this.elements.length;\n\n while (i--) {\n var element = this.elements[i];\n\n if (element && element.type === 'SpreadElement' && isArguments(element.argument)) {\n this.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n }\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ArrayExpression.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.spreadRest) {\n inlineSpreads(code, this, this.elements); // erase trailing comma after last array element if not an array hole\n\n if (this.elements.length) {\n var lastElement = this.elements[this.elements.length - 1];\n\n if (lastElement && /\\s*,/.test(code.original.slice(lastElement.end, this.end))) {\n code.overwrite(lastElement.end, this.end - 1, ' ');\n }\n }\n\n if (this.elements.length === 1) {\n var element = this.elements[0];\n\n if (element && element.type === 'SpreadElement') {\n // special case – [ ...arguments ]\n if (isArguments(element.argument)) {\n code.overwrite(this.start, this.end, \"[].concat( \" + this.argumentsArrayAlias + \" )\"); // TODO if this is the only use of argsArray, don't bother concating\n } else {\n code.overwrite(this.start, element.argument.start, '[].concat( ');\n code.overwrite(element.end, this.end, ' )');\n }\n }\n } else {\n var hasSpreadElements = spread(code, this.elements, this.start, this.argumentsArrayAlias);\n\n if (hasSpreadElements) {\n code.overwrite(this.end - 1, this.end, ')');\n }\n }\n }\n };\n\n return ArrayExpression;\n}(Node);\n\nfunction removeTrailingComma(code, c) {\n while (code.original[c] !== ')') {\n if (code.original[c] === ',') {\n code.remove(c, c + 1);\n return;\n }\n\n if (code.original[c] === '/') {\n c = code.original.indexOf(code.original[c + 1] === '/' ? '\\n' : '*/', c) + 1;\n }\n\n c += 1;\n }\n}\n\nvar ArrowFunctionExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ArrowFunctionExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ArrowFunctionExpression.__proto__ = Node$$1;\n ArrowFunctionExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ArrowFunctionExpression.prototype.constructor = ArrowFunctionExpression;\n\n ArrowFunctionExpression.prototype.initialise = function initialise(transforms) {\n if (this.async && transforms.asyncAwait) {\n CompileError.missingTransform(\"async arrow functions\", \"asyncAwait\", this);\n }\n\n this.body.createScope();\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ArrowFunctionExpression.prototype.transpile = function transpile(code, transforms) {\n var openParensPos = this.start;\n\n for (var end = (this.body || this.params[0]).start - 1; code.original[openParensPos] !== '(' && openParensPos < end;) {\n ++openParensPos;\n }\n\n if (code.original[openParensPos] !== '(') {\n openParensPos = -1;\n }\n\n var naked = openParensPos === -1;\n\n if (transforms.arrow || this.needsArguments(transforms)) {\n // remove arrow\n var charIndex = this.body.start;\n\n while (code.original[charIndex] !== '=') {\n charIndex -= 1;\n }\n\n code.remove(charIndex, this.body.start);\n Node$$1.prototype.transpile.call(this, code, transforms); // wrap naked parameter\n\n if (naked) {\n code.prependRight(this.params[0].start, '(');\n code.appendLeft(this.params[0].end, ')');\n } // standalone expression statement\n\n\n var standalone = this.parent && this.parent.type === 'ExpressionStatement';\n var start,\n text = standalone ? '!' : '';\n\n if (this.async) {\n text += 'async ';\n }\n\n text += 'function';\n\n if (!standalone) {\n text += ' ';\n }\n\n if (naked) {\n start = this.params[0].start;\n } else {\n start = openParensPos;\n } // add function\n\n\n if (start > this.start) {\n code.overwrite(this.start, start, text);\n } else {\n code.prependRight(this.start, text);\n }\n } else {\n Node$$1.prototype.transpile.call(this, code, transforms);\n }\n\n if (transforms.trailingFunctionCommas && this.params.length && !naked) {\n removeTrailingComma(code, this.params[this.params.length - 1].end);\n }\n }; // Returns whether any transforms that will happen use `arguments`\n\n\n ArrowFunctionExpression.prototype.needsArguments = function needsArguments(transforms) {\n return transforms.spreadRest && this.params.filter(function (param) {\n return param.type === 'RestElement';\n }).length > 0;\n };\n\n return ArrowFunctionExpression;\n}(Node);\n\nfunction checkConst(identifier, scope) {\n var declaration = scope.findDeclaration(identifier.name);\n\n if (declaration && declaration.kind === 'const') {\n throw new CompileError(identifier.name + \" is read-only\", identifier);\n }\n}\n\nvar AssignmentExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function AssignmentExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) AssignmentExpression.__proto__ = Node$$1;\n AssignmentExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n AssignmentExpression.prototype.constructor = AssignmentExpression;\n\n AssignmentExpression.prototype.initialise = function initialise(transforms) {\n if (this.left.type === 'Identifier') {\n var declaration = this.findScope(false).findDeclaration(this.left.name); // special case – https://gitlab.com/Rich-Harris/buble/issues/11\n\n var statement = declaration && declaration.node.ancestor(3);\n\n if (statement && statement.type === 'ForStatement' && statement.body.contains(this)) {\n statement.reassigned[this.left.name] = true;\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n AssignmentExpression.prototype.transpile = function transpile(code, transforms) {\n if (this.left.type === 'Identifier') {\n // Do this check after everything has been initialized to find\n // shadowing declarations after this expression\n checkConst(this.left, this.findScope(false));\n }\n\n if (this.operator === '**=' && transforms.exponentiation) {\n this.transpileExponentiation(code, transforms);\n } else if (/Pattern/.test(this.left.type) && transforms.destructuring) {\n this.transpileDestructuring(code);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n AssignmentExpression.prototype.transpileDestructuring = function transpileDestructuring(code) {\n var this$1 = this;\n var writeScope = this.findScope(true);\n var lookupScope = this.findScope(false);\n var assign = writeScope.createDeclaration('assign');\n code.appendRight(this.left.end, \"(\" + assign);\n code.appendLeft(this.right.end, ', ');\n var statementGenerators = [];\n destructure(code, function (id) {\n return writeScope.createDeclaration(id);\n }, function (node) {\n var name = lookupScope.resolveName(node.name);\n checkConst(node, lookupScope);\n return name;\n }, this.left, assign, true, statementGenerators);\n var suffix = ', ';\n statementGenerators.forEach(function (fn, j) {\n if (j === statementGenerators.length - 1) {\n suffix = '';\n }\n\n fn(this$1.end, '', suffix);\n });\n\n if (this.unparenthesizedParent().type === 'ExpressionStatement') {\n // no rvalue needed for expression statement\n code.prependRight(this.end, \")\");\n } else {\n // destructuring is part of an expression - need an rvalue\n code.appendRight(this.end, \", \" + assign + \")\");\n }\n };\n\n AssignmentExpression.prototype.transpileExponentiation = function transpileExponentiation(code) {\n var scope = this.findScope(false); // first, the easy part – `**=` -> `=`\n\n var charIndex = this.left.end;\n\n while (code.original[charIndex] !== '*') {\n charIndex += 1;\n }\n\n code.remove(charIndex, charIndex + 2); // how we do the next part depends on a number of factors – whether\n // this is a top-level statement, and whether we're updating a\n // simple or complex reference\n\n var base;\n var left = this.left.unparenthesize();\n\n if (left.type === 'Identifier') {\n base = scope.resolveName(left.name);\n } else if (left.type === 'MemberExpression') {\n var object;\n var needsObjectVar = false;\n var property;\n var needsPropertyVar = false;\n var statement = this.findNearest(/(?:Statement|Declaration)$/);\n var i0 = statement.getIndentation();\n\n if (left.property.type === 'Identifier') {\n property = left.computed ? scope.resolveName(left.property.name) : left.property.name;\n } else {\n property = scope.createDeclaration('property');\n needsPropertyVar = true;\n }\n\n if (left.object.type === 'Identifier') {\n object = scope.resolveName(left.object.name);\n } else {\n object = scope.createDeclaration('object');\n needsObjectVar = true;\n }\n\n if (left.start === statement.start) {\n if (needsObjectVar && needsPropertyVar) {\n code.prependRight(statement.start, object + \" = \");\n code.overwrite(left.object.end, left.property.start, \";\\n\" + i0 + property + \" = \");\n code.overwrite(left.property.end, left.end, \";\\n\" + i0 + object + \"[\" + property + \"]\");\n } else if (needsObjectVar) {\n code.prependRight(statement.start, object + \" = \");\n code.appendLeft(left.object.end, \";\\n\" + i0);\n code.appendLeft(left.object.end, object);\n } else if (needsPropertyVar) {\n code.prependRight(left.property.start, property + \" = \");\n code.appendLeft(left.property.end, \";\\n\" + i0);\n code.move(left.property.start, left.property.end, this.start);\n code.appendLeft(left.object.end, \"[\" + property + \"]\");\n code.remove(left.object.end, left.property.start);\n code.remove(left.property.end, left.end);\n }\n } else {\n if (needsObjectVar && needsPropertyVar) {\n code.prependRight(left.start, \"( \" + object + \" = \");\n code.overwrite(left.object.end, left.property.start, \", \" + property + \" = \");\n code.overwrite(left.property.end, left.end, \", \" + object + \"[\" + property + \"]\");\n } else if (needsObjectVar) {\n code.prependRight(left.start, \"( \" + object + \" = \");\n code.appendLeft(left.object.end, \", \" + object);\n } else if (needsPropertyVar) {\n code.prependRight(left.property.start, \"( \" + property + \" = \");\n code.appendLeft(left.property.end, \", \");\n code.move(left.property.start, left.property.end, left.start);\n code.overwrite(left.object.end, left.property.start, \"[\" + property + \"]\");\n code.remove(left.property.end, left.end);\n }\n\n if (needsPropertyVar) {\n code.appendLeft(this.end, \" )\");\n }\n }\n\n base = object + (left.computed || needsPropertyVar ? \"[\" + property + \"]\" : \".\" + property);\n }\n\n code.prependRight(this.right.start, \"Math.pow( \" + base + \", \");\n code.appendLeft(this.right.end, \" )\");\n };\n\n return AssignmentExpression;\n}(Node);\n\nvar AwaitExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function AwaitExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) AwaitExpression.__proto__ = Node$$1;\n AwaitExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n AwaitExpression.prototype.constructor = AwaitExpression;\n\n AwaitExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.asyncAwait) {\n CompileError.missingTransform(\"await\", \"asyncAwait\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return AwaitExpression;\n}(Node);\n\nvar BinaryExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function BinaryExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) BinaryExpression.__proto__ = Node$$1;\n BinaryExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n BinaryExpression.prototype.constructor = BinaryExpression;\n\n BinaryExpression.prototype.transpile = function transpile(code, transforms) {\n if (this.operator === '**' && transforms.exponentiation) {\n code.prependRight(this.start, \"Math.pow( \");\n code.overwrite(this.left.end, this.right.start, \", \");\n code.appendLeft(this.end, \" )\");\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return BinaryExpression;\n}(Node);\n\nvar loopStatement = /(?:For(?:In|Of)?|While)Statement/;\n\nvar BreakStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function BreakStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) BreakStatement.__proto__ = Node$$1;\n BreakStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n BreakStatement.prototype.constructor = BreakStatement;\n\n BreakStatement.prototype.initialise = function initialise() {\n var loop = this.findNearest(loopStatement);\n var switchCase = this.findNearest('SwitchCase');\n\n if (loop && (!switchCase || loop.depth > switchCase.depth)) {\n loop.canBreak = true;\n this.loop = loop;\n }\n };\n\n BreakStatement.prototype.transpile = function transpile(code) {\n if (this.loop && this.loop.shouldRewriteAsFunction) {\n if (this.label) {\n throw new CompileError('Labels are not currently supported in a loop with locally-scoped variables', this);\n }\n\n code.overwrite(this.start, this.start + 5, \"return 'break'\");\n }\n };\n\n return BreakStatement;\n}(Node);\n\nvar CallExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function CallExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) CallExpression.__proto__ = Node$$1;\n CallExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n CallExpression.prototype.constructor = CallExpression;\n\n CallExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.spreadRest && this.arguments.length > 1) {\n var lexicalBoundary = this.findLexicalBoundary();\n var i = this.arguments.length;\n\n while (i--) {\n var arg = this.arguments[i];\n\n if (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n this.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n }\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n CallExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.spreadRest && this.arguments.length) {\n inlineSpreads(code, this, this.arguments); // this.arguments.length may have changed, must retest.\n }\n\n if (transforms.spreadRest && this.arguments.length) {\n var hasSpreadElements = false;\n var context;\n var firstArgument = this.arguments[0];\n\n if (this.arguments.length === 1) {\n if (firstArgument.type === 'SpreadElement') {\n code.remove(firstArgument.start, firstArgument.argument.start);\n hasSpreadElements = true;\n }\n } else {\n hasSpreadElements = spread(code, this.arguments, firstArgument.start, this.argumentsArrayAlias);\n }\n\n if (hasSpreadElements) {\n // we need to handle super() and super.method() differently\n // due to its instance\n var _super = null;\n\n if (this.callee.type === 'Super') {\n _super = this.callee;\n } else if (this.callee.type === 'MemberExpression' && this.callee.object.type === 'Super') {\n _super = this.callee.object;\n }\n\n if (!_super && this.callee.type === 'MemberExpression') {\n if (this.callee.object.type === 'Identifier') {\n context = this.callee.object.name;\n } else {\n context = this.findScope(true).createDeclaration('ref');\n var callExpression = this.callee.object;\n code.prependRight(callExpression.start, \"(\" + context + \" = \");\n code.appendLeft(callExpression.end, \")\");\n }\n } else {\n context = 'void 0';\n }\n\n code.appendLeft(this.callee.end, '.apply');\n\n if (_super) {\n _super.noCall = true; // bit hacky...\n\n if (this.arguments.length > 1) {\n if (firstArgument.type === 'SpreadElement') {\n if (needsParentheses(firstArgument.argument)) {\n code.prependRight(firstArgument.start, \"( \");\n }\n } else {\n code.prependRight(firstArgument.start, \"[ \");\n }\n\n code.appendLeft(this.arguments[this.arguments.length - 1].end, ' )');\n }\n } else if (this.arguments.length === 1) {\n code.prependRight(firstArgument.start, context + \", \");\n } else {\n if (firstArgument.type === 'SpreadElement') {\n if (needsParentheses(firstArgument.argument)) {\n code.appendLeft(firstArgument.start, context + \", ( \");\n } else {\n code.appendLeft(firstArgument.start, context + \", \");\n }\n } else {\n code.appendLeft(firstArgument.start, context + \", [ \");\n }\n\n code.appendLeft(this.arguments[this.arguments.length - 1].end, ' )');\n }\n }\n }\n\n if (transforms.trailingFunctionCommas && this.arguments.length) {\n removeTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return CallExpression;\n}(Node); // TODO this code is pretty wild, tidy it up\n\n\nvar ClassBody =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ClassBody() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ClassBody.__proto__ = Node$$1;\n ClassBody.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ClassBody.prototype.constructor = ClassBody;\n\n ClassBody.prototype.transpile = function transpile(code, transforms, inFunctionExpression, superName) {\n var this$1 = this;\n\n if (transforms.classes) {\n var name = this.parent.name;\n var indentStr = code.getIndentString();\n var i0 = this.getIndentation() + (inFunctionExpression ? indentStr : '');\n var i1 = i0 + indentStr;\n var constructorIndex = findIndex(this.body, function (node) {\n return node.kind === 'constructor';\n });\n var constructor = this.body[constructorIndex];\n var introBlock = '';\n var outroBlock = '';\n\n if (this.body.length) {\n code.remove(this.start, this.body[0].start);\n code.remove(this.body[this.body.length - 1].end, this.end);\n } else {\n code.remove(this.start, this.end);\n }\n\n if (constructor) {\n constructor.value.body.isConstructorBody = true;\n var previousMethod = this.body[constructorIndex - 1];\n var nextMethod = this.body[constructorIndex + 1]; // ensure constructor is first\n\n if (constructorIndex > 0) {\n code.remove(previousMethod.end, constructor.start);\n code.move(constructor.start, nextMethod ? nextMethod.start : this.end - 1, this.body[0].start);\n }\n\n if (!inFunctionExpression) {\n code.appendLeft(constructor.end, ';');\n }\n }\n\n var namedFunctions = this.program.options.namedFunctionExpressions !== false;\n var namedConstructor = namedFunctions || this.parent.superClass || this.parent.type !== 'ClassDeclaration';\n\n if (this.parent.superClass) {\n var inheritanceBlock = \"if ( \" + superName + \" ) \" + name + \".__proto__ = \" + superName + \";\\n\" + i0 + name + \".prototype = Object.create( \" + superName + \" && \" + superName + \".prototype );\\n\" + i0 + name + \".prototype.constructor = \" + name + \";\";\n\n if (constructor) {\n introBlock += \"\\n\\n\" + i0 + inheritanceBlock;\n } else {\n var fn = \"function \" + name + \" () {\" + (superName ? \"\\n\" + i1 + superName + \".apply(this, arguments);\\n\" + i0 + \"}\" : \"}\") + (inFunctionExpression ? '' : ';') + (this.body.length ? \"\\n\\n\" + i0 : '');\n inheritanceBlock = fn + inheritanceBlock;\n introBlock += inheritanceBlock + \"\\n\\n\" + i0;\n }\n } else if (!constructor) {\n var fn$1 = 'function ' + (namedConstructor ? name + ' ' : '') + '() {}';\n\n if (this.parent.type === 'ClassDeclaration') {\n fn$1 += ';';\n }\n\n if (this.body.length) {\n fn$1 += \"\\n\\n\" + i0;\n }\n\n introBlock += fn$1;\n }\n\n var scope = this.findScope(false);\n var prototypeGettersAndSetters = [];\n var staticGettersAndSetters = [];\n var prototypeAccessors;\n var staticAccessors;\n this.body.forEach(function (method, i) {\n if ((method.kind === 'get' || method.kind === 'set') && transforms.getterSetter) {\n CompileError.missingTransform(\"getters and setters\", \"getterSetter\", method);\n }\n\n if (method.kind === 'constructor') {\n var constructorName = namedConstructor ? ' ' + name : '';\n code.overwrite(method.key.start, method.key.end, \"function\" + constructorName);\n return;\n }\n\n if (method.static) {\n var len = code.original[method.start + 6] == ' ' ? 7 : 6;\n code.remove(method.start, method.start + len);\n }\n\n var isAccessor = method.kind !== 'method';\n var lhs;\n var methodName = method.key.name;\n\n if (reserved[methodName] || method.value.body.scope.references[methodName]) {\n methodName = scope.createIdentifier(methodName);\n } // when method name is a string or a number let's pretend it's a computed method\n\n\n var fake_computed = false;\n\n if (!method.computed && method.key.type === 'Literal') {\n fake_computed = true;\n method.computed = true;\n }\n\n if (isAccessor) {\n if (method.computed) {\n throw new Error('Computed accessor properties are not currently supported');\n }\n\n code.remove(method.start, method.key.start);\n\n if (method.static) {\n if (!~staticGettersAndSetters.indexOf(method.key.name)) {\n staticGettersAndSetters.push(method.key.name);\n }\n\n if (!staticAccessors) {\n staticAccessors = scope.createIdentifier('staticAccessors');\n }\n\n lhs = \"\" + staticAccessors;\n } else {\n if (!~prototypeGettersAndSetters.indexOf(method.key.name)) {\n prototypeGettersAndSetters.push(method.key.name);\n }\n\n if (!prototypeAccessors) {\n prototypeAccessors = scope.createIdentifier('prototypeAccessors');\n }\n\n lhs = \"\" + prototypeAccessors;\n }\n } else {\n lhs = method.static ? \"\" + name : name + \".prototype\";\n }\n\n if (!method.computed) {\n lhs += '.';\n }\n\n var insertNewlines = constructorIndex > 0 && i === constructorIndex + 1 || i === 0 && constructorIndex === this$1.body.length - 1;\n\n if (insertNewlines) {\n lhs = \"\\n\\n\" + i0 + lhs;\n }\n\n var c = method.key.end;\n\n if (method.computed) {\n if (fake_computed) {\n code.prependRight(method.key.start, '[');\n code.appendLeft(method.key.end, ']');\n } else {\n while (code.original[c] !== ']') {\n c += 1;\n }\n\n c += 1;\n }\n }\n\n var funcName = method.computed || isAccessor || !namedFunctions ? '' : methodName + \" \";\n var rhs = (isAccessor ? \".\" + method.kind : '') + \" = \" + (method.value.async ? 'async ' : '') + \"function\" + (method.value.generator ? '* ' : ' ') + funcName;\n code.remove(c, method.value.start);\n code.prependRight(method.value.start, rhs);\n code.appendLeft(method.end, ';');\n\n if (method.value.generator) {\n code.remove(method.start, method.key.start);\n }\n\n var start = method.key.start;\n\n if (method.computed && !fake_computed) {\n while (code.original[start] != '[') {\n --start;\n }\n }\n\n if (method.start < start) {\n code.overwrite(method.start, start, lhs);\n } else {\n code.prependRight(method.start, lhs);\n }\n });\n\n if (prototypeGettersAndSetters.length || staticGettersAndSetters.length) {\n var intro = [];\n var outro = [];\n\n if (prototypeGettersAndSetters.length) {\n intro.push(\"var \" + prototypeAccessors + \" = { \" + prototypeGettersAndSetters.map(function (name) {\n return name + \": { configurable: true }\";\n }).join(',') + \" };\");\n outro.push(\"Object.defineProperties( \" + name + \".prototype, \" + prototypeAccessors + \" );\");\n }\n\n if (staticGettersAndSetters.length) {\n intro.push(\"var \" + staticAccessors + \" = { \" + staticGettersAndSetters.map(function (name) {\n return name + \": { configurable: true }\";\n }).join(',') + \" };\");\n outro.push(\"Object.defineProperties( \" + name + \", \" + staticAccessors + \" );\");\n }\n\n if (constructor) {\n introBlock += \"\\n\\n\" + i0;\n }\n\n introBlock += intro.join(\"\\n\" + i0);\n\n if (!constructor) {\n introBlock += \"\\n\\n\" + i0;\n }\n\n outroBlock += \"\\n\\n\" + i0 + outro.join(\"\\n\" + i0);\n }\n\n if (constructor) {\n code.appendLeft(constructor.end, introBlock);\n } else {\n code.prependRight(this.start, introBlock);\n }\n\n code.appendLeft(this.end, outroBlock);\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return ClassBody;\n}(Node); // TODO this function is slightly flawed – it works on the original string,\n// not its current edited state.\n// That's not a problem for the way that it's currently used, but it could\n// be in future...\n\n\nfunction deindent(node, code) {\n var start = node.start;\n var end = node.end;\n var indentStr = code.getIndentString();\n var indentStrLen = indentStr.length;\n var indentStart = start - indentStrLen;\n\n if (!node.program.indentExclusions[indentStart] && code.original.slice(indentStart, start) === indentStr) {\n code.remove(indentStart, start);\n }\n\n var pattern = new RegExp(indentStr + '\\\\S', 'g');\n var slice = code.original.slice(start, end);\n var match;\n\n while (match = pattern.exec(slice)) {\n var removeStart = start + match.index;\n\n if (!node.program.indentExclusions[removeStart]) {\n code.remove(removeStart, removeStart + indentStrLen);\n }\n }\n}\n\nvar ClassDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ClassDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ClassDeclaration.__proto__ = Node$$1;\n ClassDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ClassDeclaration.prototype.constructor = ClassDeclaration;\n\n ClassDeclaration.prototype.initialise = function initialise(transforms) {\n if (this.id) {\n this.name = this.id.name;\n this.findScope(true).addDeclaration(this.id, 'class');\n } else {\n this.name = this.findScope(true).createIdentifier(\"defaultExport\");\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ClassDeclaration.prototype.transpile = function transpile(code, transforms) {\n if (transforms.classes) {\n if (!this.superClass) {\n deindent(this.body, code);\n }\n\n var superName = this.superClass && (this.superClass.name || 'superclass');\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString(); // if this is an export default statement, we have to move the export to\n // after the declaration, because `export default var Foo = ...` is illegal\n\n var isExportDefaultDeclaration = this.parent.type === 'ExportDefaultDeclaration';\n\n if (isExportDefaultDeclaration) {\n code.remove(this.parent.start, this.start);\n }\n\n var c = this.start;\n\n if (this.id) {\n code.overwrite(c, this.id.start, 'var ');\n c = this.id.end;\n } else {\n code.prependLeft(c, \"var \" + this.name);\n }\n\n if (this.superClass) {\n if (this.superClass.end === this.body.start) {\n code.remove(c, this.superClass.start);\n code.appendLeft(c, \" = /*@__PURE__*/(function (\" + superName + \") {\\n\" + i1);\n } else {\n code.overwrite(c, this.superClass.start, ' = ');\n code.overwrite(this.superClass.end, this.body.start, \"/*@__PURE__*/(function (\" + superName + \") {\\n\" + i1);\n }\n } else {\n if (c === this.body.start) {\n code.appendLeft(c, ' = ');\n } else {\n code.overwrite(c, this.body.start, ' = ');\n }\n }\n\n this.body.transpile(code, transforms, !!this.superClass, superName);\n var syntheticDefaultExport = isExportDefaultDeclaration ? \"\\n\\n\" + i0 + \"export default \" + this.name + \";\" : '';\n\n if (this.superClass) {\n code.appendLeft(this.end, \"\\n\\n\" + i1 + \"return \" + this.name + \";\\n\" + i0 + \"}(\");\n code.move(this.superClass.start, this.superClass.end, this.end);\n code.prependRight(this.end, \"));\" + syntheticDefaultExport);\n } else if (syntheticDefaultExport) {\n code.prependRight(this.end, syntheticDefaultExport);\n }\n } else {\n this.body.transpile(code, transforms, false, null);\n }\n };\n\n return ClassDeclaration;\n}(Node);\n\nvar ClassExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ClassExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ClassExpression.__proto__ = Node$$1;\n ClassExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ClassExpression.prototype.constructor = ClassExpression;\n\n ClassExpression.prototype.initialise = function initialise(transforms) {\n this.name = (this.id ? this.id.name : this.parent.type === 'VariableDeclarator' ? this.parent.id.name : this.parent.type !== 'AssignmentExpression' ? null : this.parent.left.type === 'Identifier' ? this.parent.left.name : this.parent.left.type === 'MemberExpression' ? this.parent.left.property.name : null) || this.findScope(true).createIdentifier('anonymous');\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n ClassExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.classes) {\n var superName = this.superClass && (this.superClass.name || 'superclass');\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n\n if (this.superClass) {\n code.remove(this.start, this.superClass.start);\n code.remove(this.superClass.end, this.body.start);\n code.appendRight(this.start, \"/*@__PURE__*/(function (\" + superName + \") {\\n\" + i1);\n } else {\n code.overwrite(this.start, this.body.start, \"/*@__PURE__*/(function () {\\n\" + i1);\n }\n\n this.body.transpile(code, transforms, true, superName);\n var superClass = '';\n\n if (this.superClass) {\n superClass = code.slice(this.superClass.start, this.superClass.end);\n code.remove(this.superClass.start, this.superClass.end);\n }\n\n code.appendLeft(this.end, \"\\n\\n\" + i1 + \"return \" + this.name + \";\\n\" + i0 + \"}(\" + superClass + \"))\");\n } else {\n this.body.transpile(code, transforms, false);\n }\n };\n\n return ClassExpression;\n}(Node);\n\nvar ContinueStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ContinueStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ContinueStatement.__proto__ = Node$$1;\n ContinueStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ContinueStatement.prototype.constructor = ContinueStatement;\n\n ContinueStatement.prototype.transpile = function transpile(code) {\n var loop = this.findNearest(loopStatement);\n\n if (loop.shouldRewriteAsFunction) {\n if (this.label) {\n throw new CompileError('Labels are not currently supported in a loop with locally-scoped variables', this);\n }\n\n code.overwrite(this.start, this.start + 8, 'return');\n }\n };\n\n return ContinueStatement;\n}(Node);\n\nvar ExportDefaultDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ExportDefaultDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ExportDefaultDeclaration.__proto__ = Node$$1;\n ExportDefaultDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ExportDefaultDeclaration.prototype.constructor = ExportDefaultDeclaration;\n\n ExportDefaultDeclaration.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleExport) {\n CompileError.missingTransform(\"export\", \"moduleExport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ExportDefaultDeclaration;\n}(Node);\n\nvar ExportNamedDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ExportNamedDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ExportNamedDeclaration.__proto__ = Node$$1;\n ExportNamedDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ExportNamedDeclaration.prototype.constructor = ExportNamedDeclaration;\n\n ExportNamedDeclaration.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleExport) {\n CompileError.missingTransform(\"export\", \"moduleExport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ExportNamedDeclaration;\n}(Node);\n\nvar LoopStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function LoopStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) LoopStatement.__proto__ = Node$$1;\n LoopStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n LoopStatement.prototype.constructor = LoopStatement;\n\n LoopStatement.prototype.findScope = function findScope(functionScope) {\n return functionScope || !this.createdScope ? this.parent.findScope(functionScope) : this.body.scope;\n };\n\n LoopStatement.prototype.initialise = function initialise(transforms) {\n this.body.createScope();\n this.createdScope = true; // this is populated as and when reassignments occur\n\n this.reassigned = Object.create(null);\n this.aliases = Object.create(null);\n this.thisRefs = [];\n Node$$1.prototype.initialise.call(this, transforms);\n\n if (transforms.letConst) {\n // see if any block-scoped declarations are referenced\n // inside function expressions\n var names = Object.keys(this.body.scope.declarations);\n var i = names.length;\n\n while (i--) {\n var name = names[i];\n var declaration = this.body.scope.declarations[name];\n var j = declaration.instances.length;\n\n while (j--) {\n var instance = declaration.instances[j];\n var nearestFunctionExpression = instance.findNearest(/Function/);\n\n if (nearestFunctionExpression && nearestFunctionExpression.depth > this.depth) {\n this.shouldRewriteAsFunction = true;\n\n for (var i$1 = 0, list = this.thisRefs; i$1 < list.length; i$1 += 1) {\n var node = list[i$1];\n node.alias = node.alias || node.findLexicalBoundary().getThisAlias();\n }\n\n break;\n }\n }\n\n if (this.shouldRewriteAsFunction) {\n break;\n }\n }\n }\n };\n\n LoopStatement.prototype.transpile = function transpile(code, transforms) {\n var needsBlock = this.type != 'ForOfStatement' && (this.body.type !== 'BlockStatement' || this.body.type === 'BlockStatement' && this.body.synthetic);\n\n if (this.shouldRewriteAsFunction) {\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n var argString = this.args ? \" \" + this.args.join(', ') + \" \" : '';\n var paramString = this.params ? \" \" + this.params.join(', ') + \" \" : '';\n var functionScope = this.findScope(true);\n var loop = functionScope.createIdentifier('loop');\n var before = \"var \" + loop + \" = function (\" + paramString + \") \" + (this.body.synthetic ? \"{\\n\" + i0 + code.getIndentString() : '');\n var after = (this.body.synthetic ? \"\\n\" + i0 + \"}\" : '') + \";\\n\\n\" + i0;\n code.prependRight(this.body.start, before);\n code.appendLeft(this.body.end, after);\n code.move(this.start, this.body.start, this.body.end);\n\n if (this.canBreak || this.canReturn) {\n var returned = functionScope.createIdentifier('returned');\n var insert = \"{\\n\" + i1 + \"var \" + returned + \" = \" + loop + \"(\" + argString + \");\\n\";\n\n if (this.canBreak) {\n insert += \"\\n\" + i1 + \"if ( \" + returned + \" === 'break' ) break;\";\n }\n\n if (this.canReturn) {\n insert += \"\\n\" + i1 + \"if ( \" + returned + \" ) return \" + returned + \".v;\";\n }\n\n insert += \"\\n\" + i0 + \"}\";\n code.prependRight(this.body.end, insert);\n } else {\n var callExpression = loop + \"(\" + argString + \");\";\n\n if (this.type === 'DoWhileStatement') {\n code.overwrite(this.start, this.body.start, \"do {\\n\" + i1 + callExpression + \"\\n\" + i0 + \"}\");\n } else {\n code.prependRight(this.body.end, callExpression);\n }\n }\n } else if (needsBlock) {\n code.appendLeft(this.body.start, '{ ');\n code.prependRight(this.body.end, ' }');\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return LoopStatement;\n}(Node);\n\nvar ForStatement =\n/*@__PURE__*/\nfunction (LoopStatement$$1) {\n function ForStatement() {\n LoopStatement$$1.apply(this, arguments);\n }\n\n if (LoopStatement$$1) ForStatement.__proto__ = LoopStatement$$1;\n ForStatement.prototype = Object.create(LoopStatement$$1 && LoopStatement$$1.prototype);\n ForStatement.prototype.constructor = ForStatement;\n\n ForStatement.prototype.findScope = function findScope(functionScope) {\n return functionScope || !this.createdScope ? this.parent.findScope(functionScope) : this.body.scope;\n };\n\n ForStatement.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var i1 = this.getIndentation() + code.getIndentString();\n\n if (this.shouldRewriteAsFunction) {\n // which variables are declared in the init statement?\n var names = this.init.type === 'VariableDeclaration' ? this.init.declarations.map(function (declarator) {\n return extractNames(declarator.id);\n }) : [];\n var aliases = this.aliases;\n this.args = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].outer : name;\n });\n this.params = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].inner : name;\n });\n var updates = Object.keys(this.reassigned).map(function (name) {\n return aliases[name].outer + \" = \" + aliases[name].inner + \";\";\n });\n\n if (updates.length) {\n if (this.body.synthetic) {\n code.appendLeft(this.body.body[0].end, \"; \" + updates.join(\" \"));\n } else {\n var lastStatement = this.body.body[this.body.body.length - 1];\n code.appendLeft(lastStatement.end, \"\\n\\n\" + i1 + updates.join(\"\\n\" + i1));\n }\n }\n }\n\n LoopStatement$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return ForStatement;\n}(LoopStatement);\n\nvar ForInStatement =\n/*@__PURE__*/\nfunction (LoopStatement$$1) {\n function ForInStatement() {\n LoopStatement$$1.apply(this, arguments);\n }\n\n if (LoopStatement$$1) ForInStatement.__proto__ = LoopStatement$$1;\n ForInStatement.prototype = Object.create(LoopStatement$$1 && LoopStatement$$1.prototype);\n ForInStatement.prototype.constructor = ForInStatement;\n\n ForInStatement.prototype.findScope = function findScope(functionScope) {\n return functionScope || !this.createdScope ? this.parent.findScope(functionScope) : this.body.scope;\n };\n\n ForInStatement.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var hasDeclaration = this.left.type === 'VariableDeclaration';\n\n if (this.shouldRewriteAsFunction) {\n // which variables are declared in the init statement?\n var names = hasDeclaration ? this.left.declarations.map(function (declarator) {\n return extractNames(declarator.id);\n }) : [];\n this.args = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].outer : name;\n });\n this.params = names.map(function (name) {\n return name in this$1.aliases ? this$1.aliases[name].inner : name;\n });\n }\n\n LoopStatement$$1.prototype.transpile.call(this, code, transforms);\n var maybePattern = hasDeclaration ? this.left.declarations[0].id : this.left;\n\n if (maybePattern.type !== 'Identifier') {\n this.destructurePattern(code, maybePattern, hasDeclaration);\n }\n };\n\n ForInStatement.prototype.destructurePattern = function destructurePattern(code, pattern, isDeclaration) {\n var scope = this.findScope(true);\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n var ref = scope.createIdentifier('ref');\n var bodyStart = this.body.body.length ? this.body.body[0].start : this.body.start + 1;\n code.move(pattern.start, pattern.end, bodyStart);\n code.prependRight(pattern.end, isDeclaration ? ref : \"var \" + ref);\n var statementGenerators = [];\n destructure(code, function (id) {\n return scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return scope.resolveName(name);\n }, pattern, ref, false, statementGenerators);\n var suffix = \";\\n\" + i1;\n statementGenerators.forEach(function (fn, i) {\n if (i === statementGenerators.length - 1) {\n suffix = \";\\n\\n\" + i1;\n }\n\n fn(bodyStart, '', suffix);\n });\n };\n\n return ForInStatement;\n}(LoopStatement);\n\nvar ForOfStatement =\n/*@__PURE__*/\nfunction (LoopStatement$$1) {\n function ForOfStatement() {\n LoopStatement$$1.apply(this, arguments);\n }\n\n if (LoopStatement$$1) ForOfStatement.__proto__ = LoopStatement$$1;\n ForOfStatement.prototype = Object.create(LoopStatement$$1 && LoopStatement$$1.prototype);\n ForOfStatement.prototype.constructor = ForOfStatement;\n\n ForOfStatement.prototype.initialise = function initialise(transforms) {\n if (transforms.forOf && !transforms.dangerousForOf) {\n CompileError.missingTransform(\"for-of statements\", \"forOf\", this, \"dangerousForOf\");\n }\n\n if (this.await && transforms.asyncAwait) {\n CompileError.missingTransform(\"for-await-of statements\", \"asyncAwait\", this);\n }\n\n LoopStatement$$1.prototype.initialise.call(this, transforms);\n };\n\n ForOfStatement.prototype.transpile = function transpile(code, transforms) {\n LoopStatement$$1.prototype.transpile.call(this, code, transforms);\n\n if (!transforms.dangerousForOf) {\n return;\n } // edge case (#80)\n\n\n if (!this.body.body[0]) {\n if (this.left.type === 'VariableDeclaration' && this.left.kind === 'var') {\n code.remove(this.start, this.left.start);\n code.appendLeft(this.left.end, ';');\n code.remove(this.left.end, this.end);\n } else {\n code.remove(this.start, this.end);\n }\n\n return;\n }\n\n var scope = this.findScope(true);\n var i0 = this.getIndentation();\n var i1 = i0 + code.getIndentString();\n var key = scope.createIdentifier('i');\n var list = scope.createIdentifier('list');\n\n if (this.body.synthetic) {\n code.prependRight(this.left.start, \"{\\n\" + i1);\n code.appendLeft(this.body.body[0].end, \"\\n\" + i0 + \"}\");\n }\n\n var bodyStart = this.body.body[0].start;\n code.remove(this.left.end, this.right.start);\n code.move(this.left.start, this.left.end, bodyStart);\n code.prependRight(this.right.start, \"var \" + key + \" = 0, \" + list + \" = \");\n code.appendLeft(this.right.end, \"; \" + key + \" < \" + list + \".length; \" + key + \" += 1\");\n var isDeclaration = this.left.type === 'VariableDeclaration';\n var maybeDestructuring = isDeclaration ? this.left.declarations[0].id : this.left;\n\n if (maybeDestructuring.type !== 'Identifier') {\n var statementGenerators = [];\n var ref = scope.createIdentifier('ref');\n destructure(code, function (id) {\n return scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return scope.resolveName(name);\n }, maybeDestructuring, ref, !isDeclaration, statementGenerators);\n var suffix = \";\\n\" + i1;\n statementGenerators.forEach(function (fn, i) {\n if (i === statementGenerators.length - 1) {\n suffix = \";\\n\\n\" + i1;\n }\n\n fn(bodyStart, '', suffix);\n });\n\n if (isDeclaration) {\n code.appendLeft(this.left.start + this.left.kind.length + 1, ref);\n code.appendLeft(this.left.end, \" = \" + list + \"[\" + key + \"];\\n\" + i1);\n } else {\n code.appendLeft(this.left.end, \"var \" + ref + \" = \" + list + \"[\" + key + \"];\\n\" + i1);\n }\n } else {\n code.appendLeft(this.left.end, \" = \" + list + \"[\" + key + \"];\\n\\n\" + i1);\n }\n };\n\n return ForOfStatement;\n}(LoopStatement);\n\nvar FunctionDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function FunctionDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) FunctionDeclaration.__proto__ = Node$$1;\n FunctionDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n FunctionDeclaration.prototype.constructor = FunctionDeclaration;\n\n FunctionDeclaration.prototype.initialise = function initialise(transforms) {\n if (this.generator && transforms.generator) {\n CompileError.missingTransform(\"generators\", \"generator\", this);\n }\n\n if (this.async && transforms.asyncAwait) {\n CompileError.missingTransform(\"async functions\", \"asyncAwait\", this);\n }\n\n this.body.createScope();\n\n if (this.id) {\n this.findScope(true).addDeclaration(this.id, 'function');\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n FunctionDeclaration.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.trailingFunctionCommas && this.params.length) {\n removeTrailingComma(code, this.params[this.params.length - 1].end);\n }\n };\n\n return FunctionDeclaration;\n}(Node);\n\nvar FunctionExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function FunctionExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) FunctionExpression.__proto__ = Node$$1;\n FunctionExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n FunctionExpression.prototype.constructor = FunctionExpression;\n\n FunctionExpression.prototype.initialise = function initialise(transforms) {\n if (this.generator && transforms.generator) {\n CompileError.missingTransform(\"generators\", \"generator\", this);\n }\n\n if (this.async && transforms.asyncAwait) {\n CompileError.missingTransform(\"async functions\", \"asyncAwait\", this);\n }\n\n this.body.createScope();\n\n if (this.id) {\n // function expression IDs belong to the child scope...\n this.body.scope.addDeclaration(this.id, 'function');\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n var parent = this.parent;\n var methodName;\n\n if (transforms.conciseMethodProperty && parent.type === 'Property' && parent.kind === 'init' && parent.method && parent.key.type === 'Identifier') {\n // object literal concise method\n methodName = parent.key.name;\n } else if (transforms.classes && parent.type === 'MethodDefinition' && parent.kind === 'method' && parent.key.type === 'Identifier') {\n // method definition in a class\n methodName = parent.key.name;\n } else if (this.id && this.id.type === 'Identifier') {\n // naked function expression\n methodName = this.id.alias || this.id.name;\n }\n\n if (methodName) {\n for (var i$1 = 0, list$1 = this.params; i$1 < list$1.length; i$1 += 1) {\n var param = list$1[i$1];\n\n if (param.type === 'Identifier' && methodName === param.name) {\n // workaround for Safari 9/WebKit bug:\n // https://gitlab.com/Rich-Harris/buble/issues/154\n // change parameter name when same as method name\n var scope = this.body.scope;\n var declaration = scope.declarations[methodName];\n var alias = scope.createIdentifier(methodName);\n param.alias = alias;\n\n for (var i = 0, list = declaration.instances; i < list.length; i += 1) {\n var identifier = list[i];\n identifier.alias = alias;\n }\n\n break;\n }\n }\n }\n };\n\n FunctionExpression.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.trailingFunctionCommas && this.params.length) {\n removeTrailingComma(code, this.params[this.params.length - 1].end);\n }\n };\n\n return FunctionExpression;\n}(Node);\n\nfunction isReference(node, parent) {\n if (node.type === 'MemberExpression') {\n return !node.computed && isReference(node.object, node);\n }\n\n if (node.type === 'Identifier') {\n // the only time we could have an identifier node without a parent is\n // if it's the entire body of a function without a block statement –\n // i.e. an arrow function expression like `a => a`\n if (!parent) {\n return true;\n }\n\n if (/(Function|Class)Expression/.test(parent.type)) {\n return false;\n }\n\n if (parent.type === 'VariableDeclarator') {\n return node === parent.init;\n } // TODO is this right?\n\n\n if (parent.type === 'MemberExpression' || parent.type === 'MethodDefinition') {\n return parent.computed || node === parent.object;\n }\n\n if (parent.type === 'ArrayPattern') {\n return false;\n } // disregard the `bar` in `{ bar: foo }`, but keep it in `{ [bar]: foo }`\n\n\n if (parent.type === 'Property') {\n if (parent.parent.type === 'ObjectPattern') {\n return false;\n }\n\n return parent.computed || node === parent.value;\n } // disregard the `bar` in `class Foo { bar () {...} }`\n\n\n if (parent.type === 'MethodDefinition') {\n return false;\n } // disregard the `bar` in `export { foo as bar }`\n\n\n if (parent.type === 'ExportSpecifier' && node !== parent.local) {\n return false;\n }\n\n return true;\n }\n}\n\nvar Identifier =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Identifier() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Identifier.__proto__ = Node$$1;\n Identifier.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Identifier.prototype.constructor = Identifier;\n\n Identifier.prototype.findScope = function findScope(functionScope) {\n if (this.parent.params && ~this.parent.params.indexOf(this)) {\n return this.parent.body.scope;\n }\n\n if (this.parent.type === 'FunctionExpression' && this === this.parent.id) {\n return this.parent.body.scope;\n }\n\n return this.parent.findScope(functionScope);\n };\n\n Identifier.prototype.initialise = function initialise(transforms) {\n if (isReference(this, this.parent)) {\n if (transforms.arrow && this.name === 'arguments' && !this.findScope(false).contains(this.name)) {\n var lexicalBoundary = this.findLexicalBoundary();\n var arrowFunction = this.findNearest('ArrowFunctionExpression');\n var loop = this.findNearest(loopStatement);\n\n if (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n this.alias = lexicalBoundary.getArgumentsAlias();\n }\n\n if (loop && loop.body.contains(this) && loop.depth > lexicalBoundary.depth) {\n this.alias = lexicalBoundary.getArgumentsAlias();\n }\n }\n\n this.findScope(false).addReference(this);\n }\n };\n\n Identifier.prototype.transpile = function transpile(code) {\n if (this.alias) {\n code.overwrite(this.start, this.end, this.alias, {\n storeName: true,\n contentOnly: true\n });\n }\n };\n\n return Identifier;\n}(Node);\n\nvar IfStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function IfStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) IfStatement.__proto__ = Node$$1;\n IfStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n IfStatement.prototype.constructor = IfStatement;\n\n IfStatement.prototype.initialise = function initialise(transforms) {\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n IfStatement.prototype.transpile = function transpile(code, transforms) {\n if (this.consequent.type !== 'BlockStatement' || this.consequent.type === 'BlockStatement' && this.consequent.synthetic) {\n code.appendLeft(this.consequent.start, '{ ');\n code.prependRight(this.consequent.end, ' }');\n }\n\n if (this.alternate && this.alternate.type !== 'IfStatement' && (this.alternate.type !== 'BlockStatement' || this.alternate.type === 'BlockStatement' && this.alternate.synthetic)) {\n code.appendLeft(this.alternate.start, '{ ');\n code.prependRight(this.alternate.end, ' }');\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return IfStatement;\n}(Node);\n\nvar Import =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Import() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Import.__proto__ = Node$$1;\n Import.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Import.prototype.constructor = Import;\n\n Import.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleImport) {\n CompileError.missingTransform(\"dynamic import expressions\", \"moduleImport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return Import;\n}(Node);\n\nvar ImportDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ImportDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ImportDeclaration.__proto__ = Node$$1;\n ImportDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ImportDeclaration.prototype.constructor = ImportDeclaration;\n\n ImportDeclaration.prototype.initialise = function initialise(transforms) {\n if (transforms.moduleImport) {\n CompileError.missingTransform(\"import\", \"moduleImport\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ImportDeclaration;\n}(Node);\n\nvar ImportDefaultSpecifier =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ImportDefaultSpecifier() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ImportDefaultSpecifier.__proto__ = Node$$1;\n ImportDefaultSpecifier.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ImportDefaultSpecifier.prototype.constructor = ImportDefaultSpecifier;\n\n ImportDefaultSpecifier.prototype.initialise = function initialise(transforms) {\n this.findScope(true).addDeclaration(this.local, 'import');\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ImportDefaultSpecifier;\n}(Node);\n\nvar ImportSpecifier =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ImportSpecifier() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ImportSpecifier.__proto__ = Node$$1;\n ImportSpecifier.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ImportSpecifier.prototype.constructor = ImportSpecifier;\n\n ImportSpecifier.prototype.initialise = function initialise(transforms) {\n this.findScope(true).addDeclaration(this.local, 'import');\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n return ImportSpecifier;\n}(Node);\n\nvar hasDashes = function hasDashes(val) {\n return /-/.test(val);\n};\n\nvar formatKey = function formatKey(key) {\n return hasDashes(key) ? \"'\" + key + \"'\" : key;\n};\n\nvar formatVal = function formatVal(val) {\n return val ? '' : 'true';\n};\n\nvar JSXAttribute =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXAttribute() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXAttribute.__proto__ = Node$$1;\n JSXAttribute.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXAttribute.prototype.constructor = JSXAttribute;\n\n JSXAttribute.prototype.transpile = function transpile(code, transforms) {\n var ref = this.name;\n var start = ref.start;\n var name = ref.name; // Overwrite equals sign if value is present.\n\n var end = this.value ? this.value.start : this.name.end;\n code.overwrite(start, end, formatKey(name) + \": \" + formatVal(this.value));\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return JSXAttribute;\n}(Node);\n\nfunction containsNewLine(node) {\n return node.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value);\n}\n\nvar JSXClosingElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXClosingElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXClosingElement.__proto__ = Node$$1;\n JSXClosingElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXClosingElement.prototype.constructor = JSXClosingElement;\n\n JSXClosingElement.prototype.transpile = function transpile(code) {\n var spaceBeforeParen = true;\n var lastChild = this.parent.children[this.parent.children.length - 1]; // omit space before closing paren if\n // a) this is on a separate line, or\n // b) there are no children but there are attributes\n\n if (lastChild && containsNewLine(lastChild) || this.parent.openingElement.attributes.length) {\n spaceBeforeParen = false;\n }\n\n code.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n };\n\n return JSXClosingElement;\n}(Node);\n\nfunction containsNewLine$1(node) {\n return node.type === 'JSXText' && !/\\S/.test(node.value) && /\\n/.test(node.value);\n}\n\nvar JSXClosingFragment =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXClosingFragment() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXClosingFragment.__proto__ = Node$$1;\n JSXClosingFragment.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXClosingFragment.prototype.constructor = JSXClosingFragment;\n\n JSXClosingFragment.prototype.transpile = function transpile(code) {\n var spaceBeforeParen = true;\n var lastChild = this.parent.children[this.parent.children.length - 1]; // omit space before closing paren if this is on a separate line\n\n if (lastChild && containsNewLine$1(lastChild)) {\n spaceBeforeParen = false;\n }\n\n code.overwrite(this.start, this.end, spaceBeforeParen ? ' )' : ')');\n };\n\n return JSXClosingFragment;\n}(Node);\n\nfunction normalise(str, removeTrailingWhitespace) {\n str = str.replace(/\\u00a0/g, ' ');\n\n if (removeTrailingWhitespace && /\\n/.test(str)) {\n str = str.replace(/\\s+$/, '');\n }\n\n str = str.replace(/^\\n\\r?\\s+/, '') // remove leading newline + space\n .replace(/\\s*\\n\\r?\\s*/gm, ' '); // replace newlines with spaces\n // TODO prefer single quotes?\n\n return JSON.stringify(str);\n}\n\nvar JSXElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXElement.__proto__ = Node$$1;\n JSXElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXElement.prototype.constructor = JSXElement;\n\n JSXElement.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n var children = this.children.filter(function (child) {\n if (child.type !== 'JSXText') {\n return true;\n } // remove whitespace-only literals, unless on a single line\n\n\n return /\\S/.test(child.raw) || !/\\n/.test(child.raw);\n });\n\n if (children.length) {\n var c = (this.openingElement || this.openingFragment).end;\n var i;\n\n for (i = 0; i < children.length; i += 1) {\n var child = children[i];\n if (child.type === 'JSXExpressionContainer' && child.expression.type === 'JSXEmptyExpression') ;else {\n var tail = code.original[c] === '\\n' && child.type !== 'JSXText' ? '' : ' ';\n code.appendLeft(c, \",\" + tail);\n }\n\n if (child.type === 'JSXText') {\n var str = normalise(child.value, i === children.length - 1);\n code.overwrite(child.start, child.end, str);\n }\n\n c = child.end;\n }\n }\n };\n\n return JSXElement;\n}(Node);\n\nvar JSXExpressionContainer =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXExpressionContainer() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXExpressionContainer.__proto__ = Node$$1;\n JSXExpressionContainer.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXExpressionContainer.prototype.constructor = JSXExpressionContainer;\n\n JSXExpressionContainer.prototype.transpile = function transpile(code, transforms) {\n code.remove(this.start, this.expression.start);\n code.remove(this.expression.end, this.end);\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return JSXExpressionContainer;\n}(Node);\n\nvar JSXFragment =\n/*@__PURE__*/\nfunction (JSXElement$$1) {\n function JSXFragment() {\n JSXElement$$1.apply(this, arguments);\n }\n\n if (JSXElement$$1) JSXFragment.__proto__ = JSXElement$$1;\n JSXFragment.prototype = Object.create(JSXElement$$1 && JSXElement$$1.prototype);\n JSXFragment.prototype.constructor = JSXFragment;\n return JSXFragment;\n}(JSXElement);\n\nvar JSXOpeningElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXOpeningElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXOpeningElement.__proto__ = Node$$1;\n JSXOpeningElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXOpeningElement.prototype.constructor = JSXOpeningElement;\n\n JSXOpeningElement.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n code.overwrite(this.start, this.name.start, this.program.jsx + \"( \");\n var html = this.name.type === 'JSXIdentifier' && this.name.name[0] === this.name.name[0].toLowerCase();\n\n if (html) {\n code.prependRight(this.name.start, \"'\");\n }\n\n var len = this.attributes.length;\n var c = this.name.end;\n\n if (len) {\n var i;\n var hasSpread = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.attributes[i].type === 'JSXSpreadAttribute') {\n hasSpread = true;\n break;\n }\n }\n\n c = this.attributes[0].end;\n\n for (i = 0; i < len; i += 1) {\n var attr = this.attributes[i];\n\n if (i > 0) {\n if (attr.start === c) {\n code.prependRight(c, ', ');\n } else {\n code.overwrite(c, attr.start, ', ');\n }\n }\n\n if (hasSpread && attr.type !== 'JSXSpreadAttribute') {\n var lastAttr = this.attributes[i - 1];\n var nextAttr = this.attributes[i + 1];\n\n if (!lastAttr || lastAttr.type === 'JSXSpreadAttribute') {\n code.prependRight(attr.start, '{ ');\n }\n\n if (!nextAttr || nextAttr.type === 'JSXSpreadAttribute') {\n code.appendLeft(attr.end, ' }');\n }\n }\n\n c = attr.end;\n }\n\n var after;\n var before;\n\n if (hasSpread) {\n if (len === 1) {\n before = html ? \"',\" : ',';\n } else {\n if (!this.program.options.objectAssign) {\n throw new CompileError(\"Mixed JSX attributes ending in spread requires specified objectAssign option with 'Object.assign' or polyfill helper.\", this);\n }\n\n before = html ? \"', \" + this.program.options.objectAssign + \"({},\" : \", \" + this.program.options.objectAssign + \"({},\";\n after = ')';\n }\n } else {\n before = html ? \"', {\" : ', {';\n after = ' }';\n }\n\n code.prependRight(this.name.end, before);\n\n if (after) {\n code.appendLeft(this.attributes[len - 1].end, after);\n }\n } else {\n code.appendLeft(this.name.end, html ? \"', null\" : \", null\");\n c = this.name.end;\n }\n\n if (this.selfClosing) {\n code.overwrite(c, this.end, this.attributes.length ? \")\" : \" )\");\n } else {\n code.remove(c, this.end);\n }\n };\n\n return JSXOpeningElement;\n}(Node);\n\nvar JSXOpeningFragment =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXOpeningFragment() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXOpeningFragment.__proto__ = Node$$1;\n JSXOpeningFragment.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXOpeningFragment.prototype.constructor = JSXOpeningFragment;\n\n JSXOpeningFragment.prototype.transpile = function transpile(code) {\n code.overwrite(this.start, this.end, this.program.jsx + \"( React.Fragment, null\");\n };\n\n return JSXOpeningFragment;\n}(Node);\n\nvar JSXSpreadAttribute =\n/*@__PURE__*/\nfunction (Node$$1) {\n function JSXSpreadAttribute() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) JSXSpreadAttribute.__proto__ = Node$$1;\n JSXSpreadAttribute.prototype = Object.create(Node$$1 && Node$$1.prototype);\n JSXSpreadAttribute.prototype.constructor = JSXSpreadAttribute;\n\n JSXSpreadAttribute.prototype.transpile = function transpile(code, transforms) {\n code.remove(this.start, this.argument.start);\n code.remove(this.argument.end, this.end);\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return JSXSpreadAttribute;\n}(Node);\n\nvar nonAsciiLsOrPs = /[\\u2028-\\u2029]/g;\n\nvar Literal =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Literal() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Literal.__proto__ = Node$$1;\n Literal.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Literal.prototype.constructor = Literal;\n\n Literal.prototype.initialise = function initialise() {\n if (typeof this.value === 'string') {\n this.program.indentExclusionElements.push(this);\n }\n };\n\n Literal.prototype.transpile = function transpile(code, transforms) {\n if (transforms.numericLiteral) {\n if (this.raw.match(/^0[bo]/i)) {\n code.overwrite(this.start, this.end, String(this.value), {\n storeName: true,\n contentOnly: true\n });\n }\n }\n\n if (this.regex) {\n var ref = this.regex;\n var pattern = ref.pattern;\n var flags = ref.flags;\n\n if (transforms.stickyRegExp && /y/.test(flags)) {\n CompileError.missingTransform('the regular expression sticky flag', 'stickyRegExp', this);\n }\n\n if (transforms.unicodeRegExp && /u/.test(flags)) {\n code.overwrite(this.start, this.end, \"/\" + regexpu_core__WEBPACK_IMPORTED_MODULE_0___default()(pattern, flags) + \"/\" + flags.replace('u', ''), {\n contentOnly: true\n });\n }\n } else if (typeof this.value === \"string\" && this.value.match(nonAsciiLsOrPs)) {\n code.overwrite(this.start, this.end, this.raw.replace(nonAsciiLsOrPs, function (m) {\n return m == \"\\u2028\" ? \"\\\\u2028\" : \"\\\\u2029\";\n }), {\n contentOnly: true\n });\n }\n };\n\n return Literal;\n}(Node);\n\nvar MemberExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function MemberExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) MemberExpression.__proto__ = Node$$1;\n MemberExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n MemberExpression.prototype.constructor = MemberExpression;\n\n MemberExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.reservedProperties && reserved[this.property.name]) {\n code.overwrite(this.object.end, this.property.start, \"['\");\n code.appendLeft(this.property.end, \"']\");\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return MemberExpression;\n}(Node);\n\nvar NewExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function NewExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) NewExpression.__proto__ = Node$$1;\n NewExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n NewExpression.prototype.constructor = NewExpression;\n\n NewExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.spreadRest && this.arguments.length) {\n var lexicalBoundary = this.findLexicalBoundary();\n var i = this.arguments.length;\n\n while (i--) {\n var arg = this.arguments[i];\n\n if (arg.type === 'SpreadElement' && isArguments(arg.argument)) {\n this.argumentsArrayAlias = lexicalBoundary.getArgumentsArrayAlias();\n break;\n }\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n NewExpression.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.spreadRest && this.arguments.length) {\n inlineSpreads(code, this, this.arguments); // this.arguments.length may have changed, must retest.\n }\n\n if (transforms.spreadRest && this.arguments.length) {\n var firstArgument = this.arguments[0];\n var isNew = true;\n var hasSpreadElements = spread(code, this.arguments, firstArgument.start, this.argumentsArrayAlias, isNew);\n\n if (hasSpreadElements) {\n code.prependRight(this.start + 'new'.length, ' (Function.prototype.bind.apply(');\n code.overwrite(this.callee.end, firstArgument.start, ', [ null ].concat( ');\n code.appendLeft(this.end, ' ))');\n }\n }\n\n if (this.arguments.length) {\n removeTrailingComma(code, this.arguments[this.arguments.length - 1].end);\n }\n };\n\n return NewExpression;\n}(Node);\n\nvar ObjectExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ObjectExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ObjectExpression.__proto__ = Node$$1;\n ObjectExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ObjectExpression.prototype.constructor = ObjectExpression;\n\n ObjectExpression.prototype.transpile = function transpile(code, transforms) {\n var ref;\n Node$$1.prototype.transpile.call(this, code, transforms);\n var firstPropertyStart = this.start + 1;\n var spreadPropertyCount = 0;\n var computedPropertyCount = 0;\n var firstSpreadProperty = null;\n var firstComputedProperty = null;\n\n for (var i = 0; i < this.properties.length; ++i) {\n var prop = this.properties[i];\n\n if (prop.type === 'SpreadElement') {\n // First see if we can inline the spread, to save needing objectAssign.\n var argument = prop.argument;\n\n if (argument.type === 'ObjectExpression' || argument.type === 'Literal' && typeof argument.value !== 'string') {\n if (argument.type === 'ObjectExpression' && argument.properties.length > 0) {\n // Strip the `...{` and the `}` with a possible trailing comma before it,\n // leaving just the possible trailing comma after it.\n code.remove(prop.start, argument.properties[0].start);\n code.remove(argument.properties[argument.properties.length - 1].end, prop.end);\n (ref = this.properties).splice.apply(ref, [i, 1].concat(argument.properties));\n i--;\n } else {\n // An empty object, boolean, null, undefined, number or regexp (but NOT\n // string) will spread to nothing, so just remove the element altogether,\n // including a possible trailing comma.\n code.remove(prop.start, i === this.properties.length - 1 ? prop.end : this.properties[i + 1].start);\n this.properties.splice(i, 1);\n i--;\n }\n } else {\n spreadPropertyCount += 1;\n\n if (firstSpreadProperty === null) {\n firstSpreadProperty = i;\n }\n }\n } else if (prop.computed && transforms.computedProperty) {\n computedPropertyCount += 1;\n\n if (firstComputedProperty === null) {\n firstComputedProperty = i;\n }\n }\n }\n\n if (spreadPropertyCount && !transforms.objectRestSpread && !(computedPropertyCount && transforms.computedProperty)) {\n spreadPropertyCount = 0;\n firstSpreadProperty = null;\n } else if (spreadPropertyCount) {\n if (!this.program.options.objectAssign) {\n throw new CompileError(\"Object spread operator requires specified objectAssign option with 'Object.assign' or polyfill helper.\", this);\n }\n\n var i$1 = this.properties.length;\n\n while (i$1--) {\n var prop$1 = this.properties[i$1]; // enclose run of non-spread properties in curlies\n\n if (prop$1.type === 'Property' && !computedPropertyCount) {\n var lastProp = this.properties[i$1 - 1];\n var nextProp = this.properties[i$1 + 1];\n\n if (!lastProp || lastProp.type !== 'Property') {\n code.prependRight(prop$1.start, '{');\n }\n\n if (!nextProp || nextProp.type !== 'Property') {\n code.appendLeft(prop$1.end, '}');\n }\n } // Remove ellipsis on spread property\n\n\n if (prop$1.type === 'SpreadElement') {\n code.remove(prop$1.start, prop$1.argument.start);\n code.remove(prop$1.argument.end, prop$1.end);\n }\n } // wrap the whole thing in Object.assign\n\n\n firstPropertyStart = this.properties[0].start;\n\n if (!computedPropertyCount) {\n code.overwrite(this.start, firstPropertyStart, this.program.options.objectAssign + \"({}, \");\n code.overwrite(this.properties[this.properties.length - 1].end, this.end, ')');\n } else if (this.properties[0].type === 'SpreadElement') {\n code.overwrite(this.start, firstPropertyStart, this.program.options.objectAssign + \"({}, \");\n code.remove(this.end - 1, this.end);\n code.appendRight(this.end, ')');\n } else {\n code.prependLeft(this.start, this.program.options.objectAssign + \"(\");\n code.appendRight(this.end, ')');\n }\n }\n\n if (computedPropertyCount && transforms.computedProperty) {\n var i0 = this.getIndentation();\n var isSimpleAssignment;\n var name;\n\n if (this.parent.type === 'VariableDeclarator' && this.parent.parent.declarations.length === 1 && this.parent.id.type === 'Identifier') {\n isSimpleAssignment = true;\n name = this.parent.id.alias || this.parent.id.name; // TODO is this right?\n } else if (this.parent.type === 'AssignmentExpression' && this.parent.parent.type === 'ExpressionStatement' && this.parent.left.type === 'Identifier') {\n isSimpleAssignment = true;\n name = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n } else if (this.parent.type === 'AssignmentPattern' && this.parent.left.type === 'Identifier') {\n isSimpleAssignment = true;\n name = this.parent.left.alias || this.parent.left.name; // TODO is this right?\n }\n\n if (spreadPropertyCount) {\n isSimpleAssignment = false;\n } // handle block scoping\n\n\n name = this.findScope(false).resolveName(name);\n var start = firstPropertyStart;\n var end = this.end;\n if (isSimpleAssignment) ;else {\n if (firstSpreadProperty === null || firstComputedProperty < firstSpreadProperty) {\n name = this.findScope(true).createDeclaration('obj');\n code.prependRight(this.start, \"( \" + name + \" = \");\n } else {\n name = null;\n } // We don't actually need this variable\n\n }\n var len = this.properties.length;\n var lastComputedProp;\n var sawNonComputedProperty = false;\n var isFirst = true;\n\n for (var i$2 = 0; i$2 < len; i$2 += 1) {\n var prop$2 = this.properties[i$2];\n var moveStart = i$2 > 0 ? this.properties[i$2 - 1].end : start;\n\n if (prop$2.type === 'Property' && (prop$2.computed || lastComputedProp && !spreadPropertyCount)) {\n if (i$2 === 0) {\n moveStart = this.start + 1;\n } // Trim leading whitespace\n\n\n lastComputedProp = prop$2;\n\n if (!name) {\n name = this.findScope(true).createDeclaration('obj');\n var propId = name + (prop$2.computed ? '' : '.');\n code.appendRight(prop$2.start, \"( \" + name + \" = {}, \" + propId);\n } else {\n var propId$1 = (isSimpleAssignment ? \";\\n\" + i0 + name : \", \" + name) + (prop$2.key.type === 'Literal' || prop$2.computed ? '' : '.');\n\n if (moveStart < prop$2.start) {\n code.overwrite(moveStart, prop$2.start, propId$1);\n } else {\n code.prependRight(prop$2.start, propId$1);\n }\n }\n\n var c = prop$2.key.end;\n\n if (prop$2.computed) {\n while (code.original[c] !== ']') {\n c += 1;\n }\n\n c += 1;\n }\n\n if (prop$2.key.type === 'Literal' && !prop$2.computed) {\n code.overwrite(prop$2.start, prop$2.key.end + 1, '[' + code.slice(prop$2.start, prop$2.key.end) + '] = ');\n } else if (prop$2.shorthand || prop$2.method && !prop$2.computed && transforms.conciseMethodProperty) {\n // Replace : with = if Property::transpile inserted the :\n code.overwrite(prop$2.key.start, prop$2.key.end, code.slice(prop$2.key.start, prop$2.key.end).replace(/:/, ' ='));\n } else {\n if (prop$2.value.start > c) {\n code.remove(c, prop$2.value.start);\n }\n\n code.prependLeft(c, ' = ');\n } // This duplicates behavior from Property::transpile which is disabled\n // for computed properties or if conciseMethodProperty is false\n\n\n if (prop$2.method && (prop$2.computed || !transforms.conciseMethodProperty)) {\n if (prop$2.value.generator) {\n code.remove(prop$2.start, prop$2.key.start);\n }\n\n code.prependRight(prop$2.value.start, \"function\" + (prop$2.value.generator ? '*' : '') + \" \");\n }\n } else if (prop$2.type === 'SpreadElement') {\n if (name && i$2 > 0) {\n if (!lastComputedProp) {\n lastComputedProp = this.properties[i$2 - 1];\n }\n\n code.appendLeft(lastComputedProp.end, \", \" + name + \" )\");\n lastComputedProp = null;\n name = null;\n }\n } else {\n if (!isFirst && spreadPropertyCount) {\n // We are in an Object.assign context, so we need to wrap regular properties\n code.prependRight(prop$2.start, '{');\n code.appendLeft(prop$2.end, '}');\n }\n\n sawNonComputedProperty = true;\n }\n\n if (isFirst && (prop$2.type === 'SpreadElement' || prop$2.computed)) {\n var beginEnd = sawNonComputedProperty ? this.properties[this.properties.length - 1].end : this.end - 1; // Trim trailing comma because it can easily become a leading comma which is illegal\n\n if (code.original[beginEnd] == ',') {\n ++beginEnd;\n }\n\n var closing = code.slice(beginEnd, end);\n code.prependLeft(moveStart, closing);\n code.remove(beginEnd, end);\n isFirst = false;\n } // Clean up some extranous whitespace\n\n\n var c$1 = prop$2.end;\n\n if (i$2 < len - 1 && !sawNonComputedProperty) {\n while (code.original[c$1] !== ',') {\n c$1 += 1;\n }\n } else if (i$2 == len - 1) {\n c$1 = this.end;\n }\n\n if (prop$2.end != c$1) {\n code.overwrite(prop$2.end, c$1, '', {\n contentOnly: true\n });\n }\n }\n\n if (!isSimpleAssignment && name) {\n code.appendLeft(lastComputedProp.end, \", \" + name + \" )\");\n }\n }\n };\n\n return ObjectExpression;\n}(Node);\n\nvar Property =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Property() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Property.__proto__ = Node$$1;\n Property.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Property.prototype.constructor = Property;\n\n Property.prototype.initialise = function initialise(transforms) {\n if ((this.kind === 'get' || this.kind === 'set') && transforms.getterSetter) {\n CompileError.missingTransform(\"getters and setters\", \"getterSetter\", this);\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n Property.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.conciseMethodProperty && !this.computed && this.parent.type !== 'ObjectPattern') {\n if (this.shorthand) {\n code.prependRight(this.start, this.key.name + \": \");\n } else if (this.method) {\n var name = '';\n\n if (this.program.options.namedFunctionExpressions !== false) {\n if (this.key.type === 'Literal' && typeof this.key.value === 'number') {\n name = '';\n } else if (this.key.type === 'Identifier') {\n if (reserved[this.key.name] || !/^[a-z_$][a-z0-9_$]*$/i.test(this.key.name) || this.value.body.scope.references[this.key.name]) {\n name = this.findScope(true).createIdentifier(this.key.name);\n } else {\n name = this.key.name;\n }\n } else {\n name = this.findScope(true).createIdentifier(this.key.value);\n }\n\n name = ' ' + name;\n }\n\n if (this.start < this.key.start) {\n code.remove(this.start, this.key.start);\n }\n\n code.appendLeft(this.key.end, \": \" + (this.value.async ? 'async ' : '') + \"function\" + (this.value.generator ? '*' : '') + name);\n }\n }\n\n if (transforms.reservedProperties && reserved[this.key.name]) {\n code.prependRight(this.key.start, \"'\");\n code.appendLeft(this.key.end, \"'\");\n }\n };\n\n return Property;\n}(Node);\n\nvar ReturnStatement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ReturnStatement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ReturnStatement.__proto__ = Node$$1;\n ReturnStatement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ReturnStatement.prototype.constructor = ReturnStatement;\n\n ReturnStatement.prototype.initialise = function initialise(transforms) {\n this.loop = this.findNearest(loopStatement);\n this.nearestFunction = this.findNearest(/Function/);\n\n if (this.loop && (!this.nearestFunction || this.loop.depth > this.nearestFunction.depth)) {\n this.loop.canReturn = true;\n this.shouldWrap = true;\n }\n\n if (this.argument) {\n this.argument.initialise(transforms);\n }\n };\n\n ReturnStatement.prototype.transpile = function transpile(code, transforms) {\n var shouldWrap = this.shouldWrap && this.loop && this.loop.shouldRewriteAsFunction;\n\n if (this.argument) {\n if (shouldWrap) {\n code.prependRight(this.argument.start, \"{ v: \");\n }\n\n this.argument.transpile(code, transforms);\n\n if (shouldWrap) {\n code.appendLeft(this.argument.end, \" }\");\n }\n } else if (shouldWrap) {\n code.appendLeft(this.start + 6, ' {}');\n }\n };\n\n return ReturnStatement;\n}(Node);\n\nvar Super =\n/*@__PURE__*/\nfunction (Node$$1) {\n function Super() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) Super.__proto__ = Node$$1;\n Super.prototype = Object.create(Node$$1 && Node$$1.prototype);\n Super.prototype.constructor = Super;\n\n Super.prototype.initialise = function initialise(transforms) {\n if (transforms.classes) {\n this.method = this.findNearest('MethodDefinition');\n\n if (!this.method) {\n throw new CompileError('use of super outside class method', this);\n }\n\n var parentClass = this.findNearest('ClassBody').parent;\n this.superClassName = parentClass.superClass && (parentClass.superClass.name || 'superclass');\n\n if (!this.superClassName) {\n throw new CompileError('super used in base class', this);\n }\n\n this.isCalled = this.parent.type === 'CallExpression' && this === this.parent.callee;\n\n if (this.method.kind !== 'constructor' && this.isCalled) {\n throw new CompileError('super() not allowed outside class constructor', this);\n }\n\n this.isMember = this.parent.type === 'MemberExpression';\n\n if (!this.isCalled && !this.isMember) {\n throw new CompileError('Unexpected use of `super` (expected `super(...)` or `super.*`)', this);\n }\n }\n\n if (transforms.arrow) {\n var lexicalBoundary = this.findLexicalBoundary();\n var arrowFunction = this.findNearest('ArrowFunctionExpression');\n var loop = this.findNearest(loopStatement);\n\n if (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n this.thisAlias = lexicalBoundary.getThisAlias();\n }\n\n if (loop && loop.body.contains(this) && loop.depth > lexicalBoundary.depth) {\n this.thisAlias = lexicalBoundary.getThisAlias();\n }\n }\n };\n\n Super.prototype.transpile = function transpile(code, transforms) {\n if (transforms.classes) {\n var expression = this.isCalled || this.method.static ? this.superClassName : this.superClassName + \".prototype\";\n code.overwrite(this.start, this.end, expression, {\n storeName: true,\n contentOnly: true\n });\n var callExpression = this.isCalled ? this.parent : this.parent.parent;\n\n if (callExpression && callExpression.type === 'CallExpression') {\n if (!this.noCall) {\n // special case – `super( ...args )`\n code.appendLeft(callExpression.callee.end, '.call');\n }\n\n var thisAlias = this.thisAlias || 'this';\n\n if (callExpression.arguments.length) {\n code.appendLeft(callExpression.arguments[0].start, thisAlias + \", \");\n } else {\n code.appendLeft(callExpression.end - 1, \"\" + thisAlias);\n }\n }\n }\n };\n\n return Super;\n}(Node);\n\nvar TaggedTemplateExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function TaggedTemplateExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) TaggedTemplateExpression.__proto__ = Node$$1;\n TaggedTemplateExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n TaggedTemplateExpression.prototype.constructor = TaggedTemplateExpression;\n\n TaggedTemplateExpression.prototype.initialise = function initialise(transforms) {\n if (transforms.templateString && !transforms.dangerousTaggedTemplateString) {\n CompileError.missingTransform(\"tagged template strings\", \"templateString\", this, \"dangerousTaggedTemplateString\");\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n TaggedTemplateExpression.prototype.transpile = function transpile(code, transforms) {\n if (transforms.templateString && transforms.dangerousTaggedTemplateString) {\n var ordered = this.quasi.expressions.concat(this.quasi.quasis).sort(function (a, b) {\n return a.start - b.start;\n });\n var program = this.program;\n var rootScope = program.body.scope; // insert strings at start\n\n var templateStrings = this.quasi.quasis.map(function (quasi) {\n return JSON.stringify(quasi.value.cooked);\n }).join(', ');\n var templateObject = this.program.templateLiteralQuasis[templateStrings];\n\n if (!templateObject) {\n templateObject = rootScope.createIdentifier('templateObject');\n code.prependRight(this.program.prependAt, \"var \" + templateObject + \" = Object.freeze([\" + templateStrings + \"]);\\n\");\n this.program.templateLiteralQuasis[templateStrings] = templateObject;\n }\n\n code.overwrite(this.tag.end, ordered[0].start, \"(\" + templateObject);\n var lastIndex = ordered[0].start;\n ordered.forEach(function (node) {\n if (node.type === 'TemplateElement') {\n code.remove(lastIndex, node.end);\n } else {\n code.overwrite(lastIndex, node.start, ', ');\n }\n\n lastIndex = node.end;\n });\n code.overwrite(lastIndex, this.end, ')');\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return TaggedTemplateExpression;\n}(Node);\n\nvar TemplateElement =\n/*@__PURE__*/\nfunction (Node$$1) {\n function TemplateElement() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) TemplateElement.__proto__ = Node$$1;\n TemplateElement.prototype = Object.create(Node$$1 && Node$$1.prototype);\n TemplateElement.prototype.constructor = TemplateElement;\n\n TemplateElement.prototype.initialise = function initialise() {\n this.program.indentExclusionElements.push(this);\n };\n\n return TemplateElement;\n}(Node);\n\nvar TemplateLiteral =\n/*@__PURE__*/\nfunction (Node$$1) {\n function TemplateLiteral() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) TemplateLiteral.__proto__ = Node$$1;\n TemplateLiteral.prototype = Object.create(Node$$1 && Node$$1.prototype);\n TemplateLiteral.prototype.constructor = TemplateLiteral;\n\n TemplateLiteral.prototype.transpile = function transpile(code, transforms) {\n Node$$1.prototype.transpile.call(this, code, transforms);\n\n if (transforms.templateString && this.parent.type !== 'TaggedTemplateExpression') {\n var ordered = this.expressions.concat(this.quasis).sort(function (a, b) {\n return a.start - b.start || a.end - b.end;\n }).filter(function (node, i) {\n // include all expressions\n if (node.type !== 'TemplateElement') {\n return true;\n } // include all non-empty strings\n\n\n if (node.value.raw) {\n return true;\n } // exclude all empty strings not at the head\n\n\n return !i;\n }); // special case – we may be able to skip the first element,\n // if it's the empty string, but only if the second and\n // third elements aren't both expressions (since they maybe\n // be numeric, and `1 + 2 + '3' === '33'`)\n\n if (ordered.length >= 3) {\n var first = ordered[0];\n var third = ordered[2];\n\n if (first.type === 'TemplateElement' && first.value.raw === '' && third.type === 'TemplateElement') {\n ordered.shift();\n }\n }\n\n var parenthesise = (this.quasis.length !== 1 || this.expressions.length !== 0) && this.parent.type !== 'TemplateLiteral' && this.parent.type !== 'AssignmentExpression' && this.parent.type !== 'AssignmentPattern' && this.parent.type !== 'VariableDeclarator' && (this.parent.type !== 'BinaryExpression' || this.parent.operator !== '+');\n\n if (parenthesise) {\n code.appendRight(this.start, '(');\n }\n\n var lastIndex = this.start;\n ordered.forEach(function (node, i) {\n var prefix = i === 0 ? parenthesise ? '(' : '' : ' + ';\n\n if (node.type === 'TemplateElement') {\n code.overwrite(lastIndex, node.end, prefix + JSON.stringify(node.value.cooked));\n } else {\n var parenthesise$1 = node.type !== 'Identifier'; // TODO other cases where it's safe\n\n if (parenthesise$1) {\n prefix += '(';\n }\n\n code.remove(lastIndex, node.start);\n\n if (prefix) {\n code.prependRight(node.start, prefix);\n }\n\n if (parenthesise$1) {\n code.appendLeft(node.end, ')');\n }\n }\n\n lastIndex = node.end;\n });\n\n if (parenthesise) {\n code.appendLeft(lastIndex, ')');\n }\n\n code.overwrite(lastIndex, this.end, \"\", {\n contentOnly: true\n });\n }\n };\n\n return TemplateLiteral;\n}(Node);\n\nvar ThisExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function ThisExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) ThisExpression.__proto__ = Node$$1;\n ThisExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n ThisExpression.prototype.constructor = ThisExpression;\n\n ThisExpression.prototype.initialise = function initialise(transforms) {\n var lexicalBoundary = this.findLexicalBoundary();\n\n if (transforms.letConst) {\n // save all loops up to the lexical boundary in case we need\n // to alias them later for block-scoped declarations\n var node = this.findNearest(loopStatement);\n\n while (node && node.depth > lexicalBoundary.depth) {\n node.thisRefs.push(this);\n node = node.parent.findNearest(loopStatement);\n }\n }\n\n if (transforms.arrow) {\n var arrowFunction = this.findNearest('ArrowFunctionExpression');\n\n if (arrowFunction && arrowFunction.depth > lexicalBoundary.depth) {\n this.alias = lexicalBoundary.getThisAlias();\n }\n }\n };\n\n ThisExpression.prototype.transpile = function transpile(code) {\n if (this.alias) {\n code.overwrite(this.start, this.end, this.alias, {\n storeName: true,\n contentOnly: true\n });\n }\n };\n\n return ThisExpression;\n}(Node);\n\nvar UpdateExpression =\n/*@__PURE__*/\nfunction (Node$$1) {\n function UpdateExpression() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) UpdateExpression.__proto__ = Node$$1;\n UpdateExpression.prototype = Object.create(Node$$1 && Node$$1.prototype);\n UpdateExpression.prototype.constructor = UpdateExpression;\n\n UpdateExpression.prototype.initialise = function initialise(transforms) {\n if (this.argument.type === 'Identifier') {\n var declaration = this.findScope(false).findDeclaration(this.argument.name); // special case – https://gitlab.com/Rich-Harris/buble/issues/150\n\n var statement = declaration && declaration.node.ancestor(3);\n\n if (statement && statement.type === 'ForStatement' && statement.body.contains(this)) {\n statement.reassigned[this.argument.name] = true;\n }\n }\n\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n UpdateExpression.prototype.transpile = function transpile(code, transforms) {\n if (this.argument.type === 'Identifier') {\n // Do this check after everything has been initialized to find\n // shadowing declarations after this expression\n checkConst(this.argument, this.findScope(false));\n }\n\n Node$$1.prototype.transpile.call(this, code, transforms);\n };\n\n return UpdateExpression;\n}(Node);\n\nvar VariableDeclaration =\n/*@__PURE__*/\nfunction (Node$$1) {\n function VariableDeclaration() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) VariableDeclaration.__proto__ = Node$$1;\n VariableDeclaration.prototype = Object.create(Node$$1 && Node$$1.prototype);\n VariableDeclaration.prototype.constructor = VariableDeclaration;\n\n VariableDeclaration.prototype.initialise = function initialise(transforms) {\n this.scope = this.findScope(this.kind === 'var');\n this.declarations.forEach(function (declarator) {\n return declarator.initialise(transforms);\n });\n };\n\n VariableDeclaration.prototype.transpile = function transpile(code, transforms) {\n var this$1 = this;\n var i0 = this.getIndentation();\n var kind = this.kind;\n\n if (transforms.letConst && kind !== 'var') {\n kind = 'var';\n code.overwrite(this.start, this.start + this.kind.length, kind, {\n contentOnly: true,\n storeName: true\n });\n }\n\n if (transforms.destructuring && this.parent.type !== 'ForOfStatement' && this.parent.type !== 'ForInStatement') {\n var c = this.start;\n var lastDeclaratorIsPattern;\n this.declarations.forEach(function (declarator, i) {\n declarator.transpile(code, transforms);\n\n if (declarator.id.type === 'Identifier') {\n if (i > 0 && this$1.declarations[i - 1].id.type !== 'Identifier') {\n code.overwrite(c, declarator.id.start, \"var \");\n }\n } else {\n var inline = loopStatement.test(this$1.parent.type);\n\n if (i === 0) {\n code.remove(c, declarator.id.start);\n } else {\n code.overwrite(c, declarator.id.start, \";\\n\" + i0);\n }\n\n var simple = declarator.init.type === 'Identifier' && !declarator.init.rewritten;\n var name = simple ? declarator.init.alias || declarator.init.name : declarator.findScope(true).createIdentifier('ref');\n c = declarator.start;\n var statementGenerators = [];\n\n if (simple) {\n code.remove(declarator.id.end, declarator.end);\n } else {\n statementGenerators.push(function (start, prefix, suffix) {\n code.prependRight(declarator.id.end, \"var \" + name);\n code.appendLeft(declarator.init.end, \"\" + suffix);\n code.move(declarator.id.end, declarator.end, start);\n });\n }\n\n var scope = declarator.findScope(false);\n destructure(code, function (id) {\n return scope.createIdentifier(id);\n }, function (ref) {\n var name = ref.name;\n return scope.resolveName(name);\n }, declarator.id, name, inline, statementGenerators);\n var prefix = inline ? 'var ' : '';\n var suffix = inline ? \", \" : \";\\n\" + i0;\n statementGenerators.forEach(function (fn, j) {\n if (i === this$1.declarations.length - 1 && j === statementGenerators.length - 1) {\n suffix = inline ? '' : ';';\n }\n\n fn(declarator.start, j === 0 ? prefix : '', suffix);\n });\n }\n\n c = declarator.end;\n lastDeclaratorIsPattern = declarator.id.type !== 'Identifier';\n });\n\n if (lastDeclaratorIsPattern && this.end > c) {\n code.overwrite(c, this.end, '', {\n contentOnly: true\n });\n }\n } else {\n this.declarations.forEach(function (declarator) {\n declarator.transpile(code, transforms);\n });\n }\n };\n\n return VariableDeclaration;\n}(Node);\n\nvar VariableDeclarator =\n/*@__PURE__*/\nfunction (Node$$1) {\n function VariableDeclarator() {\n Node$$1.apply(this, arguments);\n }\n\n if (Node$$1) VariableDeclarator.__proto__ = Node$$1;\n VariableDeclarator.prototype = Object.create(Node$$1 && Node$$1.prototype);\n VariableDeclarator.prototype.constructor = VariableDeclarator;\n\n VariableDeclarator.prototype.initialise = function initialise(transforms) {\n var kind = this.parent.kind;\n\n if (kind === 'let' && this.parent.parent.type === 'ForStatement') {\n kind = 'for.let'; // special case...\n }\n\n this.parent.scope.addDeclaration(this.id, kind);\n Node$$1.prototype.initialise.call(this, transforms);\n };\n\n VariableDeclarator.prototype.transpile = function transpile(code, transforms) {\n if (!this.init && transforms.letConst && this.parent.kind !== 'var') {\n var inLoop = this.findNearest(/Function|^For(In|Of)?Statement|^(?:Do)?WhileStatement/);\n\n if (inLoop && !/Function/.test(inLoop.type) && !this.isLeftDeclaratorOfLoop()) {\n code.appendLeft(this.id.end, ' = (void 0)');\n }\n }\n\n if (this.id) {\n this.id.transpile(code, transforms);\n }\n\n if (this.init) {\n this.init.transpile(code, transforms);\n }\n };\n\n VariableDeclarator.prototype.isLeftDeclaratorOfLoop = function isLeftDeclaratorOfLoop() {\n return this.parent && this.parent.type === 'VariableDeclaration' && this.parent.parent && (this.parent.parent.type === 'ForInStatement' || this.parent.parent.type === 'ForOfStatement') && this.parent.parent.left && this.parent.parent.left.declarations[0] === this;\n };\n\n return VariableDeclarator;\n}(Node);\n\nvar types = {\n ArrayExpression: ArrayExpression,\n ArrowFunctionExpression: ArrowFunctionExpression,\n AssignmentExpression: AssignmentExpression,\n AwaitExpression: AwaitExpression,\n BinaryExpression: BinaryExpression,\n BreakStatement: BreakStatement,\n CallExpression: CallExpression,\n ClassBody: ClassBody,\n ClassDeclaration: ClassDeclaration,\n ClassExpression: ClassExpression,\n ContinueStatement: ContinueStatement,\n DoWhileStatement: LoopStatement,\n ExportNamedDeclaration: ExportNamedDeclaration,\n ExportDefaultDeclaration: ExportDefaultDeclaration,\n ForStatement: ForStatement,\n ForInStatement: ForInStatement,\n ForOfStatement: ForOfStatement,\n FunctionDeclaration: FunctionDeclaration,\n FunctionExpression: FunctionExpression,\n Identifier: Identifier,\n IfStatement: IfStatement,\n Import: Import,\n ImportDeclaration: ImportDeclaration,\n ImportDefaultSpecifier: ImportDefaultSpecifier,\n ImportSpecifier: ImportSpecifier,\n JSXAttribute: JSXAttribute,\n JSXClosingElement: JSXClosingElement,\n JSXClosingFragment: JSXClosingFragment,\n JSXElement: JSXElement,\n JSXExpressionContainer: JSXExpressionContainer,\n JSXFragment: JSXFragment,\n JSXOpeningElement: JSXOpeningElement,\n JSXOpeningFragment: JSXOpeningFragment,\n JSXSpreadAttribute: JSXSpreadAttribute,\n Literal: Literal,\n MemberExpression: MemberExpression,\n NewExpression: NewExpression,\n ObjectExpression: ObjectExpression,\n Property: Property,\n ReturnStatement: ReturnStatement,\n Super: Super,\n TaggedTemplateExpression: TaggedTemplateExpression,\n TemplateElement: TemplateElement,\n TemplateLiteral: TemplateLiteral,\n ThisExpression: ThisExpression,\n UpdateExpression: UpdateExpression,\n VariableDeclaration: VariableDeclaration,\n VariableDeclarator: VariableDeclarator,\n WhileStatement: LoopStatement\n};\nvar keys = {\n Program: ['body'],\n Literal: []\n};\nvar statementsWithBlocks = {\n IfStatement: 'consequent',\n ForStatement: 'body',\n ForInStatement: 'body',\n ForOfStatement: 'body',\n WhileStatement: 'body',\n DoWhileStatement: 'body',\n ArrowFunctionExpression: 'body'\n};\n\nfunction wrap(raw, parent) {\n if (!raw) {\n return;\n }\n\n if ('length' in raw) {\n var i = raw.length;\n\n while (i--) {\n wrap(raw[i], parent);\n }\n\n return;\n } // with e.g. shorthand properties, key and value are\n // the same node. We don't want to wrap an object twice\n\n\n if (raw.__wrapped) {\n return;\n }\n\n raw.__wrapped = true;\n\n if (!keys[raw.type]) {\n keys[raw.type] = Object.keys(raw).filter(function (key) {\n return typeof raw[key] === 'object';\n });\n } // special case – body-less if/for/while statements. TODO others?\n\n\n var bodyType = statementsWithBlocks[raw.type];\n\n if (bodyType && raw[bodyType].type !== 'BlockStatement') {\n var expression = raw[bodyType]; // create a synthetic block statement, otherwise all hell\n // breaks loose when it comes to block scoping\n\n raw[bodyType] = {\n start: expression.start,\n end: expression.end,\n type: 'BlockStatement',\n body: [expression],\n synthetic: true\n };\n }\n\n raw.parent = parent;\n raw.program = parent.program || parent;\n raw.depth = parent.depth + 1;\n raw.keys = keys[raw.type];\n raw.indentation = undefined;\n\n for (var i$1 = 0, list = keys[raw.type]; i$1 < list.length; i$1 += 1) {\n var key = list[i$1];\n wrap(raw[key], raw);\n }\n\n raw.program.magicString.addSourcemapLocation(raw.start);\n raw.program.magicString.addSourcemapLocation(raw.end);\n var type = (raw.type === 'BlockStatement' ? BlockStatement : types[raw.type]) || Node;\n raw.__proto__ = type.prototype;\n}\n\nfunction Program(source, ast, transforms, options) {\n this.type = 'Root'; // options\n\n this.jsx = options.jsx || 'React.createElement';\n this.options = options;\n this.source = source;\n this.magicString = new magic_string__WEBPACK_IMPORTED_MODULE_1__[\"default\"](source);\n this.ast = ast;\n this.depth = 0;\n wrap(this.body = ast, this);\n this.body.__proto__ = BlockStatement.prototype;\n this.templateLiteralQuasis = Object.create(null);\n\n for (var i = 0; i < this.body.body.length; ++i) {\n if (!this.body.body[i].directive) {\n this.prependAt = this.body.body[i].start;\n break;\n }\n }\n\n this.objectWithoutPropertiesHelper = null;\n this.indentExclusionElements = [];\n this.body.initialise(transforms);\n this.indentExclusions = Object.create(null);\n\n for (var i$2 = 0, list = this.indentExclusionElements; i$2 < list.length; i$2 += 1) {\n var node = list[i$2];\n\n for (var i$1 = node.start; i$1 < node.end; i$1 += 1) {\n this.indentExclusions[i$1] = true;\n }\n }\n\n this.body.transpile(this.magicString, transforms);\n}\n\nProgram.prototype = {\n export: function export$1(options) {\n if (options === void 0) options = {};\n return {\n code: this.magicString.toString(),\n map: this.magicString.generateMap({\n file: options.file,\n source: options.source,\n includeContent: options.includeContent !== false\n })\n };\n },\n findNearest: function findNearest() {\n return null;\n },\n findScope: function findScope() {\n return null;\n },\n getObjectWithoutPropertiesHelper: function getObjectWithoutPropertiesHelper(code) {\n if (!this.objectWithoutPropertiesHelper) {\n this.objectWithoutPropertiesHelper = this.body.scope.createIdentifier('objectWithoutProperties');\n code.prependLeft(this.prependAt, \"function \" + this.objectWithoutPropertiesHelper + \" (obj, exclude) { \" + \"var target = {}; for (var k in obj) \" + \"if (Object.prototype.hasOwnProperty.call(obj, k) && exclude.indexOf(k) === -1) \" + \"target[k] = obj[k]; return target; }\\n\");\n }\n\n return this.objectWithoutPropertiesHelper;\n }\n};\nvar matrix = {\n chrome: {\n 48: 610719,\n 49: 652287,\n 50: 783359,\n 51: 783359,\n 52: 1045503,\n 53: 1045503,\n 54: 1045503,\n 55: 3142655,\n 56: 3142655,\n 57: 3142655,\n 58: 4191231,\n 59: 4191231,\n 60: 8385535,\n 61: 8385535,\n 62: 8385535,\n 63: 8385535,\n 64: 8385535,\n 65: 8385535,\n 66: 8385535,\n 67: 8385535,\n 68: 8385535,\n 69: 8385535,\n 70: 8385535,\n 71: 8385535\n },\n firefox: {\n 43: 643515,\n 44: 643515,\n 45: 643519,\n 46: 774591,\n 47: 774655,\n 48: 774655,\n 49: 774655,\n 50: 774655,\n 51: 775167,\n 52: 4191231,\n 53: 4191231,\n 54: 4191231,\n 55: 8385535,\n 56: 8385535,\n 57: 8385535,\n 58: 8385535,\n 59: 8385535,\n 60: 8385535,\n 61: 8385535,\n 62: 8385535,\n 63: 8385535,\n 64: 8385535\n },\n safari: {\n 8: 524297,\n 9: 594141,\n 10: 1831935,\n '10.1': 4191231,\n 11: 4191231,\n '11.1': 8385535,\n 12: 8385535\n },\n ie: {\n 8: 0,\n 9: 524289,\n 10: 524289,\n 11: 524289 // no let/const in for loops\n\n },\n edge: {\n 12: 610459,\n 13: 774559,\n 14: 2085887,\n 15: 4183039,\n 16: 4183039,\n 17: 4183039,\n 18: 4183039,\n 19: 4183039\n },\n node: {\n '0.10': 524289,\n '0.12': 524417,\n 4: 594335,\n 5: 594335,\n 6: 783359,\n 8: 4191231,\n '8.3': 8385535,\n '8.7': 8385535,\n '8.10': 8385535\n }\n};\nvar features = ['getterSetter', 'arrow', 'classes', 'computedProperty', 'conciseMethodProperty', 'defaultParameter', 'destructuring', 'forOf', 'generator', 'letConst', 'moduleExport', 'moduleImport', 'numericLiteral', 'parameterDestructuring', 'spreadRest', 'stickyRegExp', 'templateString', 'unicodeRegExp', // ES2016\n'exponentiation', // additional transforms, not from\n// https://featuretests.io\n'reservedProperties', 'trailingFunctionCommas', 'asyncAwait', 'objectRestSpread'];\nvar version = \"0.19.7\";\nvar parser = acorn__WEBPACK_IMPORTED_MODULE_2__[\"Parser\"].extend(acorn_dynamic_import__WEBPACK_IMPORTED_MODULE_4___default.a, acorn_jsx__WEBPACK_IMPORTED_MODULE_3___default()());\nvar dangerousTransforms = ['dangerousTaggedTemplateString', 'dangerousForOf'];\n\nfunction target(target) {\n var targets = Object.keys(target);\n var bitmask = targets.length ? 8388607 : 524289;\n Object.keys(target).forEach(function (environment) {\n var versions = matrix[environment];\n\n if (!versions) {\n throw new Error(\"Unknown environment '\" + environment + \"'. Please raise an issue at https://github.com/bublejs/buble/issues\");\n }\n\n var targetVersion = target[environment];\n\n if (!(targetVersion in versions)) {\n throw new Error(\"Support data exists for the following versions of \" + environment + \": \" + Object.keys(versions).join(', ') + \". Please raise an issue at https://github.com/bublejs/buble/issues\");\n }\n\n var support = versions[targetVersion];\n bitmask &= support;\n });\n var transforms = Object.create(null);\n features.forEach(function (name, i) {\n transforms[name] = !(bitmask & 1 << i);\n });\n dangerousTransforms.forEach(function (name) {\n transforms[name] = false;\n });\n return transforms;\n}\n\nfunction transform(source, options) {\n if (options === void 0) options = {};\n var ast;\n var jsx = null;\n\n try {\n ast = parser.parse(source, {\n ecmaVersion: 10,\n preserveParens: true,\n sourceType: 'module',\n allowAwaitOutsideFunction: true,\n allowReturnOutsideFunction: true,\n onComment: function onComment(block, text) {\n if (!jsx) {\n var match = /@jsx\\s+([^\\s]+)/.exec(text);\n\n if (match) {\n jsx = match[1];\n }\n }\n }\n });\n options.jsx = jsx || options.jsx;\n } catch (err) {\n err.snippet = getSnippet(source, err.loc);\n\n err.toString = function () {\n return err.name + \": \" + err.message + \"\\n\" + err.snippet;\n };\n\n throw err;\n }\n\n var transforms = target(options.target || {});\n Object.keys(options.transforms || {}).forEach(function (name) {\n if (name === 'modules') {\n if (!('moduleImport' in options.transforms)) {\n transforms.moduleImport = options.transforms.modules;\n }\n\n if (!('moduleExport' in options.transforms)) {\n transforms.moduleExport = options.transforms.modules;\n }\n\n return;\n }\n\n if (!(name in transforms)) {\n throw new Error(\"Unknown transform '\" + name + \"'\");\n }\n\n transforms[name] = options.transforms[name];\n });\n\n if (options.objectAssign === true) {\n options.objectAssign = 'Object.assign';\n }\n\n return new Program(source, ast, transforms, options).export(options);\n}\n\n\n\n//# sourceURL=webpack:///./node_modules/buble/dist/buble-browser.es.js?"); /***/ }), @@ -5699,9 +5759,9 @@ eval("var path = __webpack_require__(/*! ../internals/path */ \"./node_modules/c !*** ./node_modules/core-js/internals/global.js ***! \**************************************************/ /*! no static exports found */ -/***/ (function(module, exports) { +/***/ (function(module, exports, __webpack_require__) { -eval("// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports = typeof window == 'object' && window && window.Math == Math ? window : typeof self == 'object' && self && self.Math == Math ? self // eslint-disable-next-line no-new-func\n: Function('return this')();\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/global.js?"); +eval("/* WEBPACK VAR INJECTION */(function(global) {var O = 'object';\n\nvar check = function check(it) {\n return it && it.Math == Math && it;\n}; // https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\n\n\nmodule.exports = // eslint-disable-next-line no-undef\ncheck(typeof globalThis == O && globalThis) || check(typeof window == O && window) || check(typeof self == O && self) || check(typeof global == O && global) || // eslint-disable-next-line no-new-func\nFunction('return this')();\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/global.js?"); /***/ }), @@ -5734,7 +5794,7 @@ eval("module.exports = {};\n\n//# sourceURL=webpack:///./node_modules/core-js/in /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("var definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\") ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/hide.js?"); +eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/hide.js?"); /***/ }), @@ -5756,7 +5816,7 @@ eval("var document = __webpack_require__(/*! ../internals/global */ \"./node_mod /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Thank's IE8 for his funny defineProperty\nmodule.exports = !__webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\") && !__webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\")(function () {\n return Object.defineProperty(__webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\")('div'), 'a', {\n get: function get() {\n return 7;\n }\n }).a != 7;\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/ie8-dom-define.js?"); +eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar createElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\"); // Thank's IE8 for his funny defineProperty\n\n\nmodule.exports = !DESCRIPTORS && !fails(function () {\n return Object.defineProperty(createElement('div'), 'a', {\n get: function get() {\n return 7;\n }\n }).a != 7;\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/ie8-dom-define.js?"); /***/ }), @@ -5789,7 +5849,7 @@ eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("var METADATA = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\")('meta');\n\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \"./node_modules/core-js/internals/freezing.js\");\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\n\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function setMetadata(it) {\n defineProperty(it, METADATA, {\n value: {\n objectID: 'O' + ++id,\n // object ID\n weakData: {} // weak collections IDs\n\n }\n });\n};\n\nvar fastKey = function fastKey(it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F'; // not necessary to add metadata\n\n if (!create) return 'E'; // add missing metadata\n\n setMetadata(it); // return object ID\n }\n\n return it[METADATA].objectID;\n};\n\nvar getWeakData = function getWeakData(it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true; // not necessary to add metadata\n\n if (!create) return false; // add missing metadata\n\n setMetadata(it); // return the store of weak collections IDs\n }\n\n return it[METADATA].weakData;\n}; // add metadata on freeze-family methods calling\n\n\nvar onFreeze = function onFreeze(it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\n__webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\")[METADATA] = true;\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/internal-metadata.js?"); +eval("var METADATA = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\")('meta');\n\nvar FREEZING = __webpack_require__(/*! ../internals/freezing */ \"./node_modules/core-js/internals/freezing.js\");\n\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\n\nvar id = 0;\n\nvar isExtensible = Object.isExtensible || function () {\n return true;\n};\n\nvar setMetadata = function setMetadata(it) {\n defineProperty(it, METADATA, {\n value: {\n objectID: 'O' + ++id,\n // object ID\n weakData: {} // weak collections IDs\n\n }\n });\n};\n\nvar fastKey = function fastKey(it, create) {\n // return a primitive with prefix\n if (!isObject(it)) return typeof it == 'symbol' ? it : (typeof it == 'string' ? 'S' : 'P') + it;\n\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return 'F'; // not necessary to add metadata\n\n if (!create) return 'E'; // add missing metadata\n\n setMetadata(it); // return object ID\n }\n\n return it[METADATA].objectID;\n};\n\nvar getWeakData = function getWeakData(it, create) {\n if (!has(it, METADATA)) {\n // can't set metadata to uncaught frozen object\n if (!isExtensible(it)) return true; // not necessary to add metadata\n\n if (!create) return false; // add missing metadata\n\n setMetadata(it); // return the store of weak collections IDs\n }\n\n return it[METADATA].weakData;\n}; // add metadata on freeze-family methods calling\n\n\nvar onFreeze = function onFreeze(it) {\n if (FREEZING && meta.REQUIRED && isExtensible(it) && !has(it, METADATA)) setMetadata(it);\n return it;\n};\n\nvar meta = module.exports = {\n REQUIRED: false,\n fastKey: fastKey,\n getWeakData: getWeakData,\n onFreeze: onFreeze\n};\nhiddenKeys[METADATA] = true;\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/internal-metadata.js?"); /***/ }), @@ -5866,7 +5926,7 @@ eval("var isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_ /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// Chrome 38 Symbol has incorrect toString conversion\nmodule.exports = !__webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\")(function () {\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/native-symbol.js?"); +eval("var fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n // Chrome 38 Symbol has incorrect toString conversion\n // eslint-disable-next-line no-undef\n return !String(Symbol());\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/native-symbol.js?"); /***/ }), @@ -5889,7 +5949,7 @@ eval("var nativeFunctionToString = __webpack_require__(/*! ../internals/function /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval(" // 19.1.2.1 Object.assign(target, source, ...)\n\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\n\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\n\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\n\nvar nativeAssign = Object.assign; // should work with symbols and should have deterministic property order (V8 bug)\n\nmodule.exports = !nativeAssign || __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\")(function () {\n var A = {};\n var B = {}; // eslint-disable-next-line no-undef\n\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) {\n B[chr] = chr;\n });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) {\n // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n\n while (length > j) {\n if (propertyIsEnumerable.call(S, key = keys[j++])) T[key] = S[key];\n }\n }\n\n return T;\n} : nativeAssign;\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/object-assign.js?"); +eval(" // 19.1.2.1 Object.assign(target, source, ...)\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\n\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\n\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar IndexedObject = __webpack_require__(/*! ../internals/indexed-object */ \"./node_modules/core-js/internals/indexed-object.js\");\n\nvar nativeAssign = Object.assign; // should work with symbols and should have deterministic property order (V8 bug)\n\nmodule.exports = !nativeAssign || fails(function () {\n var A = {};\n var B = {}; // eslint-disable-next-line no-undef\n\n var symbol = Symbol();\n var alphabet = 'abcdefghijklmnopqrst';\n A[symbol] = 7;\n alphabet.split('').forEach(function (chr) {\n B[chr] = chr;\n });\n return nativeAssign({}, A)[symbol] != 7 || objectKeys(nativeAssign({}, B)).join('') != alphabet;\n}) ? function assign(target, source) {\n // eslint-disable-line no-unused-vars\n var T = toObject(target);\n var argumentsLength = arguments.length;\n var index = 1;\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n var propertyIsEnumerable = propertyIsEnumerableModule.f;\n\n while (argumentsLength > index) {\n var S = IndexedObject(arguments[index++]);\n var keys = getOwnPropertySymbols ? objectKeys(S).concat(getOwnPropertySymbols(S)) : objectKeys(S);\n var length = keys.length;\n var j = 0;\n var key;\n\n while (length > j) {\n key = keys[j++];\n if (!DESCRIPTORS || propertyIsEnumerable.call(S, key)) T[key] = S[key];\n }\n }\n\n return T;\n} : nativeAssign;\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/object-assign.js?"); /***/ }), @@ -5900,7 +5960,7 @@ eval(" // 19.1.2.1 Object.assign(target, source, ...)\n\nvar objectKeys = __webp /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\n\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\n\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\nvar IE_PROTO = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\")('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\n\nvar Empty = function Empty() {\n /* empty */\n}; // Create object with fake `null` prototype: use iframe Object with cleared prototype\n\n\nvar _createDict = function createDict() {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n _createDict = iframeDocument.F;\n\n while (length--) {\n delete _createDict[PROTOTYPE][enumBugKeys[length]];\n }\n\n return _createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null; // add \"__proto__\" for Object.getPrototypeOf polyfill\n\n result[IE_PROTO] = O;\n } else result = _createDict();\n\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\n__webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\")[IE_PROTO] = true;\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/object-create.js?"); +eval("// 19.1.2.2 / 15.2.3.5 Object.create(O [, Properties])\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar defineProperties = __webpack_require__(/*! ../internals/object-define-properties */ \"./node_modules/core-js/internals/object-define-properties.js\");\n\nvar enumBugKeys = __webpack_require__(/*! ../internals/enum-bug-keys */ \"./node_modules/core-js/internals/enum-bug-keys.js\");\n\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar html = __webpack_require__(/*! ../internals/html */ \"./node_modules/core-js/internals/html.js\");\n\nvar documentCreateElement = __webpack_require__(/*! ../internals/document-create-element */ \"./node_modules/core-js/internals/document-create-element.js\");\n\nvar IE_PROTO = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\")('IE_PROTO');\n\nvar PROTOTYPE = 'prototype';\n\nvar Empty = function Empty() {\n /* empty */\n}; // Create object with fake `null` prototype: use iframe Object with cleared prototype\n\n\nvar _createDict = function createDict() {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var length = enumBugKeys.length;\n var lt = '<';\n var script = 'script';\n var gt = '>';\n var js = 'java' + script + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n iframe.src = String(js);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(lt + script + gt + 'document.F=Object' + lt + '/' + script + gt);\n iframeDocument.close();\n _createDict = iframeDocument.F;\n\n while (length--) {\n delete _createDict[PROTOTYPE][enumBugKeys[length]];\n }\n\n return _createDict();\n};\n\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n\n if (O !== null) {\n Empty[PROTOTYPE] = anObject(O);\n result = new Empty();\n Empty[PROTOTYPE] = null; // add \"__proto__\" for Object.getPrototypeOf polyfill\n\n result[IE_PROTO] = O;\n } else result = _createDict();\n\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/object-create.js?"); /***/ }), @@ -6056,7 +6116,7 @@ eval("module.exports = __webpack_require__(/*! ../internals/global */ \"./node_m /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\n\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\n\n__webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\")('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n\n if (O === global) {\n if (simple) O[key] = value;else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n\n if (simple) O[key] = value;else hide(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/redefine.js?"); +eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\n\nvar nativeFunctionToString = __webpack_require__(/*! ../internals/function-to-string */ \"./node_modules/core-js/internals/function-to-string.js\");\n\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(nativeFunctionToString).split('toString');\nshared('inspectSource', function (it) {\n return nativeFunctionToString.call(it);\n});\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) hide(value, 'name', key);\n enforceInternalState(value).source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n\n if (O === global) {\n if (simple) O[key] = value;else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n\n if (simple) O[key] = value;else hide(O, key, value); // add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || nativeFunctionToString.call(this);\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/redefine.js?"); /***/ }), @@ -6169,7 +6229,7 @@ eval("var shared = __webpack_require__(/*! ../internals/shared */ \"./node_modul /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.0.1',\n mode: __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\") ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/shared.js?"); +eval("var global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar setGlobal = __webpack_require__(/*! ../internals/set-global */ \"./node_modules/core-js/internals/set-global.js\");\n\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.1.2',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2019 Denis Pushkarev (zloirock.ru)'\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/internals/shared.js?"); /***/ }), @@ -6461,7 +6521,7 @@ eval("var DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./ /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar flags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar TO_STRING = 'toString';\nvar nativeToString = /./[TO_STRING];\nvar NOT_GENERIC = fails(function () {\n return nativeToString.call({\n source: 'a',\n flags: 'b'\n }) != '/a/b';\n}); // FF44- RegExp#toString has a wrong name\n\nvar INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\nif (NOT_GENERIC || INCORRECT_NAME) {\n __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\")(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n return '/'.concat(R.source, '/', 'flags' in R ? R.flags : !DESCRIPTORS && R instanceof RegExp ? flags.call(R) : undefined);\n }, {\n unsafe: true\n });\n}\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.regexp.to-string.js?"); +eval("\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar flags = __webpack_require__(/*! ../internals/regexp-flags */ \"./node_modules/core-js/internals/regexp-flags.js\");\n\nvar TO_STRING = 'toString';\nvar nativeToString = /./[TO_STRING];\nvar RegExpPrototype = RegExp.prototype;\nvar NOT_GENERIC = fails(function () {\n return nativeToString.call({\n source: 'a',\n flags: 'b'\n }) != '/a/b';\n}); // FF44- RegExp#toString has a wrong name\n\nvar INCORRECT_NAME = nativeToString.name != TO_STRING; // `RegExp.prototype.toString` method\n// https://tc39.github.io/ecma262/#sec-regexp.prototype.tostring\n\nif (NOT_GENERIC || INCORRECT_NAME) {\n __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\")(RegExp.prototype, TO_STRING, function toString() {\n var R = anObject(this);\n var p = String(R.source);\n var rf = R.flags;\n var f = String(rf === undefined && R instanceof RegExp && !('flags' in RegExpPrototype) ? flags.call(R) : rf);\n return '/' + p + '/' + f;\n }, {\n unsafe: true\n });\n}\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.regexp.to-string.js?"); /***/ }), @@ -6509,7 +6569,7 @@ eval("\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./n /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\n\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&`']|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&`']|\\d\\d?)/g;\n\nvar maybeToString = function maybeToString(it) {\n return it === undefined ? it : String(it);\n}; // @@replace logic\n\n\n__webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\")('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [// `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue);\n }, // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n\n var results = [];\n\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = []; // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\n for (var j = 1; j < result.length; j++) {\n captures.push(maybeToString(result[j]));\n }\n\n var namedCaptures = result.groups;\n\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n\n return accumulatedResult + S.slice(nextSourcePosition);\n }]; // https://tc39.github.io/ecma262/#sec-getsubstitution\n\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n\n switch (ch.charAt(0)) {\n case '$':\n return '$';\n\n case '&':\n return matched;\n\n case '`':\n return str.slice(0, position);\n\n case \"'\":\n return str.slice(tailPos);\n\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n\n default:\n // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n\n capture = captures[n - 1];\n }\n\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.string.replace.js?"); +eval("\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar toLength = __webpack_require__(/*! ../internals/to-length */ \"./node_modules/core-js/internals/to-length.js\");\n\nvar toInteger = __webpack_require__(/*! ../internals/to-integer */ \"./node_modules/core-js/internals/to-integer.js\");\n\nvar requireObjectCoercible = __webpack_require__(/*! ../internals/require-object-coercible */ \"./node_modules/core-js/internals/require-object-coercible.js\");\n\nvar advanceStringIndex = __webpack_require__(/*! ../internals/advance-string-index */ \"./node_modules/core-js/internals/advance-string-index.js\");\n\nvar regExpExec = __webpack_require__(/*! ../internals/regexp-exec-abstract */ \"./node_modules/core-js/internals/regexp-exec-abstract.js\");\n\nvar max = Math.max;\nvar min = Math.min;\nvar floor = Math.floor;\nvar SUBSTITUTION_SYMBOLS = /\\$([$&'`]|\\d\\d?|<[^>]*>)/g;\nvar SUBSTITUTION_SYMBOLS_NO_NAMED = /\\$([$&'`]|\\d\\d?)/g;\n\nvar maybeToString = function maybeToString(it) {\n return it === undefined ? it : String(it);\n}; // @@replace logic\n\n\n__webpack_require__(/*! ../internals/fix-regexp-well-known-symbol-logic */ \"./node_modules/core-js/internals/fix-regexp-well-known-symbol-logic.js\")('replace', 2, function (REPLACE, nativeReplace, maybeCallNative) {\n return [// `String.prototype.replace` method\n // https://tc39.github.io/ecma262/#sec-string.prototype.replace\n function replace(searchValue, replaceValue) {\n var O = requireObjectCoercible(this);\n var replacer = searchValue == undefined ? undefined : searchValue[REPLACE];\n return replacer !== undefined ? replacer.call(searchValue, O, replaceValue) : nativeReplace.call(String(O), searchValue, replaceValue);\n }, // `RegExp.prototype[@@replace]` method\n // https://tc39.github.io/ecma262/#sec-regexp.prototype-@@replace\n function (regexp, replaceValue) {\n var res = maybeCallNative(nativeReplace, regexp, this, replaceValue);\n if (res.done) return res.value;\n var rx = anObject(regexp);\n var S = String(this);\n var functionalReplace = typeof replaceValue === 'function';\n if (!functionalReplace) replaceValue = String(replaceValue);\n var global = rx.global;\n\n if (global) {\n var fullUnicode = rx.unicode;\n rx.lastIndex = 0;\n }\n\n var results = [];\n\n while (true) {\n var result = regExpExec(rx, S);\n if (result === null) break;\n results.push(result);\n if (!global) break;\n var matchStr = String(result[0]);\n if (matchStr === '') rx.lastIndex = advanceStringIndex(S, toLength(rx.lastIndex), fullUnicode);\n }\n\n var accumulatedResult = '';\n var nextSourcePosition = 0;\n\n for (var i = 0; i < results.length; i++) {\n result = results[i];\n var matched = String(result[0]);\n var position = max(min(toInteger(result.index), S.length), 0);\n var captures = []; // NOTE: This is equivalent to\n // captures = result.slice(1).map(maybeToString)\n // but for some reason `nativeSlice.call(result, 1, result.length)` (called in\n // the slice polyfill when slicing native arrays) \"doesn't work\" in safari 9 and\n // causes a crash (https://pastebin.com/N21QzeQA) when trying to debug it.\n\n for (var j = 1; j < result.length; j++) {\n captures.push(maybeToString(result[j]));\n }\n\n var namedCaptures = result.groups;\n\n if (functionalReplace) {\n var replacerArgs = [matched].concat(captures, position, S);\n if (namedCaptures !== undefined) replacerArgs.push(namedCaptures);\n var replacement = String(replaceValue.apply(undefined, replacerArgs));\n } else {\n replacement = getSubstitution(matched, S, position, captures, namedCaptures, replaceValue);\n }\n\n if (position >= nextSourcePosition) {\n accumulatedResult += S.slice(nextSourcePosition, position) + replacement;\n nextSourcePosition = position + matched.length;\n }\n }\n\n return accumulatedResult + S.slice(nextSourcePosition);\n }]; // https://tc39.github.io/ecma262/#sec-getsubstitution\n\n function getSubstitution(matched, str, position, captures, namedCaptures, replacement) {\n var tailPos = position + matched.length;\n var m = captures.length;\n var symbols = SUBSTITUTION_SYMBOLS_NO_NAMED;\n\n if (namedCaptures !== undefined) {\n namedCaptures = toObject(namedCaptures);\n symbols = SUBSTITUTION_SYMBOLS;\n }\n\n return nativeReplace.call(replacement, symbols, function (match, ch) {\n var capture;\n\n switch (ch.charAt(0)) {\n case '$':\n return '$';\n\n case '&':\n return matched;\n\n case '`':\n return str.slice(0, position);\n\n case \"'\":\n return str.slice(tailPos);\n\n case '<':\n capture = namedCaptures[ch.slice(1, -1)];\n break;\n\n default:\n // \\d\\d?\n var n = +ch;\n if (n === 0) return match;\n\n if (n > m) {\n var f = floor(n / 10);\n if (f === 0) return match;\n if (f <= m) return captures[f - 1] === undefined ? ch.charAt(1) : captures[f - 1] + ch.charAt(1);\n return match;\n }\n\n capture = captures[n - 1];\n }\n\n return capture === undefined ? '' : capture;\n });\n }\n});\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.string.replace.js?"); /***/ }), @@ -6569,7 +6629,7 @@ eval("\n\nvar internalStringTrim = __webpack_require__(/*! ../internals/string-t /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\n\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\n\nvar NativeSymbol = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\").Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || // Safari 12 bug\nNativeSymbol().description !== undefined)) {\n var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description\n\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\")({\n global: true,\n forced: true\n }, {\n Symbol: SymbolWrapper\n });\n}\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.symbol.description.js?"); +eval("// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma262/#sec-symbol.prototype.description\n\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar defineProperty = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\").f;\n\nvar copyConstructorProperties = __webpack_require__(/*! ../internals/copy-constructor-properties */ \"./node_modules/core-js/internals/copy-constructor-properties.js\");\n\nvar NativeSymbol = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\").Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) || // Safari 12 bug\nNativeSymbol().description !== undefined)) {\n var EmptyStringDescriptionStore = {}; // wrap Symbol constructor for correct work with undefined description\n\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper ? new NativeSymbol(description) // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n var symbolToString = symbolPrototype.toString;\n\n var _native = String(NativeSymbol('test')) == 'Symbol(test)';\n\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = _native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\")({\n global: true,\n forced: true\n }, {\n Symbol: SymbolWrapper\n });\n}\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.symbol.description.js?"); /***/ }), @@ -6581,7 +6641,7 @@ eval("// `Symbol.prototype.description` getter\n// https://tc39.github.io/ecma26 /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval(" // ECMAScript 6 symbols shim\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar $export = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\n\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\n\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\n\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/wrapped-well-known-symbol */ \"./node_modules/core-js/internals/wrapped-well-known-symbol.js\");\n\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/define-well-known-symbol */ \"./node_modules/core-js/internals/define-well-known-symbol.js\");\n\nvar enumKeys = __webpack_require__(/*! ../internals/enum-keys */ \"./node_modules/core-js/internals/enum-keys.js\");\n\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nvar nativeObjectCreate = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\n\nvar getOwnPropertyNamesExternal = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \"./node_modules/core-js/internals/object-get-own-property-names-external.js\");\n\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\n\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\n\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nvar HIDDEN = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\")('hidden');\n\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar SYMBOL = 'Symbol';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\nvar ObjectPrototype = Object[PROTOTYPE];\nvar QObject = global.QObject;\n\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\"); // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\n\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function get() {\n return nativeDefineProperty(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n}) ? function (it, key, D) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, key);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[key];\n nativeDefineProperty(it, key, D);\n\n if (ObjectPrototypeDescriptor && it !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, key, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function wrap(tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) nativeDefineProperty(it, HIDDEN, createPropertyDescriptor(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = nativeObjectCreate(D, {\n enumerable: createPropertyDescriptor(0, false)\n });\n }\n\n return setSymbolDescriptor(it, key, D);\n }\n\n return nativeDefineProperty(it, key, D);\n};\n\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIndexedObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n\n while (l > i) {\n $defineProperty(it, key = keys[i++], P[key]);\n }\n\n return it;\n};\n\nvar $create = function create(it, P) {\n return P === undefined ? nativeObjectCreate(it) : $defineProperties(nativeObjectCreate(it), P);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = nativePropertyIsEnumerable.call(this, key = toPrimitive(key, true));\n if (this === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIndexedObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var D = nativeGetOwnPropertyDescriptor(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && !has(hiddenKeys, key)) result.push(key);\n }\n\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OP ? ObjectPrototypeSymbols : toIndexedObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectPrototype, key) : true)) result.push(AllSymbols[key]);\n }\n\n return result;\n}; // `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\n\n\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n\n var setter = function setter(value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, {\n configurable: true,\n set: setter\n });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\").f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, {\n unsafe: true\n });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$export({\n global: true,\n wrap: true,\n forced: !NATIVE_SYMBOL,\n sham: !NATIVE_SYMBOL\n}, {\n Symbol: $Symbol\n});\n\nfor (var wellKnownSymbols = objectKeys(WellKnownSymbolsStore), k = 0; wellKnownSymbols.length > k;) {\n defineWellKnownSymbol(wellKnownSymbols[k++]);\n}\n\n$export({\n target: SYMBOL,\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function _for(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n\n for (var key in SymbolRegistry) {\n if (SymbolRegistry[key] === sym) return key;\n }\n },\n useSetter: function useSetter() {\n USE_SETTER = true;\n },\n useSimple: function useSimple() {\n USE_SETTER = false;\n }\n});\n$export({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL,\n sham: !DESCRIPTORS\n}, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n$export({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n}); // `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\n\nJSON && $export({\n target: 'JSON',\n stat: true,\n forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {}\n\n return nativeJSONStringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({\n a: symbol\n }) != '{}' // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n })\n}, {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n\n while (arguments.length > i) {\n args.push(arguments[i++]);\n }\n\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n\n if (!isArray(replacer)) replacer = function replacer(key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n}); // `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\n\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\n\nsetToStringTag($Symbol, SYMBOL);\nhiddenKeys[HIDDEN] = true;\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.symbol.js?"); +eval(" // ECMAScript 6 symbols shim\n\nvar global = __webpack_require__(/*! ../internals/global */ \"./node_modules/core-js/internals/global.js\");\n\nvar has = __webpack_require__(/*! ../internals/has */ \"./node_modules/core-js/internals/has.js\");\n\nvar DESCRIPTORS = __webpack_require__(/*! ../internals/descriptors */ \"./node_modules/core-js/internals/descriptors.js\");\n\nvar IS_PURE = __webpack_require__(/*! ../internals/is-pure */ \"./node_modules/core-js/internals/is-pure.js\");\n\nvar $export = __webpack_require__(/*! ../internals/export */ \"./node_modules/core-js/internals/export.js\");\n\nvar redefine = __webpack_require__(/*! ../internals/redefine */ \"./node_modules/core-js/internals/redefine.js\");\n\nvar hiddenKeys = __webpack_require__(/*! ../internals/hidden-keys */ \"./node_modules/core-js/internals/hidden-keys.js\");\n\nvar fails = __webpack_require__(/*! ../internals/fails */ \"./node_modules/core-js/internals/fails.js\");\n\nvar shared = __webpack_require__(/*! ../internals/shared */ \"./node_modules/core-js/internals/shared.js\");\n\nvar setToStringTag = __webpack_require__(/*! ../internals/set-to-string-tag */ \"./node_modules/core-js/internals/set-to-string-tag.js\");\n\nvar uid = __webpack_require__(/*! ../internals/uid */ \"./node_modules/core-js/internals/uid.js\");\n\nvar wellKnownSymbol = __webpack_require__(/*! ../internals/well-known-symbol */ \"./node_modules/core-js/internals/well-known-symbol.js\");\n\nvar wrappedWellKnownSymbolModule = __webpack_require__(/*! ../internals/wrapped-well-known-symbol */ \"./node_modules/core-js/internals/wrapped-well-known-symbol.js\");\n\nvar defineWellKnownSymbol = __webpack_require__(/*! ../internals/define-well-known-symbol */ \"./node_modules/core-js/internals/define-well-known-symbol.js\");\n\nvar enumKeys = __webpack_require__(/*! ../internals/enum-keys */ \"./node_modules/core-js/internals/enum-keys.js\");\n\nvar isArray = __webpack_require__(/*! ../internals/is-array */ \"./node_modules/core-js/internals/is-array.js\");\n\nvar anObject = __webpack_require__(/*! ../internals/an-object */ \"./node_modules/core-js/internals/an-object.js\");\n\nvar isObject = __webpack_require__(/*! ../internals/is-object */ \"./node_modules/core-js/internals/is-object.js\");\n\nvar toObject = __webpack_require__(/*! ../internals/to-object */ \"./node_modules/core-js/internals/to-object.js\");\n\nvar toIndexedObject = __webpack_require__(/*! ../internals/to-indexed-object */ \"./node_modules/core-js/internals/to-indexed-object.js\");\n\nvar toPrimitive = __webpack_require__(/*! ../internals/to-primitive */ \"./node_modules/core-js/internals/to-primitive.js\");\n\nvar createPropertyDescriptor = __webpack_require__(/*! ../internals/create-property-descriptor */ \"./node_modules/core-js/internals/create-property-descriptor.js\");\n\nvar nativeObjectCreate = __webpack_require__(/*! ../internals/object-create */ \"./node_modules/core-js/internals/object-create.js\");\n\nvar getOwnPropertyNamesExternal = __webpack_require__(/*! ../internals/object-get-own-property-names-external */ \"./node_modules/core-js/internals/object-get-own-property-names-external.js\");\n\nvar getOwnPropertyDescriptorModule = __webpack_require__(/*! ../internals/object-get-own-property-descriptor */ \"./node_modules/core-js/internals/object-get-own-property-descriptor.js\");\n\nvar definePropertyModule = __webpack_require__(/*! ../internals/object-define-property */ \"./node_modules/core-js/internals/object-define-property.js\");\n\nvar propertyIsEnumerableModule = __webpack_require__(/*! ../internals/object-property-is-enumerable */ \"./node_modules/core-js/internals/object-property-is-enumerable.js\");\n\nvar hide = __webpack_require__(/*! ../internals/hide */ \"./node_modules/core-js/internals/hide.js\");\n\nvar objectKeys = __webpack_require__(/*! ../internals/object-keys */ \"./node_modules/core-js/internals/object-keys.js\");\n\nvar HIDDEN = __webpack_require__(/*! ../internals/shared-key */ \"./node_modules/core-js/internals/shared-key.js\")('hidden');\n\nvar InternalStateModule = __webpack_require__(/*! ../internals/internal-state */ \"./node_modules/core-js/internals/internal-state.js\");\n\nvar SYMBOL = 'Symbol';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\n\nvar getOwnPropertySymbolsModule = __webpack_require__(/*! ../internals/object-get-own-property-symbols */ \"./node_modules/core-js/internals/object-get-own-property-symbols.js\");\n\nvar $Symbol = global.Symbol;\nvar JSON = global.JSON;\nvar nativeJSONStringify = JSON && JSON.stringify;\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar SymbolRegistry = shared('symbol-registry');\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar WellKnownSymbolsStore = shared('wks');\nvar ObjectPrototype = Object[PROTOTYPE];\nvar QObject = global.QObject;\n\nvar NATIVE_SYMBOL = __webpack_require__(/*! ../internals/native-symbol */ \"./node_modules/core-js/internals/native-symbol.js\"); // Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\n\n\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild; // fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\n\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function get() {\n return nativeDefineProperty(this, 'a', {\n value: 7\n }).a;\n }\n })).a != 7;\n}) ? function (it, key, D) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, key);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[key];\n nativeDefineProperty(it, key, D);\n\n if (ObjectPrototypeDescriptor && it !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, key, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function wrap(tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar isSymbol = NATIVE_SYMBOL && typeof $Symbol.iterator == 'symbol' ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n return Object(it) instanceof $Symbol;\n};\n\nvar $defineProperty = function defineProperty(it, key, D) {\n if (it === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, key, D);\n anObject(it);\n key = toPrimitive(key, true);\n anObject(D);\n\n if (has(AllSymbols, key)) {\n if (!D.enumerable) {\n if (!has(it, HIDDEN)) nativeDefineProperty(it, HIDDEN, createPropertyDescriptor(1, {}));\n it[HIDDEN][key] = true;\n } else {\n if (has(it, HIDDEN) && it[HIDDEN][key]) it[HIDDEN][key] = false;\n D = nativeObjectCreate(D, {\n enumerable: createPropertyDescriptor(0, false)\n });\n }\n\n return setSymbolDescriptor(it, key, D);\n }\n\n return nativeDefineProperty(it, key, D);\n};\n\nvar $defineProperties = function defineProperties(it, P) {\n anObject(it);\n var keys = enumKeys(P = toIndexedObject(P));\n var i = 0;\n var l = keys.length;\n var key;\n\n while (l > i) {\n $defineProperty(it, key = keys[i++], P[key]);\n }\n\n return it;\n};\n\nvar $create = function create(it, P) {\n return P === undefined ? nativeObjectCreate(it) : $defineProperties(nativeObjectCreate(it), P);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(key) {\n var E = nativePropertyIsEnumerable.call(this, key = toPrimitive(key, true));\n if (this === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return false;\n return E || !has(this, key) || !has(AllSymbols, key) || has(this, HIDDEN) && this[HIDDEN][key] ? E : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(it, key) {\n it = toIndexedObject(it);\n key = toPrimitive(key, true);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var D = nativeGetOwnPropertyDescriptor(it, key);\n if (D && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) D.enumerable = true;\n return D;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(it) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (!has(AllSymbols, key = names[i++]) && !has(hiddenKeys, key)) result.push(key);\n }\n\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(it) {\n var IS_OP = it === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OP ? ObjectPrototypeSymbols : toIndexedObject(it));\n var result = [];\n var i = 0;\n var key;\n\n while (names.length > i) {\n if (has(AllSymbols, key = names[i++]) && (IS_OP ? has(ObjectPrototype, key) : true)) result.push(AllSymbols[key]);\n }\n\n return result;\n}; // `Symbol` constructor\n// https://tc39.github.io/ecma262/#sec-symbol-constructor\n\n\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = arguments[0] === undefined ? undefined : String(arguments[0]);\n var tag = uid(description);\n\n var setter = function setter(value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, {\n configurable: true,\n set: setter\n });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n __webpack_require__(/*! ../internals/object-get-own-property-names */ \"./node_modules/core-js/internals/object-get-own-property-names.js\").f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, {\n unsafe: true\n });\n }\n }\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n}\n\n$export({\n global: true,\n wrap: true,\n forced: !NATIVE_SYMBOL,\n sham: !NATIVE_SYMBOL\n}, {\n Symbol: $Symbol\n});\n\nfor (var wellKnownSymbols = objectKeys(WellKnownSymbolsStore), k = 0; wellKnownSymbols.length > k;) {\n defineWellKnownSymbol(wellKnownSymbols[k++]);\n}\n\n$export({\n target: SYMBOL,\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n // `Symbol.for` method\n // https://tc39.github.io/ecma262/#sec-symbol.for\n 'for': function _for(key) {\n return has(SymbolRegistry, key += '') ? SymbolRegistry[key] : SymbolRegistry[key] = $Symbol(key);\n },\n // `Symbol.keyFor` method\n // https://tc39.github.io/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n\n for (var key in SymbolRegistry) {\n if (SymbolRegistry[key] === sym) return key;\n }\n },\n useSetter: function useSetter() {\n USE_SETTER = true;\n },\n useSimple: function useSimple() {\n USE_SETTER = false;\n }\n});\n$export({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL,\n sham: !DESCRIPTORS\n}, {\n // `Object.create` method\n // https://tc39.github.io/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.github.io/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n$export({\n target: 'Object',\n stat: true,\n forced: !NATIVE_SYMBOL\n}, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.github.io/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n}); // Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n\n$export({\n target: 'Object',\n stat: true,\n forced: fails(function () {\n getOwnPropertySymbolsModule.f(1);\n })\n}, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n}); // `JSON.stringify` method behavior with symbols\n// https://tc39.github.io/ecma262/#sec-json.stringify\n\nJSON && $export({\n target: 'JSON',\n stat: true,\n forced: !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol(); // MS Edge converts symbol values to JSON as {}\n\n return nativeJSONStringify([symbol]) != '[null]' // WebKit converts symbol values to JSON as null\n || nativeJSONStringify({\n a: symbol\n }) != '{}' // V8 throws on boxed symbols\n || nativeJSONStringify(Object(symbol)) != '{}';\n })\n}, {\n stringify: function stringify(it) {\n var args = [it];\n var i = 1;\n var replacer, $replacer;\n\n while (arguments.length > i) {\n args.push(arguments[i++]);\n }\n\n $replacer = replacer = args[1];\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n\n if (!isArray(replacer)) replacer = function replacer(key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return nativeJSONStringify.apply(JSON, args);\n }\n}); // `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@toprimitive\n\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) hide($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf); // `Symbol.prototype[@@toStringTag]` property\n// https://tc39.github.io/ecma262/#sec-symbol.prototype-@@tostringtag\n\nsetToStringTag($Symbol, SYMBOL);\nhiddenKeys[HIDDEN] = true;\n\n//# sourceURL=webpack:///./node_modules/core-js/modules/es.symbol.js?"); /***/ }), @@ -7384,17 +7444,6 @@ eval("/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source cod /***/ }), -/***/ "./node_modules/is-empty/lib/index.js": -/*!********************************************!*\ - !*** ./node_modules/is-empty/lib/index.js ***! - \********************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("/**\n * Has own property.\n *\n * @type {Function}\n */\nvar has = Object.prototype.hasOwnProperty;\n/**\n * To string.\n *\n * @type {Function}\n */\n\nvar toString = Object.prototype.toString;\n/**\n * Test whether a value is \"empty\".\n *\n * @param {Mixed} val\n * @return {Boolean}\n */\n\nfunction isEmpty(val) {\n // Null and Undefined...\n if (val == null) return true; // Booleans...\n\n if ('boolean' == typeof val) return false; // Numbers...\n\n if ('number' == typeof val) return val === 0; // Strings...\n\n if ('string' == typeof val) return val.length === 0; // Functions...\n\n if ('function' == typeof val) return val.length === 0; // Arrays...\n\n if (Array.isArray(val)) return val.length === 0; // Errors...\n\n if (val instanceof Error) return val.message === ''; // Objects...\n\n if (val.toString == toString) {\n switch (val.toString()) {\n // Maps, Sets, Files and Errors...\n case '[object File]':\n case '[object Map]':\n case '[object Set]':\n {\n return val.size === 0;\n }\n // Plain objects...\n\n case '[object Object]':\n {\n for (var key in val) {\n if (has.call(val, key)) return false;\n }\n\n return true;\n }\n }\n } // Anything else...\n\n\n return false;\n}\n/**\n * Export `isEmpty`.\n *\n * @type {Function}\n */\n\n\nmodule.exports = isEmpty;\n\n//# sourceURL=webpack:///./node_modules/is-empty/lib/index.js?"); - -/***/ }), - /***/ "./node_modules/is-hotkey/lib/index.js": /*!*********************************************!*\ !*** ./node_modules/is-hotkey/lib/index.js ***! @@ -7484,7 +7533,7 @@ eval("\n\nexports.atob = self.atob.bind(self);\nexports.btoa = self.btoa.bind(se /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("/* WEBPACK VAR INJECTION */(function(Buffer) {(function (root, stringify) {\n /* istanbul ignore else */\n if (true) {\n // Node.\n module.exports = stringify();\n } else {}\n})(this, function () {\n /**\n * Match all characters that need to be escaped in a string. Modified from\n * source to match single quotes instead of double.\n *\n * Source: https://github.com/douglascrockford/JSON-js/blob/master/json2.js\n */\n var ESCAPABLE = /[\\\\\\'\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n /**\n * Map of characters to escape characters.\n */\n\n var META_CHARS = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n /**\n * Escape any character into its literal JavaScript string.\n *\n * @param {string} char\n * @return {string}\n */\n\n function escapeChar(char) {\n var meta = META_CHARS[char];\n return meta || \"\\\\u\" + ('0000' + char.charCodeAt(0).toString(16)).slice(-4);\n }\n\n ;\n /**\n * JavaScript reserved word list.\n */\n\n var RESERVED_WORDS = {};\n /**\n * Map reserved words to the object.\n */\n\n ('break else new var case finally return void catch for switch while ' + 'continue function this with default if throw delete in try ' + 'do instanceof typeof abstract enum int short boolean export ' + 'interface static byte extends long super char final native synchronized ' + 'class float package throws const goto private transient debugger ' + 'implements protected volatile double import public let yield').split(' ').map(function (key) {\n RESERVED_WORDS[key] = true;\n });\n /**\n * Test for valid JavaScript identifier.\n */\n\n var IS_VALID_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\n /**\n * Check if a variable name is valid.\n *\n * @param {string} name\n * @return {boolean}\n */\n\n function isValidVariableName(name) {\n return !RESERVED_WORDS[name] && IS_VALID_IDENTIFIER.test(name);\n }\n /**\n * Return the global variable name.\n *\n * @return {string}\n */\n\n\n function toGlobalVariable(value) {\n return 'Function(' + stringify('return this;') + ')()';\n }\n /**\n * Serialize the path to a string.\n *\n * @param {Array} path\n * @return {string}\n */\n\n\n function toPath(path) {\n var result = '';\n\n for (var i = 0; i < path.length; i++) {\n if (isValidVariableName(path[i])) {\n result += '.' + path[i];\n } else {\n result += '[' + stringify(path[i]) + ']';\n }\n }\n\n return result;\n }\n /**\n * Stringify an array of values.\n *\n * @param {Array} array\n * @param {string} indent\n * @param {Function} next\n * @return {string}\n */\n\n\n function stringifyArray(array, indent, next) {\n // Map array values to their stringified values with correct indentation.\n var values = array.map(function (value, index) {\n var str = next(value, index);\n\n if (str === undefined) {\n return String(str);\n }\n\n return indent + str.split('\\n').join('\\n' + indent);\n }).join(indent ? ',\\n' : ','); // Wrap the array in newlines if we have indentation set.\n\n if (indent && values) {\n return '[\\n' + values + '\\n]';\n }\n\n return '[' + values + ']';\n }\n /**\n * Stringify a map of values.\n *\n * @param {Object} object\n * @param {string} indent\n * @param {Function} next\n * @return {string}\n */\n\n\n function stringifyObject(object, indent, next) {\n // Iterate over object keys and concat string together.\n var values = Object.keys(object).reduce(function (values, key) {\n var value = next(object[key], key); // Omit `undefined` object values.\n\n if (value === undefined) {\n return values;\n } // String format the key and value data.\n\n\n key = isValidVariableName(key) ? key : stringify(key);\n value = String(value).split('\\n').join('\\n' + indent); // Push the current object key and value into the values array.\n\n values.push(indent + key + ':' + (indent ? ' ' : '') + value);\n return values;\n }, []).join(indent ? ',\\n' : ','); // Wrap the object in newlines if we have indentation set.\n\n if (indent && values) {\n return '{\\n' + values + '\\n}';\n }\n\n return '{' + values + '}';\n }\n /**\n * Convert JavaScript objects into strings.\n */\n\n\n var OBJECT_TYPES = {\n '[object Array]': stringifyArray,\n '[object Object]': stringifyObject,\n '[object Error]': function objectError(error) {\n return 'new Error(' + stringify(error.message) + ')';\n },\n '[object Date]': function objectDate(date) {\n return 'new Date(' + date.getTime() + ')';\n },\n '[object String]': function objectString(string) {\n return 'new String(' + stringify(string.toString()) + ')';\n },\n '[object Number]': function objectNumber(number) {\n return 'new Number(' + number + ')';\n },\n '[object Boolean]': function objectBoolean(boolean) {\n return 'new Boolean(' + boolean + ')';\n },\n '[object Uint8Array]': function objectUint8Array(array, indent) {\n return 'new Uint8Array(' + stringifyArray(array) + ')';\n },\n '[object Set]': function objectSet(array, indent, next) {\n if (typeof Array.from === 'function') {\n return 'new Set(' + stringify(Array.from(array), indent, next) + ')';\n } else return undefined;\n },\n '[object Map]': function objectMap(array, indent, next) {\n if (typeof Array.from === 'function') {\n return 'new Map(' + stringify(Array.from(array), indent, next) + ')';\n } else return undefined;\n },\n '[object RegExp]': String,\n '[object Function]': String,\n '[object global]': toGlobalVariable,\n '[object Window]': toGlobalVariable\n };\n /**\n * Convert JavaScript primitives into strings.\n */\n\n var PRIMITIVE_TYPES = {\n 'string': function string(_string) {\n return \"'\" + _string.replace(ESCAPABLE, escapeChar) + \"'\";\n },\n 'number': String,\n 'object': String,\n 'boolean': String,\n 'symbol': String,\n 'undefined': String\n };\n /**\n * Convert any value to a string.\n *\n * @param {*} value\n * @param {string} indent\n * @param {Function} next\n * @return {string}\n */\n\n function stringify(value, indent, next) {\n // Convert primitives into strings.\n if (Object(value) !== value) {\n return PRIMITIVE_TYPES[typeof value](value, indent, next);\n } // Handle buffer objects before recursing (node < 6 was an object, node >= 6 is a `Uint8Array`).\n\n\n if (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n return 'new Buffer(' + next(value.toString()) + ')';\n } // Use the internal object string to select stringification method.\n\n\n var toString = OBJECT_TYPES[Object.prototype.toString.call(value)]; // Convert objects into strings.\n\n return toString ? toString(value, indent, next) : undefined;\n }\n /**\n * Stringify an object into the literal string.\n *\n * @param {*} value\n * @param {Function} [replacer]\n * @param {(number|string)} [space]\n * @param {Object} [options]\n * @return {string}\n */\n\n\n return function (value, replacer, space, options) {\n options = options || {}; // Convert the spaces into a string.\n\n if (typeof space !== 'string') {\n space = new Array(Math.max(0, space | 0) + 1).join(' ');\n }\n\n var maxDepth = Number(options.maxDepth) || 100;\n var references = !!options.references;\n var skipUndefinedProperties = !!options.skipUndefinedProperties;\n var valueCount = Number(options.maxValues) || 100000;\n var path = [];\n var stack = [];\n var encountered = [];\n var paths = [];\n var restore = [];\n /**\n * Stringify the next value in the stack.\n *\n * @param {*} value\n * @param {string} key\n * @return {string}\n */\n\n function next(value, key) {\n if (skipUndefinedProperties && value === undefined) {\n return undefined;\n }\n\n path.push(key);\n var result = recurse(value, stringify);\n path.pop();\n return result;\n }\n /**\n * Handle recursion by checking if we've visited this node every iteration.\n *\n * @param {*} value\n * @param {Function} stringify\n * @return {string}\n */\n\n\n var recurse = references ? function (value, stringify) {\n if (value && (typeof value === 'object' || typeof value === 'function')) {\n var seen = encountered.indexOf(value); // Track nodes to restore later.\n\n if (seen > -1) {\n restore.push(path.slice(), paths[seen]);\n return;\n } // Track encountered nodes.\n\n\n encountered.push(value);\n paths.push(path.slice());\n } // Stop when we hit the max depth.\n\n\n if (path.length > maxDepth || valueCount-- <= 0) {\n return;\n } // Stringify the value and fallback to\n\n\n return stringify(value, space, next);\n } : function (value, stringify) {\n var seen = stack.indexOf(value);\n\n if (seen > -1 || path.length > maxDepth || valueCount-- <= 0) {\n return;\n }\n\n stack.push(value);\n var value = stringify(value, space, next);\n stack.pop();\n return value;\n }; // If the user defined a replacer function, make the recursion function\n // a double step process - `recurse -> replacer -> stringify`.\n\n if (typeof replacer === 'function') {\n var before = recurse; // Intertwine the replacer function with the regular recursion.\n\n recurse = function recurse(value, stringify) {\n return before(value, function (value, space, next) {\n return replacer(value, space, function (value) {\n return stringify(value, space, next);\n });\n });\n };\n }\n\n var result = recurse(value, stringify); // Attempt to restore circular references.\n\n if (restore.length) {\n var sep = space ? '\\n' : '';\n var assignment = space ? ' = ' : '=';\n var eol = ';' + sep;\n var before = space ? '(function () {' : '(function(){';\n var after = '}())';\n var results = ['var x' + assignment + result];\n\n for (var i = 0; i < restore.length; i += 2) {\n results.push('x' + toPath(restore[i]) + assignment + 'x' + toPath(restore[i + 1]));\n }\n\n results.push('return x');\n return before + sep + results.join(eol) + eol + after;\n }\n\n return result;\n };\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/javascript-stringify/javascript-stringify.js?"); +eval("/* WEBPACK VAR INJECTION */(function(Buffer) {(function (root, stringify) {\n /* istanbul ignore else */\n if (true) {\n // Node.\n module.exports = stringify();\n } else {}\n})(this, function () {\n /**\n * Match all characters that need to be escaped in a string. Modified from\n * source to match single quotes instead of double.\n *\n * Source: https://github.com/douglascrockford/JSON-js/blob/master/json2.js\n */\n var ESCAPABLE = /[\\\\\\'\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g;\n /**\n * Map of characters to escape characters.\n */\n\n var META_CHARS = {\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n \"'\": \"\\\\'\",\n '\"': '\\\\\"',\n '\\\\': '\\\\\\\\'\n };\n /**\n * Escape any character into its literal JavaScript string.\n *\n * @param {string} char\n * @return {string}\n */\n\n function escapeChar(_char) {\n var meta = META_CHARS[_char];\n return meta || \"\\\\u\" + ('0000' + _char.charCodeAt(0).toString(16)).slice(-4);\n }\n\n ;\n /**\n * JavaScript reserved word list.\n */\n\n var RESERVED_WORDS = {};\n /**\n * Map reserved words to the object.\n */\n\n ('break else new var case finally return void catch for switch while ' + 'continue function this with default if throw delete in try ' + 'do instanceof typeof abstract enum int short boolean export ' + 'interface static byte extends long super char final native synchronized ' + 'class float package throws const goto private transient debugger ' + 'implements protected volatile double import public let yield').split(' ').map(function (key) {\n RESERVED_WORDS[key] = true;\n });\n /**\n * Test for valid JavaScript identifier.\n */\n\n var IS_VALID_IDENTIFIER = /^[A-Za-z_$][A-Za-z0-9_$]*$/;\n /**\n * Check if a variable name is valid.\n *\n * @param {string} name\n * @return {boolean}\n */\n\n function isValidVariableName(name) {\n return !RESERVED_WORDS[name] && IS_VALID_IDENTIFIER.test(name);\n }\n /**\n * Return the global variable name.\n *\n * @return {string}\n */\n\n\n function toGlobalVariable(value) {\n return 'Function(' + stringify('return this;') + ')()';\n }\n /**\n * Serialize the path to a string.\n *\n * @param {Array} path\n * @return {string}\n */\n\n\n function toPath(path) {\n var result = '';\n\n for (var i = 0; i < path.length; i++) {\n if (isValidVariableName(path[i])) {\n result += '.' + path[i];\n } else {\n result += '[' + stringify(path[i]) + ']';\n }\n }\n\n return result;\n }\n /**\n * Stringify an array of values.\n *\n * @param {Array} array\n * @param {string} indent\n * @param {Function} next\n * @return {string}\n */\n\n\n function stringifyArray(array, indent, next) {\n // Map array values to their stringified values with correct indentation.\n var values = array.map(function (value, index) {\n var str = next(value, index);\n\n if (str === undefined) {\n return String(str);\n }\n\n return indent + str.split('\\n').join('\\n' + indent);\n }).join(indent ? ',\\n' : ','); // Wrap the array in newlines if we have indentation set.\n\n if (indent && values) {\n return '[\\n' + values + '\\n]';\n }\n\n return '[' + values + ']';\n }\n /**\n * Stringify a map of values.\n *\n * @param {Object} object\n * @param {string} indent\n * @param {Function} next\n * @return {string}\n */\n\n\n function stringifyObject(object, indent, next) {\n // Iterate over object keys and concat string together.\n var values = Object.keys(object).reduce(function (values, key) {\n var value = next(object[key], key); // Omit `undefined` object values.\n\n if (value === undefined) {\n return values;\n } // String format the key and value data.\n\n\n key = isValidVariableName(key) ? key : stringify(key);\n value = String(value).split('\\n').join('\\n' + indent); // Push the current object key and value into the values array.\n\n values.push(indent + key + ':' + (indent ? ' ' : '') + value);\n return values;\n }, []).join(indent ? ',\\n' : ','); // Wrap the object in newlines if we have indentation set.\n\n if (indent && values) {\n return '{\\n' + values + '\\n}';\n }\n\n return '{' + values + '}';\n }\n /**\n * Convert JavaScript objects into strings.\n */\n\n\n var OBJECT_TYPES = {\n '[object Array]': stringifyArray,\n '[object Object]': stringifyObject,\n '[object Error]': function objectError(error) {\n return 'new Error(' + stringify(error.message) + ')';\n },\n '[object Date]': function objectDate(date) {\n return 'new Date(' + date.getTime() + ')';\n },\n '[object String]': function objectString(string) {\n return 'new String(' + stringify(string.toString()) + ')';\n },\n '[object Number]': function objectNumber(number) {\n return 'new Number(' + number + ')';\n },\n '[object Boolean]': function objectBoolean(_boolean) {\n return 'new Boolean(' + _boolean + ')';\n },\n '[object Uint8Array]': function objectUint8Array(array, indent) {\n return 'new Uint8Array(' + stringifyArray(array) + ')';\n },\n '[object Set]': function objectSet(array, indent, next) {\n if (typeof Array.from === 'function') {\n return 'new Set(' + stringify(Array.from(array), indent, next) + ')';\n } else return undefined;\n },\n '[object Map]': function objectMap(array, indent, next) {\n if (typeof Array.from === 'function') {\n return 'new Map(' + stringify(Array.from(array), indent, next) + ')';\n } else return undefined;\n },\n '[object RegExp]': String,\n '[object Function]': String,\n '[object global]': toGlobalVariable,\n '[object Window]': toGlobalVariable\n };\n /**\n * Convert JavaScript primitives into strings.\n */\n\n var PRIMITIVE_TYPES = {\n 'string': function string(_string) {\n return \"'\" + _string.replace(ESCAPABLE, escapeChar) + \"'\";\n },\n 'number': String,\n 'object': String,\n 'boolean': String,\n 'symbol': String,\n 'undefined': String\n };\n /**\n * Convert any value to a string.\n *\n * @param {*} value\n * @param {string} indent\n * @param {Function} next\n * @return {string}\n */\n\n function stringify(value, indent, next) {\n // Convert primitives into strings.\n if (Object(value) !== value) {\n return PRIMITIVE_TYPES[typeof value](value, indent, next);\n } // Handle buffer objects before recursing (node < 6 was an object, node >= 6 is a `Uint8Array`).\n\n\n if (typeof Buffer === 'function' && Buffer.isBuffer(value)) {\n return 'new Buffer(' + next(value.toString()) + ')';\n } // Use the internal object string to select stringification method.\n\n\n var toString = OBJECT_TYPES[Object.prototype.toString.call(value)]; // Convert objects into strings.\n\n return toString ? toString(value, indent, next) : undefined;\n }\n /**\n * Stringify an object into the literal string.\n *\n * @param {*} value\n * @param {Function} [replacer]\n * @param {(number|string)} [space]\n * @param {Object} [options]\n * @return {string}\n */\n\n\n return function (value, replacer, space, options) {\n options = options || {}; // Convert the spaces into a string.\n\n if (typeof space !== 'string') {\n space = new Array(Math.max(0, space | 0) + 1).join(' ');\n }\n\n var maxDepth = Number(options.maxDepth) || 100;\n var references = !!options.references;\n var skipUndefinedProperties = !!options.skipUndefinedProperties;\n var valueCount = Number(options.maxValues) || 100000;\n var path = [];\n var stack = [];\n var encountered = [];\n var paths = [];\n var restore = [];\n /**\n * Stringify the next value in the stack.\n *\n * @param {*} value\n * @param {string} key\n * @return {string}\n */\n\n function next(value, key) {\n if (skipUndefinedProperties && value === undefined) {\n return undefined;\n }\n\n path.push(key);\n var result = recurse(value, stringify);\n path.pop();\n return result;\n }\n /**\n * Handle recursion by checking if we've visited this node every iteration.\n *\n * @param {*} value\n * @param {Function} stringify\n * @return {string}\n */\n\n\n var recurse = references ? function (value, stringify) {\n if (value && (typeof value === 'object' || typeof value === 'function')) {\n var seen = encountered.indexOf(value); // Track nodes to restore later.\n\n if (seen > -1) {\n restore.push(path.slice(), paths[seen]);\n return;\n } // Track encountered nodes.\n\n\n encountered.push(value);\n paths.push(path.slice());\n } // Stop when we hit the max depth.\n\n\n if (path.length > maxDepth || valueCount-- <= 0) {\n return;\n } // Stringify the value and fallback to\n\n\n return stringify(value, space, next);\n } : function (value, stringify) {\n var seen = stack.indexOf(value);\n\n if (seen > -1 || path.length > maxDepth || valueCount-- <= 0) {\n return;\n }\n\n stack.push(value);\n var value = stringify(value, space, next);\n stack.pop();\n return value;\n }; // If the user defined a replacer function, make the recursion function\n // a double step process - `recurse -> replacer -> stringify`.\n\n if (typeof replacer === 'function') {\n var before = recurse; // Intertwine the replacer function with the regular recursion.\n\n recurse = function recurse(value, stringify) {\n return before(value, function (value, space, next) {\n return replacer(value, space, function (value) {\n return stringify(value, space, next);\n });\n });\n };\n }\n\n var result = recurse(value, stringify); // Attempt to restore circular references.\n\n if (restore.length) {\n var sep = space ? '\\n' : '';\n var assignment = space ? ' = ' : '=';\n var eol = ';' + sep;\n var before = space ? '(function () {' : '(function(){';\n var after = '}())';\n var results = ['var x' + assignment + result];\n\n for (var i = 0; i < restore.length; i += 2) {\n results.push('x' + toPath(restore[i]) + assignment + 'x' + toPath(restore[i + 1]));\n }\n\n results.push('return x');\n return before + sep + results.join(eol) + eol + after;\n }\n\n return result;\n };\n});\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/javascript-stringify/javascript-stringify.js?"); /***/ }), @@ -10148,17 +10197,6 @@ eval("var baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/l /***/ }), -/***/ "./node_modules/lodash/mergeWith.js": -/*!******************************************!*\ - !*** ./node_modules/lodash/mergeWith.js ***! - \******************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("var baseMerge = __webpack_require__(/*! ./_baseMerge */ \"./node_modules/lodash/_baseMerge.js\"),\n createAssigner = __webpack_require__(/*! ./_createAssigner */ \"./node_modules/lodash/_createAssigner.js\");\n/**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n\n\nvar mergeWith = createAssigner(function (object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n});\nmodule.exports = mergeWith;\n\n//# sourceURL=webpack:///./node_modules/lodash/mergeWith.js?"); - -/***/ }), - /***/ "./node_modules/lodash/now.js": /*!************************************!*\ !*** ./node_modules/lodash/now.js ***! @@ -10299,7 +10337,7 @@ eval("var baseToString = __webpack_require__(/*! ./_baseToString */ \"./node_mod /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bundle\", function() { return Bundle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SourceMap\", function() { return SourceMap; });\n/* harmony import */ var sourcemap_codec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! sourcemap-codec */ \"./node_modules/sourcemap-codec/dist/sourcemap-codec.es.js\");\n\n\nvar Chunk = function Chunk(start, end, content) {\n this.start = start;\n this.end = end;\n this.original = content;\n this.intro = '';\n this.outro = '';\n this.content = content;\n this.storeName = false;\n this.edited = false; // we make these non-enumerable, for sanity while debugging\n\n Object.defineProperties(this, {\n previous: {\n writable: true,\n value: null\n },\n next: {\n writable: true,\n value: null\n }\n });\n};\n\nChunk.prototype.appendLeft = function appendLeft(content) {\n this.outro += content;\n};\n\nChunk.prototype.appendRight = function appendRight(content) {\n this.intro = this.intro + content;\n};\n\nChunk.prototype.clone = function clone() {\n var chunk = new Chunk(this.start, this.end, this.original);\n chunk.intro = this.intro;\n chunk.outro = this.outro;\n chunk.content = this.content;\n chunk.storeName = this.storeName;\n chunk.edited = this.edited;\n return chunk;\n};\n\nChunk.prototype.contains = function contains(index) {\n return this.start < index && index < this.end;\n};\n\nChunk.prototype.eachNext = function eachNext(fn) {\n var chunk = this;\n\n while (chunk) {\n fn(chunk);\n chunk = chunk.next;\n }\n};\n\nChunk.prototype.eachPrevious = function eachPrevious(fn) {\n var chunk = this;\n\n while (chunk) {\n fn(chunk);\n chunk = chunk.previous;\n }\n};\n\nChunk.prototype.edit = function edit(content, storeName, contentOnly) {\n this.content = content;\n\n if (!contentOnly) {\n this.intro = '';\n this.outro = '';\n }\n\n this.storeName = storeName;\n this.edited = true;\n return this;\n};\n\nChunk.prototype.prependLeft = function prependLeft(content) {\n this.outro = content + this.outro;\n};\n\nChunk.prototype.prependRight = function prependRight(content) {\n this.intro = content + this.intro;\n};\n\nChunk.prototype.split = function split(index) {\n var sliceIndex = index - this.start;\n var originalBefore = this.original.slice(0, sliceIndex);\n var originalAfter = this.original.slice(sliceIndex);\n this.original = originalBefore;\n var newChunk = new Chunk(index, this.end, originalAfter);\n newChunk.outro = this.outro;\n this.outro = '';\n this.end = index;\n\n if (this.edited) {\n // TODO is this block necessary?...\n newChunk.edit('', false);\n this.content = '';\n } else {\n this.content = originalBefore;\n }\n\n newChunk.next = this.next;\n\n if (newChunk.next) {\n newChunk.next.previous = newChunk;\n }\n\n newChunk.previous = this;\n this.next = newChunk;\n return newChunk;\n};\n\nChunk.prototype.toString = function toString() {\n return this.intro + this.content + this.outro;\n};\n\nChunk.prototype.trimEnd = function trimEnd(rx) {\n this.outro = this.outro.replace(rx, '');\n\n if (this.outro.length) {\n return true;\n }\n\n var trimmed = this.content.replace(rx, '');\n\n if (trimmed.length) {\n if (trimmed !== this.content) {\n this.split(this.start + trimmed.length).edit('', undefined, true);\n }\n\n return true;\n } else {\n this.edit('', undefined, true);\n this.intro = this.intro.replace(rx, '');\n\n if (this.intro.length) {\n return true;\n }\n }\n};\n\nChunk.prototype.trimStart = function trimStart(rx) {\n this.intro = this.intro.replace(rx, '');\n\n if (this.intro.length) {\n return true;\n }\n\n var trimmed = this.content.replace(rx, '');\n\n if (trimmed.length) {\n if (trimmed !== this.content) {\n this.split(this.end - trimmed.length);\n this.edit('', undefined, true);\n }\n\n return true;\n } else {\n this.edit('', undefined, true);\n this.outro = this.outro.replace(rx, '');\n\n if (this.outro.length) {\n return true;\n }\n }\n};\n\nvar btoa = function btoa() {\n throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\n\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n btoa = function btoa(str) {\n return window.btoa(unescape(encodeURIComponent(str)));\n };\n} else if (typeof Buffer === 'function') {\n btoa = function btoa(str) {\n return Buffer.from(str, 'utf-8').toString('base64');\n };\n}\n\nvar SourceMap = function SourceMap(properties) {\n this.version = 3;\n this.file = properties.file;\n this.sources = properties.sources;\n this.sourcesContent = properties.sourcesContent;\n this.names = properties.names;\n this.mappings = Object(sourcemap_codec__WEBPACK_IMPORTED_MODULE_0__[\"encode\"])(properties.mappings);\n};\n\nSourceMap.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\n\nSourceMap.prototype.toUrl = function toUrl() {\n return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n};\n\nfunction guessIndent(code) {\n var lines = code.split('\\n');\n var tabbed = lines.filter(function (line) {\n return /^\\t+/.test(line);\n });\n var spaced = lines.filter(function (line) {\n return /^ {2,}/.test(line);\n });\n\n if (tabbed.length === 0 && spaced.length === 0) {\n return null;\n } // More lines tabbed than spaced? Assume tabs, and\n // default to tabs in the case of a tie (or nothing\n // to go on)\n\n\n if (tabbed.length >= spaced.length) {\n return '\\t';\n } // Otherwise, we need to guess the multiple\n\n\n var min = spaced.reduce(function (previous, current) {\n var numSpaces = /^ +/.exec(current)[0].length;\n return Math.min(numSpaces, previous);\n }, Infinity);\n return new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n var fromParts = from.split(/[/\\\\]/);\n var toParts = to.split(/[/\\\\]/);\n fromParts.pop(); // get dirname\n\n while (fromParts[0] === toParts[0]) {\n fromParts.shift();\n toParts.shift();\n }\n\n if (fromParts.length) {\n var i = fromParts.length;\n\n while (i--) {\n fromParts[i] = '..';\n }\n }\n\n return fromParts.concat(toParts).join('/');\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n return toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n var originalLines = source.split('\\n');\n var lineOffsets = [];\n\n for (var i = 0, pos = 0; i < originalLines.length; i++) {\n lineOffsets.push(pos);\n pos += originalLines[i].length + 1;\n }\n\n return function locate(index) {\n var i = 0;\n var j = lineOffsets.length;\n\n while (i < j) {\n var m = i + j >> 1;\n\n if (index < lineOffsets[m]) {\n j = m;\n } else {\n i = m + 1;\n }\n }\n\n var line = i - 1;\n var column = index - lineOffsets[line];\n return {\n line: line,\n column: column\n };\n };\n}\n\nvar Mappings = function Mappings(hires) {\n this.hires = hires;\n this.generatedCodeLine = 0;\n this.generatedCodeColumn = 0;\n this.raw = [];\n this.rawSegments = this.raw[this.generatedCodeLine] = [];\n this.pending = null;\n};\n\nMappings.prototype.addEdit = function addEdit(sourceIndex, content, loc, nameIndex) {\n if (content.length) {\n var segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n if (nameIndex >= 0) {\n segment.push(nameIndex);\n }\n\n this.rawSegments.push(segment);\n } else if (this.pending) {\n this.rawSegments.push(this.pending);\n }\n\n this.advance(content);\n this.pending = null;\n};\n\nMappings.prototype.addUneditedChunk = function addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n var originalCharIndex = chunk.start;\n var first = true;\n\n while (originalCharIndex < chunk.end) {\n if (this.hires || first || sourcemapLocations[originalCharIndex]) {\n this.rawSegments.push([this.generatedCodeColumn, sourceIndex, loc.line, loc.column]);\n }\n\n if (original[originalCharIndex] === '\\n') {\n loc.line += 1;\n loc.column = 0;\n this.generatedCodeLine += 1;\n this.raw[this.generatedCodeLine] = this.rawSegments = [];\n this.generatedCodeColumn = 0;\n } else {\n loc.column += 1;\n this.generatedCodeColumn += 1;\n }\n\n originalCharIndex += 1;\n first = false;\n }\n\n this.pending = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n};\n\nMappings.prototype.advance = function advance(str) {\n if (!str) {\n return;\n }\n\n var lines = str.split('\\n');\n\n if (lines.length > 1) {\n for (var i = 0; i < lines.length - 1; i++) {\n this.generatedCodeLine++;\n this.raw[this.generatedCodeLine] = this.rawSegments = [];\n }\n\n this.generatedCodeColumn = 0;\n }\n\n this.generatedCodeColumn += lines[lines.length - 1].length;\n};\n\nvar n = '\\n';\nvar warned = {\n insertLeft: false,\n insertRight: false,\n storeName: false\n};\n\nvar MagicString = function MagicString(string, options) {\n if (options === void 0) options = {};\n var chunk = new Chunk(0, string.length, string);\n Object.defineProperties(this, {\n original: {\n writable: true,\n value: string\n },\n outro: {\n writable: true,\n value: ''\n },\n intro: {\n writable: true,\n value: ''\n },\n firstChunk: {\n writable: true,\n value: chunk\n },\n lastChunk: {\n writable: true,\n value: chunk\n },\n lastSearchedChunk: {\n writable: true,\n value: chunk\n },\n byStart: {\n writable: true,\n value: {}\n },\n byEnd: {\n writable: true,\n value: {}\n },\n filename: {\n writable: true,\n value: options.filename\n },\n indentExclusionRanges: {\n writable: true,\n value: options.indentExclusionRanges\n },\n sourcemapLocations: {\n writable: true,\n value: {}\n },\n storedNames: {\n writable: true,\n value: {}\n },\n indentStr: {\n writable: true,\n value: guessIndent(string)\n }\n });\n this.byStart[0] = chunk;\n this.byEnd[string.length] = chunk;\n};\n\nMagicString.prototype.addSourcemapLocation = function addSourcemapLocation(char) {\n this.sourcemapLocations[char] = true;\n};\n\nMagicString.prototype.append = function append(content) {\n if (typeof content !== 'string') {\n throw new TypeError('outro content must be a string');\n }\n\n this.outro += content;\n return this;\n};\n\nMagicString.prototype.appendLeft = function appendLeft(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byEnd[index];\n\n if (chunk) {\n chunk.appendLeft(content);\n } else {\n this.intro += content;\n }\n\n return this;\n};\n\nMagicString.prototype.appendRight = function appendRight(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byStart[index];\n\n if (chunk) {\n chunk.appendRight(content);\n } else {\n this.outro += content;\n }\n\n return this;\n};\n\nMagicString.prototype.clone = function clone() {\n var cloned = new MagicString(this.original, {\n filename: this.filename\n });\n var originalChunk = this.firstChunk;\n var clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\n while (originalChunk) {\n cloned.byStart[clonedChunk.start] = clonedChunk;\n cloned.byEnd[clonedChunk.end] = clonedChunk;\n var nextOriginalChunk = originalChunk.next;\n var nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n if (nextClonedChunk) {\n clonedChunk.next = nextClonedChunk;\n nextClonedChunk.previous = clonedChunk;\n clonedChunk = nextClonedChunk;\n }\n\n originalChunk = nextOriginalChunk;\n }\n\n cloned.lastChunk = clonedChunk;\n\n if (this.indentExclusionRanges) {\n cloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n }\n\n Object.keys(this.sourcemapLocations).forEach(function (loc) {\n cloned.sourcemapLocations[loc] = true;\n });\n return cloned;\n};\n\nMagicString.prototype.generateDecodedMap = function generateDecodedMap(options) {\n var this$1 = this;\n options = options || {};\n var sourceIndex = 0;\n var names = Object.keys(this.storedNames);\n var mappings = new Mappings(options.hires);\n var locate = getLocator(this.original);\n\n if (this.intro) {\n mappings.advance(this.intro);\n }\n\n this.firstChunk.eachNext(function (chunk) {\n var loc = locate(chunk.start);\n\n if (chunk.intro.length) {\n mappings.advance(chunk.intro);\n }\n\n if (chunk.edited) {\n mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n } else {\n mappings.addUneditedChunk(sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations);\n }\n\n if (chunk.outro.length) {\n mappings.advance(chunk.outro);\n }\n });\n return {\n file: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n sources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n sourcesContent: options.includeContent ? [this.original] : [null],\n names: names,\n mappings: mappings.raw\n };\n};\n\nMagicString.prototype.generateMap = function generateMap(options) {\n return new SourceMap(this.generateDecodedMap(options));\n};\n\nMagicString.prototype.getIndentString = function getIndentString() {\n return this.indentStr === null ? '\\t' : this.indentStr;\n};\n\nMagicString.prototype.indent = function indent(indentStr, options) {\n var pattern = /^[^\\r\\n]/gm;\n\n if (isObject(indentStr)) {\n options = indentStr;\n indentStr = undefined;\n }\n\n indentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n\n if (indentStr === '') {\n return this;\n } // noop\n\n\n options = options || {}; // Process exclusion ranges\n\n var isExcluded = {};\n\n if (options.exclude) {\n var exclusions = typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n exclusions.forEach(function (exclusion) {\n for (var i = exclusion[0]; i < exclusion[1]; i += 1) {\n isExcluded[i] = true;\n }\n });\n }\n\n var shouldIndentNextCharacter = options.indentStart !== false;\n\n var replacer = function replacer(match) {\n if (shouldIndentNextCharacter) {\n return \"\" + indentStr + match;\n }\n\n shouldIndentNextCharacter = true;\n return match;\n };\n\n this.intro = this.intro.replace(pattern, replacer);\n var charIndex = 0;\n var chunk = this.firstChunk;\n\n while (chunk) {\n var end = chunk.end;\n\n if (chunk.edited) {\n if (!isExcluded[charIndex]) {\n chunk.content = chunk.content.replace(pattern, replacer);\n\n if (chunk.content.length) {\n shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n }\n }\n } else {\n charIndex = chunk.start;\n\n while (charIndex < end) {\n if (!isExcluded[charIndex]) {\n var char = this.original[charIndex];\n\n if (char === '\\n') {\n shouldIndentNextCharacter = true;\n } else if (char !== '\\r' && shouldIndentNextCharacter) {\n shouldIndentNextCharacter = false;\n\n if (charIndex === chunk.start) {\n chunk.prependRight(indentStr);\n } else {\n this._splitChunk(chunk, charIndex);\n\n chunk = chunk.next;\n chunk.prependRight(indentStr);\n }\n }\n }\n\n charIndex += 1;\n }\n }\n\n charIndex = chunk.end;\n chunk = chunk.next;\n }\n\n this.outro = this.outro.replace(pattern, replacer);\n return this;\n};\n\nMagicString.prototype.insert = function insert() {\n throw new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');\n};\n\nMagicString.prototype.insertLeft = function insertLeft(index, content) {\n if (!warned.insertLeft) {\n console.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console\n\n warned.insertLeft = true;\n }\n\n return this.appendLeft(index, content);\n};\n\nMagicString.prototype.insertRight = function insertRight(index, content) {\n if (!warned.insertRight) {\n console.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console\n\n warned.insertRight = true;\n }\n\n return this.prependRight(index, content);\n};\n\nMagicString.prototype.move = function move(start, end, index) {\n if (index >= start && index <= end) {\n throw new Error('Cannot move a selection inside itself');\n }\n\n this._split(start);\n\n this._split(end);\n\n this._split(index);\n\n var first = this.byStart[start];\n var last = this.byEnd[end];\n var oldLeft = first.previous;\n var oldRight = last.next;\n var newRight = this.byStart[index];\n\n if (!newRight && last === this.lastChunk) {\n return this;\n }\n\n var newLeft = newRight ? newRight.previous : this.lastChunk;\n\n if (oldLeft) {\n oldLeft.next = oldRight;\n }\n\n if (oldRight) {\n oldRight.previous = oldLeft;\n }\n\n if (newLeft) {\n newLeft.next = first;\n }\n\n if (newRight) {\n newRight.previous = last;\n }\n\n if (!first.previous) {\n this.firstChunk = last.next;\n }\n\n if (!last.next) {\n this.lastChunk = first.previous;\n this.lastChunk.next = null;\n }\n\n first.previous = newLeft;\n last.next = newRight || null;\n\n if (!newLeft) {\n this.firstChunk = first;\n }\n\n if (!newRight) {\n this.lastChunk = last;\n }\n\n return this;\n};\n\nMagicString.prototype.overwrite = function overwrite(start, end, content, options) {\n if (typeof content !== 'string') {\n throw new TypeError('replacement content must be a string');\n }\n\n while (start < 0) {\n start += this.original.length;\n }\n\n while (end < 0) {\n end += this.original.length;\n }\n\n if (end > this.original.length) {\n throw new Error('end is out of bounds');\n }\n\n if (start === end) {\n throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead');\n }\n\n this._split(start);\n\n this._split(end);\n\n if (options === true) {\n if (!warned.storeName) {\n console.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console\n\n warned.storeName = true;\n }\n\n options = {\n storeName: true\n };\n }\n\n var storeName = options !== undefined ? options.storeName : false;\n var contentOnly = options !== undefined ? options.contentOnly : false;\n\n if (storeName) {\n var original = this.original.slice(start, end);\n this.storedNames[original] = true;\n }\n\n var first = this.byStart[start];\n var last = this.byEnd[end];\n\n if (first) {\n if (end > first.end && first.next !== this.byStart[first.end]) {\n throw new Error('Cannot overwrite across a split point');\n }\n\n first.edit(content, storeName, contentOnly);\n\n if (first !== last) {\n var chunk = first.next;\n\n while (chunk !== last) {\n chunk.edit('', false);\n chunk = chunk.next;\n }\n\n chunk.edit('', false);\n }\n } else {\n // must be inserting at the end\n var newChunk = new Chunk(start, end, '').edit(content, storeName); // TODO last chunk in the array may not be the last chunk, if it's moved...\n\n last.next = newChunk;\n newChunk.previous = last;\n }\n\n return this;\n};\n\nMagicString.prototype.prepend = function prepend(content) {\n if (typeof content !== 'string') {\n throw new TypeError('outro content must be a string');\n }\n\n this.intro = content + this.intro;\n return this;\n};\n\nMagicString.prototype.prependLeft = function prependLeft(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byEnd[index];\n\n if (chunk) {\n chunk.prependLeft(content);\n } else {\n this.intro = content + this.intro;\n }\n\n return this;\n};\n\nMagicString.prototype.prependRight = function prependRight(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byStart[index];\n\n if (chunk) {\n chunk.prependRight(content);\n } else {\n this.outro = content + this.outro;\n }\n\n return this;\n};\n\nMagicString.prototype.remove = function remove(start, end) {\n while (start < 0) {\n start += this.original.length;\n }\n\n while (end < 0) {\n end += this.original.length;\n }\n\n if (start === end) {\n return this;\n }\n\n if (start < 0 || end > this.original.length) {\n throw new Error('Character is out of bounds');\n }\n\n if (start > end) {\n throw new Error('end must be greater than start');\n }\n\n this._split(start);\n\n this._split(end);\n\n var chunk = this.byStart[start];\n\n while (chunk) {\n chunk.intro = '';\n chunk.outro = '';\n chunk.edit('');\n chunk = end > chunk.end ? this.byStart[chunk.end] : null;\n }\n\n return this;\n};\n\nMagicString.prototype.lastChar = function lastChar() {\n if (this.outro.length) {\n return this.outro[this.outro.length - 1];\n }\n\n var chunk = this.lastChunk;\n\n do {\n if (chunk.outro.length) {\n return chunk.outro[chunk.outro.length - 1];\n }\n\n if (chunk.content.length) {\n return chunk.content[chunk.content.length - 1];\n }\n\n if (chunk.intro.length) {\n return chunk.intro[chunk.intro.length - 1];\n }\n } while (chunk = chunk.previous);\n\n if (this.intro.length) {\n return this.intro[this.intro.length - 1];\n }\n\n return '';\n};\n\nMagicString.prototype.lastLine = function lastLine() {\n var lineIndex = this.outro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return this.outro.substr(lineIndex + 1);\n }\n\n var lineStr = this.outro;\n var chunk = this.lastChunk;\n\n do {\n if (chunk.outro.length > 0) {\n lineIndex = chunk.outro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return chunk.outro.substr(lineIndex + 1) + lineStr;\n }\n\n lineStr = chunk.outro + lineStr;\n }\n\n if (chunk.content.length > 0) {\n lineIndex = chunk.content.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return chunk.content.substr(lineIndex + 1) + lineStr;\n }\n\n lineStr = chunk.content + lineStr;\n }\n\n if (chunk.intro.length > 0) {\n lineIndex = chunk.intro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return chunk.intro.substr(lineIndex + 1) + lineStr;\n }\n\n lineStr = chunk.intro + lineStr;\n }\n } while (chunk = chunk.previous);\n\n lineIndex = this.intro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return this.intro.substr(lineIndex + 1) + lineStr;\n }\n\n return this.intro + lineStr;\n};\n\nMagicString.prototype.slice = function slice(start, end) {\n if (start === void 0) start = 0;\n if (end === void 0) end = this.original.length;\n\n while (start < 0) {\n start += this.original.length;\n }\n\n while (end < 0) {\n end += this.original.length;\n }\n\n var result = ''; // find start chunk\n\n var chunk = this.firstChunk;\n\n while (chunk && (chunk.start > start || chunk.end <= start)) {\n // found end chunk before start\n if (chunk.start < end && chunk.end >= end) {\n return result;\n }\n\n chunk = chunk.next;\n }\n\n if (chunk && chunk.edited && chunk.start !== start) {\n throw new Error(\"Cannot use replaced character \" + start + \" as slice start anchor.\");\n }\n\n var startChunk = chunk;\n\n while (chunk) {\n if (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n result += chunk.intro;\n }\n\n var containsEnd = chunk.start < end && chunk.end >= end;\n\n if (containsEnd && chunk.edited && chunk.end !== end) {\n throw new Error(\"Cannot use replaced character \" + end + \" as slice end anchor.\");\n }\n\n var sliceStart = startChunk === chunk ? start - chunk.start : 0;\n var sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n result += chunk.content.slice(sliceStart, sliceEnd);\n\n if (chunk.outro && (!containsEnd || chunk.end === end)) {\n result += chunk.outro;\n }\n\n if (containsEnd) {\n break;\n }\n\n chunk = chunk.next;\n }\n\n return result;\n}; // TODO deprecate this? not really very useful\n\n\nMagicString.prototype.snip = function snip(start, end) {\n var clone = this.clone();\n clone.remove(0, start);\n clone.remove(end, clone.original.length);\n return clone;\n};\n\nMagicString.prototype._split = function _split(index) {\n if (this.byStart[index] || this.byEnd[index]) {\n return;\n }\n\n var chunk = this.lastSearchedChunk;\n var searchForward = index > chunk.end;\n\n while (chunk) {\n if (chunk.contains(index)) {\n return this._splitChunk(chunk, index);\n }\n\n chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n }\n};\n\nMagicString.prototype._splitChunk = function _splitChunk(chunk, index) {\n if (chunk.edited && chunk.content.length) {\n // zero-length edited chunks are a special case (overlapping replacements)\n var loc = getLocator(this.original)(index);\n throw new Error(\"Cannot split a chunk that has already been edited (\" + loc.line + \":\" + loc.column + \" – \\\"\" + chunk.original + \"\\\")\");\n }\n\n var newChunk = chunk.split(index);\n this.byEnd[index] = chunk;\n this.byStart[index] = newChunk;\n this.byEnd[newChunk.end] = newChunk;\n\n if (chunk === this.lastChunk) {\n this.lastChunk = newChunk;\n }\n\n this.lastSearchedChunk = chunk;\n return true;\n};\n\nMagicString.prototype.toString = function toString() {\n var str = this.intro;\n var chunk = this.firstChunk;\n\n while (chunk) {\n str += chunk.toString();\n chunk = chunk.next;\n }\n\n return str + this.outro;\n};\n\nMagicString.prototype.isEmpty = function isEmpty() {\n var chunk = this.firstChunk;\n\n do {\n if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) {\n return false;\n }\n } while (chunk = chunk.next);\n\n return true;\n};\n\nMagicString.prototype.length = function length() {\n var chunk = this.firstChunk;\n var length = 0;\n\n do {\n length += chunk.intro.length + chunk.content.length + chunk.outro.length;\n } while (chunk = chunk.next);\n\n return length;\n};\n\nMagicString.prototype.trimLines = function trimLines() {\n return this.trim('[\\\\r\\\\n]');\n};\n\nMagicString.prototype.trim = function trim(charType) {\n return this.trimStart(charType).trimEnd(charType);\n};\n\nMagicString.prototype.trimEndAborted = function trimEndAborted(charType) {\n var rx = new RegExp((charType || '\\\\s') + '+$');\n this.outro = this.outro.replace(rx, '');\n\n if (this.outro.length) {\n return true;\n }\n\n var chunk = this.lastChunk;\n\n do {\n var end = chunk.end;\n var aborted = chunk.trimEnd(rx); // if chunk was trimmed, we have a new lastChunk\n\n if (chunk.end !== end) {\n if (this.lastChunk === chunk) {\n this.lastChunk = chunk.next;\n }\n\n this.byEnd[chunk.end] = chunk;\n this.byStart[chunk.next.start] = chunk.next;\n this.byEnd[chunk.next.end] = chunk.next;\n }\n\n if (aborted) {\n return true;\n }\n\n chunk = chunk.previous;\n } while (chunk);\n\n return false;\n};\n\nMagicString.prototype.trimEnd = function trimEnd(charType) {\n this.trimEndAborted(charType);\n return this;\n};\n\nMagicString.prototype.trimStartAborted = function trimStartAborted(charType) {\n var rx = new RegExp('^' + (charType || '\\\\s') + '+');\n this.intro = this.intro.replace(rx, '');\n\n if (this.intro.length) {\n return true;\n }\n\n var chunk = this.firstChunk;\n\n do {\n var end = chunk.end;\n var aborted = chunk.trimStart(rx);\n\n if (chunk.end !== end) {\n // special case...\n if (chunk === this.lastChunk) {\n this.lastChunk = chunk.next;\n }\n\n this.byEnd[chunk.end] = chunk;\n this.byStart[chunk.next.start] = chunk.next;\n this.byEnd[chunk.next.end] = chunk.next;\n }\n\n if (aborted) {\n return true;\n }\n\n chunk = chunk.next;\n } while (chunk);\n\n return false;\n};\n\nMagicString.prototype.trimStart = function trimStart(charType) {\n this.trimStartAborted(charType);\n return this;\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar Bundle = function Bundle(options) {\n if (options === void 0) options = {};\n this.intro = options.intro || '';\n this.separator = options.separator !== undefined ? options.separator : '\\n';\n this.sources = [];\n this.uniqueSources = [];\n this.uniqueSourceIndexByFilename = {};\n};\n\nBundle.prototype.addSource = function addSource(source) {\n if (source instanceof MagicString) {\n return this.addSource({\n content: source,\n filename: source.filename,\n separator: this.separator\n });\n }\n\n if (!isObject(source) || !source.content) {\n throw new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n }\n\n ['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n if (!hasOwnProp.call(source, option)) {\n source[option] = source.content[option];\n }\n });\n\n if (source.separator === undefined) {\n // TODO there's a bunch of this sort of thing, needs cleaning up\n source.separator = this.separator;\n }\n\n if (source.filename) {\n if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n this.uniqueSources.push({\n filename: source.filename,\n content: source.content.original\n });\n } else {\n var uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\n if (source.content.original !== uniqueSource.content) {\n throw new Error(\"Illegal source: same filename (\" + source.filename + \"), different contents\");\n }\n }\n }\n\n this.sources.push(source);\n return this;\n};\n\nBundle.prototype.append = function append(str, options) {\n this.addSource({\n content: new MagicString(str),\n separator: options && options.separator || ''\n });\n return this;\n};\n\nBundle.prototype.clone = function clone() {\n var bundle = new Bundle({\n intro: this.intro,\n separator: this.separator\n });\n this.sources.forEach(function (source) {\n bundle.addSource({\n filename: source.filename,\n content: source.content.clone(),\n separator: source.separator\n });\n });\n return bundle;\n};\n\nBundle.prototype.generateDecodedMap = function generateDecodedMap(options) {\n var this$1 = this;\n if (options === void 0) options = {};\n var names = [];\n this.sources.forEach(function (source) {\n Object.keys(source.content.storedNames).forEach(function (name) {\n if (!~names.indexOf(name)) {\n names.push(name);\n }\n });\n });\n var mappings = new Mappings(options.hires);\n\n if (this.intro) {\n mappings.advance(this.intro);\n }\n\n this.sources.forEach(function (source, i) {\n if (i > 0) {\n mappings.advance(this$1.separator);\n }\n\n var sourceIndex = source.filename ? this$1.uniqueSourceIndexByFilename[source.filename] : -1;\n var magicString = source.content;\n var locate = getLocator(magicString.original);\n\n if (magicString.intro) {\n mappings.advance(magicString.intro);\n }\n\n magicString.firstChunk.eachNext(function (chunk) {\n var loc = locate(chunk.start);\n\n if (chunk.intro.length) {\n mappings.advance(chunk.intro);\n }\n\n if (source.filename) {\n if (chunk.edited) {\n mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n } else {\n mappings.addUneditedChunk(sourceIndex, chunk, magicString.original, loc, magicString.sourcemapLocations);\n }\n } else {\n mappings.advance(chunk.content);\n }\n\n if (chunk.outro.length) {\n mappings.advance(chunk.outro);\n }\n });\n\n if (magicString.outro) {\n mappings.advance(magicString.outro);\n }\n });\n return {\n file: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n sources: this.uniqueSources.map(function (source) {\n return options.file ? getRelativePath(options.file, source.filename) : source.filename;\n }),\n sourcesContent: this.uniqueSources.map(function (source) {\n return options.includeContent ? source.content : null;\n }),\n names: names,\n mappings: mappings.raw\n };\n};\n\nBundle.prototype.generateMap = function generateMap(options) {\n return new SourceMap(this.generateDecodedMap(options));\n};\n\nBundle.prototype.getIndentString = function getIndentString() {\n var indentStringCounts = {};\n this.sources.forEach(function (source) {\n var indentStr = source.content.indentStr;\n\n if (indentStr === null) {\n return;\n }\n\n if (!indentStringCounts[indentStr]) {\n indentStringCounts[indentStr] = 0;\n }\n\n indentStringCounts[indentStr] += 1;\n });\n return Object.keys(indentStringCounts).sort(function (a, b) {\n return indentStringCounts[a] - indentStringCounts[b];\n })[0] || '\\t';\n};\n\nBundle.prototype.indent = function indent(indentStr) {\n var this$1 = this;\n\n if (!arguments.length) {\n indentStr = this.getIndentString();\n }\n\n if (indentStr === '') {\n return this;\n } // noop\n\n\n var trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n this.sources.forEach(function (source, i) {\n var separator = source.separator !== undefined ? source.separator : this$1.separator;\n var indentStart = trailingNewline || i > 0 && /\\r?\\n$/.test(separator);\n source.content.indent(indentStr, {\n exclude: source.indentExclusionRanges,\n indentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\n });\n trailingNewline = source.content.lastChar() === '\\n';\n });\n\n if (this.intro) {\n this.intro = indentStr + this.intro.replace(/^[^\\n]/gm, function (match, index) {\n return index > 0 ? indentStr + match : match;\n });\n }\n\n return this;\n};\n\nBundle.prototype.prepend = function prepend(str) {\n this.intro = str + this.intro;\n return this;\n};\n\nBundle.prototype.toString = function toString() {\n var this$1 = this;\n var body = this.sources.map(function (source, i) {\n var separator = source.separator !== undefined ? source.separator : this$1.separator;\n var str = (i > 0 ? separator : '') + source.content.toString();\n return str;\n }).join('');\n return this.intro + body;\n};\n\nBundle.prototype.isEmpty = function isEmpty() {\n if (this.intro.length && this.intro.trim()) {\n return false;\n }\n\n if (this.sources.some(function (source) {\n return !source.content.isEmpty();\n })) {\n return false;\n }\n\n return true;\n};\n\nBundle.prototype.length = function length() {\n return this.sources.reduce(function (length, source) {\n return length + source.content.length();\n }, this.intro.length);\n};\n\nBundle.prototype.trimLines = function trimLines() {\n return this.trim('[\\\\r\\\\n]');\n};\n\nBundle.prototype.trim = function trim(charType) {\n return this.trimStart(charType).trimEnd(charType);\n};\n\nBundle.prototype.trimStart = function trimStart(charType) {\n var rx = new RegExp('^' + (charType || '\\\\s') + '+');\n this.intro = this.intro.replace(rx, '');\n\n if (!this.intro) {\n var source;\n var i = 0;\n\n do {\n source = this.sources[i++];\n\n if (!source) {\n break;\n }\n } while (!source.content.trimStartAborted(charType));\n }\n\n return this;\n};\n\nBundle.prototype.trimEnd = function trimEnd(charType) {\n var rx = new RegExp((charType || '\\\\s') + '+$');\n var source;\n var i = this.sources.length - 1;\n\n do {\n source = this.sources[i--];\n\n if (!source) {\n this.intro = this.intro.replace(rx, '');\n break;\n }\n } while (!source.content.trimEndAborted(charType));\n\n return this;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MagicString);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/magic-string/dist/magic-string.es.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(Buffer) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Bundle\", function() { return Bundle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SourceMap\", function() { return SourceMap; });\n/* harmony import */ var sourcemap_codec__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! sourcemap-codec */ \"./node_modules/sourcemap-codec/dist/sourcemap-codec.es.js\");\n\n\nvar Chunk = function Chunk(start, end, content) {\n this.start = start;\n this.end = end;\n this.original = content;\n this.intro = '';\n this.outro = '';\n this.content = content;\n this.storeName = false;\n this.edited = false; // we make these non-enumerable, for sanity while debugging\n\n Object.defineProperties(this, {\n previous: {\n writable: true,\n value: null\n },\n next: {\n writable: true,\n value: null\n }\n });\n};\n\nChunk.prototype.appendLeft = function appendLeft(content) {\n this.outro += content;\n};\n\nChunk.prototype.appendRight = function appendRight(content) {\n this.intro = this.intro + content;\n};\n\nChunk.prototype.clone = function clone() {\n var chunk = new Chunk(this.start, this.end, this.original);\n chunk.intro = this.intro;\n chunk.outro = this.outro;\n chunk.content = this.content;\n chunk.storeName = this.storeName;\n chunk.edited = this.edited;\n return chunk;\n};\n\nChunk.prototype.contains = function contains(index) {\n return this.start < index && index < this.end;\n};\n\nChunk.prototype.eachNext = function eachNext(fn) {\n var chunk = this;\n\n while (chunk) {\n fn(chunk);\n chunk = chunk.next;\n }\n};\n\nChunk.prototype.eachPrevious = function eachPrevious(fn) {\n var chunk = this;\n\n while (chunk) {\n fn(chunk);\n chunk = chunk.previous;\n }\n};\n\nChunk.prototype.edit = function edit(content, storeName, contentOnly) {\n this.content = content;\n\n if (!contentOnly) {\n this.intro = '';\n this.outro = '';\n }\n\n this.storeName = storeName;\n this.edited = true;\n return this;\n};\n\nChunk.prototype.prependLeft = function prependLeft(content) {\n this.outro = content + this.outro;\n};\n\nChunk.prototype.prependRight = function prependRight(content) {\n this.intro = content + this.intro;\n};\n\nChunk.prototype.split = function split(index) {\n var sliceIndex = index - this.start;\n var originalBefore = this.original.slice(0, sliceIndex);\n var originalAfter = this.original.slice(sliceIndex);\n this.original = originalBefore;\n var newChunk = new Chunk(index, this.end, originalAfter);\n newChunk.outro = this.outro;\n this.outro = '';\n this.end = index;\n\n if (this.edited) {\n // TODO is this block necessary?...\n newChunk.edit('', false);\n this.content = '';\n } else {\n this.content = originalBefore;\n }\n\n newChunk.next = this.next;\n\n if (newChunk.next) {\n newChunk.next.previous = newChunk;\n }\n\n newChunk.previous = this;\n this.next = newChunk;\n return newChunk;\n};\n\nChunk.prototype.toString = function toString() {\n return this.intro + this.content + this.outro;\n};\n\nChunk.prototype.trimEnd = function trimEnd(rx) {\n this.outro = this.outro.replace(rx, '');\n\n if (this.outro.length) {\n return true;\n }\n\n var trimmed = this.content.replace(rx, '');\n\n if (trimmed.length) {\n if (trimmed !== this.content) {\n this.split(this.start + trimmed.length).edit('', undefined, true);\n }\n\n return true;\n } else {\n this.edit('', undefined, true);\n this.intro = this.intro.replace(rx, '');\n\n if (this.intro.length) {\n return true;\n }\n }\n};\n\nChunk.prototype.trimStart = function trimStart(rx) {\n this.intro = this.intro.replace(rx, '');\n\n if (this.intro.length) {\n return true;\n }\n\n var trimmed = this.content.replace(rx, '');\n\n if (trimmed.length) {\n if (trimmed !== this.content) {\n this.split(this.end - trimmed.length);\n this.edit('', undefined, true);\n }\n\n return true;\n } else {\n this.edit('', undefined, true);\n this.outro = this.outro.replace(rx, '');\n\n if (this.outro.length) {\n return true;\n }\n }\n};\n\nvar btoa = function btoa() {\n throw new Error('Unsupported environment: `window.btoa` or `Buffer` should be supported.');\n};\n\nif (typeof window !== 'undefined' && typeof window.btoa === 'function') {\n btoa = function btoa(str) {\n return window.btoa(unescape(encodeURIComponent(str)));\n };\n} else if (typeof Buffer === 'function') {\n btoa = function btoa(str) {\n return Buffer.from(str, 'utf-8').toString('base64');\n };\n}\n\nvar SourceMap = function SourceMap(properties) {\n this.version = 3;\n this.file = properties.file;\n this.sources = properties.sources;\n this.sourcesContent = properties.sourcesContent;\n this.names = properties.names;\n this.mappings = Object(sourcemap_codec__WEBPACK_IMPORTED_MODULE_0__[\"encode\"])(properties.mappings);\n};\n\nSourceMap.prototype.toString = function toString() {\n return JSON.stringify(this);\n};\n\nSourceMap.prototype.toUrl = function toUrl() {\n return 'data:application/json;charset=utf-8;base64,' + btoa(this.toString());\n};\n\nfunction guessIndent(code) {\n var lines = code.split('\\n');\n var tabbed = lines.filter(function (line) {\n return /^\\t+/.test(line);\n });\n var spaced = lines.filter(function (line) {\n return /^ {2,}/.test(line);\n });\n\n if (tabbed.length === 0 && spaced.length === 0) {\n return null;\n } // More lines tabbed than spaced? Assume tabs, and\n // default to tabs in the case of a tie (or nothing\n // to go on)\n\n\n if (tabbed.length >= spaced.length) {\n return '\\t';\n } // Otherwise, we need to guess the multiple\n\n\n var min = spaced.reduce(function (previous, current) {\n var numSpaces = /^ +/.exec(current)[0].length;\n return Math.min(numSpaces, previous);\n }, Infinity);\n return new Array(min + 1).join(' ');\n}\n\nfunction getRelativePath(from, to) {\n var fromParts = from.split(/[/\\\\]/);\n var toParts = to.split(/[/\\\\]/);\n fromParts.pop(); // get dirname\n\n while (fromParts[0] === toParts[0]) {\n fromParts.shift();\n toParts.shift();\n }\n\n if (fromParts.length) {\n var i = fromParts.length;\n\n while (i--) {\n fromParts[i] = '..';\n }\n }\n\n return fromParts.concat(toParts).join('/');\n}\n\nvar toString = Object.prototype.toString;\n\nfunction isObject(thing) {\n return toString.call(thing) === '[object Object]';\n}\n\nfunction getLocator(source) {\n var originalLines = source.split('\\n');\n var lineOffsets = [];\n\n for (var i = 0, pos = 0; i < originalLines.length; i++) {\n lineOffsets.push(pos);\n pos += originalLines[i].length + 1;\n }\n\n return function locate(index) {\n var i = 0;\n var j = lineOffsets.length;\n\n while (i < j) {\n var m = i + j >> 1;\n\n if (index < lineOffsets[m]) {\n j = m;\n } else {\n i = m + 1;\n }\n }\n\n var line = i - 1;\n var column = index - lineOffsets[line];\n return {\n line: line,\n column: column\n };\n };\n}\n\nvar Mappings = function Mappings(hires) {\n this.hires = hires;\n this.generatedCodeLine = 0;\n this.generatedCodeColumn = 0;\n this.raw = [];\n this.rawSegments = this.raw[this.generatedCodeLine] = [];\n this.pending = null;\n};\n\nMappings.prototype.addEdit = function addEdit(sourceIndex, content, loc, nameIndex) {\n if (content.length) {\n var segment = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n\n if (nameIndex >= 0) {\n segment.push(nameIndex);\n }\n\n this.rawSegments.push(segment);\n } else if (this.pending) {\n this.rawSegments.push(this.pending);\n }\n\n this.advance(content);\n this.pending = null;\n};\n\nMappings.prototype.addUneditedChunk = function addUneditedChunk(sourceIndex, chunk, original, loc, sourcemapLocations) {\n var originalCharIndex = chunk.start;\n var first = true;\n\n while (originalCharIndex < chunk.end) {\n if (this.hires || first || sourcemapLocations[originalCharIndex]) {\n this.rawSegments.push([this.generatedCodeColumn, sourceIndex, loc.line, loc.column]);\n }\n\n if (original[originalCharIndex] === '\\n') {\n loc.line += 1;\n loc.column = 0;\n this.generatedCodeLine += 1;\n this.raw[this.generatedCodeLine] = this.rawSegments = [];\n this.generatedCodeColumn = 0;\n } else {\n loc.column += 1;\n this.generatedCodeColumn += 1;\n }\n\n originalCharIndex += 1;\n first = false;\n }\n\n this.pending = [this.generatedCodeColumn, sourceIndex, loc.line, loc.column];\n};\n\nMappings.prototype.advance = function advance(str) {\n if (!str) {\n return;\n }\n\n var lines = str.split('\\n');\n\n if (lines.length > 1) {\n for (var i = 0; i < lines.length - 1; i++) {\n this.generatedCodeLine++;\n this.raw[this.generatedCodeLine] = this.rawSegments = [];\n }\n\n this.generatedCodeColumn = 0;\n }\n\n this.generatedCodeColumn += lines[lines.length - 1].length;\n};\n\nvar n = '\\n';\nvar warned = {\n insertLeft: false,\n insertRight: false,\n storeName: false\n};\n\nvar MagicString = function MagicString(string, options) {\n if (options === void 0) options = {};\n var chunk = new Chunk(0, string.length, string);\n Object.defineProperties(this, {\n original: {\n writable: true,\n value: string\n },\n outro: {\n writable: true,\n value: ''\n },\n intro: {\n writable: true,\n value: ''\n },\n firstChunk: {\n writable: true,\n value: chunk\n },\n lastChunk: {\n writable: true,\n value: chunk\n },\n lastSearchedChunk: {\n writable: true,\n value: chunk\n },\n byStart: {\n writable: true,\n value: {}\n },\n byEnd: {\n writable: true,\n value: {}\n },\n filename: {\n writable: true,\n value: options.filename\n },\n indentExclusionRanges: {\n writable: true,\n value: options.indentExclusionRanges\n },\n sourcemapLocations: {\n writable: true,\n value: {}\n },\n storedNames: {\n writable: true,\n value: {}\n },\n indentStr: {\n writable: true,\n value: guessIndent(string)\n }\n });\n this.byStart[0] = chunk;\n this.byEnd[string.length] = chunk;\n};\n\nMagicString.prototype.addSourcemapLocation = function addSourcemapLocation(_char) {\n this.sourcemapLocations[_char] = true;\n};\n\nMagicString.prototype.append = function append(content) {\n if (typeof content !== 'string') {\n throw new TypeError('outro content must be a string');\n }\n\n this.outro += content;\n return this;\n};\n\nMagicString.prototype.appendLeft = function appendLeft(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byEnd[index];\n\n if (chunk) {\n chunk.appendLeft(content);\n } else {\n this.intro += content;\n }\n\n return this;\n};\n\nMagicString.prototype.appendRight = function appendRight(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byStart[index];\n\n if (chunk) {\n chunk.appendRight(content);\n } else {\n this.outro += content;\n }\n\n return this;\n};\n\nMagicString.prototype.clone = function clone() {\n var cloned = new MagicString(this.original, {\n filename: this.filename\n });\n var originalChunk = this.firstChunk;\n var clonedChunk = cloned.firstChunk = cloned.lastSearchedChunk = originalChunk.clone();\n\n while (originalChunk) {\n cloned.byStart[clonedChunk.start] = clonedChunk;\n cloned.byEnd[clonedChunk.end] = clonedChunk;\n var nextOriginalChunk = originalChunk.next;\n var nextClonedChunk = nextOriginalChunk && nextOriginalChunk.clone();\n\n if (nextClonedChunk) {\n clonedChunk.next = nextClonedChunk;\n nextClonedChunk.previous = clonedChunk;\n clonedChunk = nextClonedChunk;\n }\n\n originalChunk = nextOriginalChunk;\n }\n\n cloned.lastChunk = clonedChunk;\n\n if (this.indentExclusionRanges) {\n cloned.indentExclusionRanges = this.indentExclusionRanges.slice();\n }\n\n Object.keys(this.sourcemapLocations).forEach(function (loc) {\n cloned.sourcemapLocations[loc] = true;\n });\n return cloned;\n};\n\nMagicString.prototype.generateDecodedMap = function generateDecodedMap(options) {\n var this$1 = this;\n options = options || {};\n var sourceIndex = 0;\n var names = Object.keys(this.storedNames);\n var mappings = new Mappings(options.hires);\n var locate = getLocator(this.original);\n\n if (this.intro) {\n mappings.advance(this.intro);\n }\n\n this.firstChunk.eachNext(function (chunk) {\n var loc = locate(chunk.start);\n\n if (chunk.intro.length) {\n mappings.advance(chunk.intro);\n }\n\n if (chunk.edited) {\n mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n } else {\n mappings.addUneditedChunk(sourceIndex, chunk, this$1.original, loc, this$1.sourcemapLocations);\n }\n\n if (chunk.outro.length) {\n mappings.advance(chunk.outro);\n }\n });\n return {\n file: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n sources: [options.source ? getRelativePath(options.file || '', options.source) : null],\n sourcesContent: options.includeContent ? [this.original] : [null],\n names: names,\n mappings: mappings.raw\n };\n};\n\nMagicString.prototype.generateMap = function generateMap(options) {\n return new SourceMap(this.generateDecodedMap(options));\n};\n\nMagicString.prototype.getIndentString = function getIndentString() {\n return this.indentStr === null ? '\\t' : this.indentStr;\n};\n\nMagicString.prototype.indent = function indent(indentStr, options) {\n var pattern = /^[^\\r\\n]/gm;\n\n if (isObject(indentStr)) {\n options = indentStr;\n indentStr = undefined;\n }\n\n indentStr = indentStr !== undefined ? indentStr : this.indentStr || '\\t';\n\n if (indentStr === '') {\n return this;\n } // noop\n\n\n options = options || {}; // Process exclusion ranges\n\n var isExcluded = {};\n\n if (options.exclude) {\n var exclusions = typeof options.exclude[0] === 'number' ? [options.exclude] : options.exclude;\n exclusions.forEach(function (exclusion) {\n for (var i = exclusion[0]; i < exclusion[1]; i += 1) {\n isExcluded[i] = true;\n }\n });\n }\n\n var shouldIndentNextCharacter = options.indentStart !== false;\n\n var replacer = function replacer(match) {\n if (shouldIndentNextCharacter) {\n return \"\" + indentStr + match;\n }\n\n shouldIndentNextCharacter = true;\n return match;\n };\n\n this.intro = this.intro.replace(pattern, replacer);\n var charIndex = 0;\n var chunk = this.firstChunk;\n\n while (chunk) {\n var end = chunk.end;\n\n if (chunk.edited) {\n if (!isExcluded[charIndex]) {\n chunk.content = chunk.content.replace(pattern, replacer);\n\n if (chunk.content.length) {\n shouldIndentNextCharacter = chunk.content[chunk.content.length - 1] === '\\n';\n }\n }\n } else {\n charIndex = chunk.start;\n\n while (charIndex < end) {\n if (!isExcluded[charIndex]) {\n var _char2 = this.original[charIndex];\n\n if (_char2 === '\\n') {\n shouldIndentNextCharacter = true;\n } else if (_char2 !== '\\r' && shouldIndentNextCharacter) {\n shouldIndentNextCharacter = false;\n\n if (charIndex === chunk.start) {\n chunk.prependRight(indentStr);\n } else {\n this._splitChunk(chunk, charIndex);\n\n chunk = chunk.next;\n chunk.prependRight(indentStr);\n }\n }\n }\n\n charIndex += 1;\n }\n }\n\n charIndex = chunk.end;\n chunk = chunk.next;\n }\n\n this.outro = this.outro.replace(pattern, replacer);\n return this;\n};\n\nMagicString.prototype.insert = function insert() {\n throw new Error('magicString.insert(...) is deprecated. Use prependRight(...) or appendLeft(...)');\n};\n\nMagicString.prototype.insertLeft = function insertLeft(index, content) {\n if (!warned.insertLeft) {\n console.warn('magicString.insertLeft(...) is deprecated. Use magicString.appendLeft(...) instead'); // eslint-disable-line no-console\n\n warned.insertLeft = true;\n }\n\n return this.appendLeft(index, content);\n};\n\nMagicString.prototype.insertRight = function insertRight(index, content) {\n if (!warned.insertRight) {\n console.warn('magicString.insertRight(...) is deprecated. Use magicString.prependRight(...) instead'); // eslint-disable-line no-console\n\n warned.insertRight = true;\n }\n\n return this.prependRight(index, content);\n};\n\nMagicString.prototype.move = function move(start, end, index) {\n if (index >= start && index <= end) {\n throw new Error('Cannot move a selection inside itself');\n }\n\n this._split(start);\n\n this._split(end);\n\n this._split(index);\n\n var first = this.byStart[start];\n var last = this.byEnd[end];\n var oldLeft = first.previous;\n var oldRight = last.next;\n var newRight = this.byStart[index];\n\n if (!newRight && last === this.lastChunk) {\n return this;\n }\n\n var newLeft = newRight ? newRight.previous : this.lastChunk;\n\n if (oldLeft) {\n oldLeft.next = oldRight;\n }\n\n if (oldRight) {\n oldRight.previous = oldLeft;\n }\n\n if (newLeft) {\n newLeft.next = first;\n }\n\n if (newRight) {\n newRight.previous = last;\n }\n\n if (!first.previous) {\n this.firstChunk = last.next;\n }\n\n if (!last.next) {\n this.lastChunk = first.previous;\n this.lastChunk.next = null;\n }\n\n first.previous = newLeft;\n last.next = newRight || null;\n\n if (!newLeft) {\n this.firstChunk = first;\n }\n\n if (!newRight) {\n this.lastChunk = last;\n }\n\n return this;\n};\n\nMagicString.prototype.overwrite = function overwrite(start, end, content, options) {\n if (typeof content !== 'string') {\n throw new TypeError('replacement content must be a string');\n }\n\n while (start < 0) {\n start += this.original.length;\n }\n\n while (end < 0) {\n end += this.original.length;\n }\n\n if (end > this.original.length) {\n throw new Error('end is out of bounds');\n }\n\n if (start === end) {\n throw new Error('Cannot overwrite a zero-length range – use appendLeft or prependRight instead');\n }\n\n this._split(start);\n\n this._split(end);\n\n if (options === true) {\n if (!warned.storeName) {\n console.warn('The final argument to magicString.overwrite(...) should be an options object. See https://github.com/rich-harris/magic-string'); // eslint-disable-line no-console\n\n warned.storeName = true;\n }\n\n options = {\n storeName: true\n };\n }\n\n var storeName = options !== undefined ? options.storeName : false;\n var contentOnly = options !== undefined ? options.contentOnly : false;\n\n if (storeName) {\n var original = this.original.slice(start, end);\n this.storedNames[original] = true;\n }\n\n var first = this.byStart[start];\n var last = this.byEnd[end];\n\n if (first) {\n if (end > first.end && first.next !== this.byStart[first.end]) {\n throw new Error('Cannot overwrite across a split point');\n }\n\n first.edit(content, storeName, contentOnly);\n\n if (first !== last) {\n var chunk = first.next;\n\n while (chunk !== last) {\n chunk.edit('', false);\n chunk = chunk.next;\n }\n\n chunk.edit('', false);\n }\n } else {\n // must be inserting at the end\n var newChunk = new Chunk(start, end, '').edit(content, storeName); // TODO last chunk in the array may not be the last chunk, if it's moved...\n\n last.next = newChunk;\n newChunk.previous = last;\n }\n\n return this;\n};\n\nMagicString.prototype.prepend = function prepend(content) {\n if (typeof content !== 'string') {\n throw new TypeError('outro content must be a string');\n }\n\n this.intro = content + this.intro;\n return this;\n};\n\nMagicString.prototype.prependLeft = function prependLeft(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byEnd[index];\n\n if (chunk) {\n chunk.prependLeft(content);\n } else {\n this.intro = content + this.intro;\n }\n\n return this;\n};\n\nMagicString.prototype.prependRight = function prependRight(index, content) {\n if (typeof content !== 'string') {\n throw new TypeError('inserted content must be a string');\n }\n\n this._split(index);\n\n var chunk = this.byStart[index];\n\n if (chunk) {\n chunk.prependRight(content);\n } else {\n this.outro = content + this.outro;\n }\n\n return this;\n};\n\nMagicString.prototype.remove = function remove(start, end) {\n while (start < 0) {\n start += this.original.length;\n }\n\n while (end < 0) {\n end += this.original.length;\n }\n\n if (start === end) {\n return this;\n }\n\n if (start < 0 || end > this.original.length) {\n throw new Error('Character is out of bounds');\n }\n\n if (start > end) {\n throw new Error('end must be greater than start');\n }\n\n this._split(start);\n\n this._split(end);\n\n var chunk = this.byStart[start];\n\n while (chunk) {\n chunk.intro = '';\n chunk.outro = '';\n chunk.edit('');\n chunk = end > chunk.end ? this.byStart[chunk.end] : null;\n }\n\n return this;\n};\n\nMagicString.prototype.lastChar = function lastChar() {\n if (this.outro.length) {\n return this.outro[this.outro.length - 1];\n }\n\n var chunk = this.lastChunk;\n\n do {\n if (chunk.outro.length) {\n return chunk.outro[chunk.outro.length - 1];\n }\n\n if (chunk.content.length) {\n return chunk.content[chunk.content.length - 1];\n }\n\n if (chunk.intro.length) {\n return chunk.intro[chunk.intro.length - 1];\n }\n } while (chunk = chunk.previous);\n\n if (this.intro.length) {\n return this.intro[this.intro.length - 1];\n }\n\n return '';\n};\n\nMagicString.prototype.lastLine = function lastLine() {\n var lineIndex = this.outro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return this.outro.substr(lineIndex + 1);\n }\n\n var lineStr = this.outro;\n var chunk = this.lastChunk;\n\n do {\n if (chunk.outro.length > 0) {\n lineIndex = chunk.outro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return chunk.outro.substr(lineIndex + 1) + lineStr;\n }\n\n lineStr = chunk.outro + lineStr;\n }\n\n if (chunk.content.length > 0) {\n lineIndex = chunk.content.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return chunk.content.substr(lineIndex + 1) + lineStr;\n }\n\n lineStr = chunk.content + lineStr;\n }\n\n if (chunk.intro.length > 0) {\n lineIndex = chunk.intro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return chunk.intro.substr(lineIndex + 1) + lineStr;\n }\n\n lineStr = chunk.intro + lineStr;\n }\n } while (chunk = chunk.previous);\n\n lineIndex = this.intro.lastIndexOf(n);\n\n if (lineIndex !== -1) {\n return this.intro.substr(lineIndex + 1) + lineStr;\n }\n\n return this.intro + lineStr;\n};\n\nMagicString.prototype.slice = function slice(start, end) {\n if (start === void 0) start = 0;\n if (end === void 0) end = this.original.length;\n\n while (start < 0) {\n start += this.original.length;\n }\n\n while (end < 0) {\n end += this.original.length;\n }\n\n var result = ''; // find start chunk\n\n var chunk = this.firstChunk;\n\n while (chunk && (chunk.start > start || chunk.end <= start)) {\n // found end chunk before start\n if (chunk.start < end && chunk.end >= end) {\n return result;\n }\n\n chunk = chunk.next;\n }\n\n if (chunk && chunk.edited && chunk.start !== start) {\n throw new Error(\"Cannot use replaced character \" + start + \" as slice start anchor.\");\n }\n\n var startChunk = chunk;\n\n while (chunk) {\n if (chunk.intro && (startChunk !== chunk || chunk.start === start)) {\n result += chunk.intro;\n }\n\n var containsEnd = chunk.start < end && chunk.end >= end;\n\n if (containsEnd && chunk.edited && chunk.end !== end) {\n throw new Error(\"Cannot use replaced character \" + end + \" as slice end anchor.\");\n }\n\n var sliceStart = startChunk === chunk ? start - chunk.start : 0;\n var sliceEnd = containsEnd ? chunk.content.length + end - chunk.end : chunk.content.length;\n result += chunk.content.slice(sliceStart, sliceEnd);\n\n if (chunk.outro && (!containsEnd || chunk.end === end)) {\n result += chunk.outro;\n }\n\n if (containsEnd) {\n break;\n }\n\n chunk = chunk.next;\n }\n\n return result;\n}; // TODO deprecate this? not really very useful\n\n\nMagicString.prototype.snip = function snip(start, end) {\n var clone = this.clone();\n clone.remove(0, start);\n clone.remove(end, clone.original.length);\n return clone;\n};\n\nMagicString.prototype._split = function _split(index) {\n if (this.byStart[index] || this.byEnd[index]) {\n return;\n }\n\n var chunk = this.lastSearchedChunk;\n var searchForward = index > chunk.end;\n\n while (chunk) {\n if (chunk.contains(index)) {\n return this._splitChunk(chunk, index);\n }\n\n chunk = searchForward ? this.byStart[chunk.end] : this.byEnd[chunk.start];\n }\n};\n\nMagicString.prototype._splitChunk = function _splitChunk(chunk, index) {\n if (chunk.edited && chunk.content.length) {\n // zero-length edited chunks are a special case (overlapping replacements)\n var loc = getLocator(this.original)(index);\n throw new Error(\"Cannot split a chunk that has already been edited (\" + loc.line + \":\" + loc.column + \" – \\\"\" + chunk.original + \"\\\")\");\n }\n\n var newChunk = chunk.split(index);\n this.byEnd[index] = chunk;\n this.byStart[index] = newChunk;\n this.byEnd[newChunk.end] = newChunk;\n\n if (chunk === this.lastChunk) {\n this.lastChunk = newChunk;\n }\n\n this.lastSearchedChunk = chunk;\n return true;\n};\n\nMagicString.prototype.toString = function toString() {\n var str = this.intro;\n var chunk = this.firstChunk;\n\n while (chunk) {\n str += chunk.toString();\n chunk = chunk.next;\n }\n\n return str + this.outro;\n};\n\nMagicString.prototype.isEmpty = function isEmpty() {\n var chunk = this.firstChunk;\n\n do {\n if (chunk.intro.length && chunk.intro.trim() || chunk.content.length && chunk.content.trim() || chunk.outro.length && chunk.outro.trim()) {\n return false;\n }\n } while (chunk = chunk.next);\n\n return true;\n};\n\nMagicString.prototype.length = function length() {\n var chunk = this.firstChunk;\n var length = 0;\n\n do {\n length += chunk.intro.length + chunk.content.length + chunk.outro.length;\n } while (chunk = chunk.next);\n\n return length;\n};\n\nMagicString.prototype.trimLines = function trimLines() {\n return this.trim('[\\\\r\\\\n]');\n};\n\nMagicString.prototype.trim = function trim(charType) {\n return this.trimStart(charType).trimEnd(charType);\n};\n\nMagicString.prototype.trimEndAborted = function trimEndAborted(charType) {\n var rx = new RegExp((charType || '\\\\s') + '+$');\n this.outro = this.outro.replace(rx, '');\n\n if (this.outro.length) {\n return true;\n }\n\n var chunk = this.lastChunk;\n\n do {\n var end = chunk.end;\n var aborted = chunk.trimEnd(rx); // if chunk was trimmed, we have a new lastChunk\n\n if (chunk.end !== end) {\n if (this.lastChunk === chunk) {\n this.lastChunk = chunk.next;\n }\n\n this.byEnd[chunk.end] = chunk;\n this.byStart[chunk.next.start] = chunk.next;\n this.byEnd[chunk.next.end] = chunk.next;\n }\n\n if (aborted) {\n return true;\n }\n\n chunk = chunk.previous;\n } while (chunk);\n\n return false;\n};\n\nMagicString.prototype.trimEnd = function trimEnd(charType) {\n this.trimEndAborted(charType);\n return this;\n};\n\nMagicString.prototype.trimStartAborted = function trimStartAborted(charType) {\n var rx = new RegExp('^' + (charType || '\\\\s') + '+');\n this.intro = this.intro.replace(rx, '');\n\n if (this.intro.length) {\n return true;\n }\n\n var chunk = this.firstChunk;\n\n do {\n var end = chunk.end;\n var aborted = chunk.trimStart(rx);\n\n if (chunk.end !== end) {\n // special case...\n if (chunk === this.lastChunk) {\n this.lastChunk = chunk.next;\n }\n\n this.byEnd[chunk.end] = chunk;\n this.byStart[chunk.next.start] = chunk.next;\n this.byEnd[chunk.next.end] = chunk.next;\n }\n\n if (aborted) {\n return true;\n }\n\n chunk = chunk.next;\n } while (chunk);\n\n return false;\n};\n\nMagicString.prototype.trimStart = function trimStart(charType) {\n this.trimStartAborted(charType);\n return this;\n};\n\nvar hasOwnProp = Object.prototype.hasOwnProperty;\n\nvar Bundle = function Bundle(options) {\n if (options === void 0) options = {};\n this.intro = options.intro || '';\n this.separator = options.separator !== undefined ? options.separator : '\\n';\n this.sources = [];\n this.uniqueSources = [];\n this.uniqueSourceIndexByFilename = {};\n};\n\nBundle.prototype.addSource = function addSource(source) {\n if (source instanceof MagicString) {\n return this.addSource({\n content: source,\n filename: source.filename,\n separator: this.separator\n });\n }\n\n if (!isObject(source) || !source.content) {\n throw new Error('bundle.addSource() takes an object with a `content` property, which should be an instance of MagicString, and an optional `filename`');\n }\n\n ['filename', 'indentExclusionRanges', 'separator'].forEach(function (option) {\n if (!hasOwnProp.call(source, option)) {\n source[option] = source.content[option];\n }\n });\n\n if (source.separator === undefined) {\n // TODO there's a bunch of this sort of thing, needs cleaning up\n source.separator = this.separator;\n }\n\n if (source.filename) {\n if (!hasOwnProp.call(this.uniqueSourceIndexByFilename, source.filename)) {\n this.uniqueSourceIndexByFilename[source.filename] = this.uniqueSources.length;\n this.uniqueSources.push({\n filename: source.filename,\n content: source.content.original\n });\n } else {\n var uniqueSource = this.uniqueSources[this.uniqueSourceIndexByFilename[source.filename]];\n\n if (source.content.original !== uniqueSource.content) {\n throw new Error(\"Illegal source: same filename (\" + source.filename + \"), different contents\");\n }\n }\n }\n\n this.sources.push(source);\n return this;\n};\n\nBundle.prototype.append = function append(str, options) {\n this.addSource({\n content: new MagicString(str),\n separator: options && options.separator || ''\n });\n return this;\n};\n\nBundle.prototype.clone = function clone() {\n var bundle = new Bundle({\n intro: this.intro,\n separator: this.separator\n });\n this.sources.forEach(function (source) {\n bundle.addSource({\n filename: source.filename,\n content: source.content.clone(),\n separator: source.separator\n });\n });\n return bundle;\n};\n\nBundle.prototype.generateDecodedMap = function generateDecodedMap(options) {\n var this$1 = this;\n if (options === void 0) options = {};\n var names = [];\n this.sources.forEach(function (source) {\n Object.keys(source.content.storedNames).forEach(function (name) {\n if (!~names.indexOf(name)) {\n names.push(name);\n }\n });\n });\n var mappings = new Mappings(options.hires);\n\n if (this.intro) {\n mappings.advance(this.intro);\n }\n\n this.sources.forEach(function (source, i) {\n if (i > 0) {\n mappings.advance(this$1.separator);\n }\n\n var sourceIndex = source.filename ? this$1.uniqueSourceIndexByFilename[source.filename] : -1;\n var magicString = source.content;\n var locate = getLocator(magicString.original);\n\n if (magicString.intro) {\n mappings.advance(magicString.intro);\n }\n\n magicString.firstChunk.eachNext(function (chunk) {\n var loc = locate(chunk.start);\n\n if (chunk.intro.length) {\n mappings.advance(chunk.intro);\n }\n\n if (source.filename) {\n if (chunk.edited) {\n mappings.addEdit(sourceIndex, chunk.content, loc, chunk.storeName ? names.indexOf(chunk.original) : -1);\n } else {\n mappings.addUneditedChunk(sourceIndex, chunk, magicString.original, loc, magicString.sourcemapLocations);\n }\n } else {\n mappings.advance(chunk.content);\n }\n\n if (chunk.outro.length) {\n mappings.advance(chunk.outro);\n }\n });\n\n if (magicString.outro) {\n mappings.advance(magicString.outro);\n }\n });\n return {\n file: options.file ? options.file.split(/[/\\\\]/).pop() : null,\n sources: this.uniqueSources.map(function (source) {\n return options.file ? getRelativePath(options.file, source.filename) : source.filename;\n }),\n sourcesContent: this.uniqueSources.map(function (source) {\n return options.includeContent ? source.content : null;\n }),\n names: names,\n mappings: mappings.raw\n };\n};\n\nBundle.prototype.generateMap = function generateMap(options) {\n return new SourceMap(this.generateDecodedMap(options));\n};\n\nBundle.prototype.getIndentString = function getIndentString() {\n var indentStringCounts = {};\n this.sources.forEach(function (source) {\n var indentStr = source.content.indentStr;\n\n if (indentStr === null) {\n return;\n }\n\n if (!indentStringCounts[indentStr]) {\n indentStringCounts[indentStr] = 0;\n }\n\n indentStringCounts[indentStr] += 1;\n });\n return Object.keys(indentStringCounts).sort(function (a, b) {\n return indentStringCounts[a] - indentStringCounts[b];\n })[0] || '\\t';\n};\n\nBundle.prototype.indent = function indent(indentStr) {\n var this$1 = this;\n\n if (!arguments.length) {\n indentStr = this.getIndentString();\n }\n\n if (indentStr === '') {\n return this;\n } // noop\n\n\n var trailingNewline = !this.intro || this.intro.slice(-1) === '\\n';\n this.sources.forEach(function (source, i) {\n var separator = source.separator !== undefined ? source.separator : this$1.separator;\n var indentStart = trailingNewline || i > 0 && /\\r?\\n$/.test(separator);\n source.content.indent(indentStr, {\n exclude: source.indentExclusionRanges,\n indentStart: indentStart //: trailingNewline || /\\r?\\n$/.test( separator ) //true///\\r?\\n/.test( separator )\n\n });\n trailingNewline = source.content.lastChar() === '\\n';\n });\n\n if (this.intro) {\n this.intro = indentStr + this.intro.replace(/^[^\\n]/gm, function (match, index) {\n return index > 0 ? indentStr + match : match;\n });\n }\n\n return this;\n};\n\nBundle.prototype.prepend = function prepend(str) {\n this.intro = str + this.intro;\n return this;\n};\n\nBundle.prototype.toString = function toString() {\n var this$1 = this;\n var body = this.sources.map(function (source, i) {\n var separator = source.separator !== undefined ? source.separator : this$1.separator;\n var str = (i > 0 ? separator : '') + source.content.toString();\n return str;\n }).join('');\n return this.intro + body;\n};\n\nBundle.prototype.isEmpty = function isEmpty() {\n if (this.intro.length && this.intro.trim()) {\n return false;\n }\n\n if (this.sources.some(function (source) {\n return !source.content.isEmpty();\n })) {\n return false;\n }\n\n return true;\n};\n\nBundle.prototype.length = function length() {\n return this.sources.reduce(function (length, source) {\n return length + source.content.length();\n }, this.intro.length);\n};\n\nBundle.prototype.trimLines = function trimLines() {\n return this.trim('[\\\\r\\\\n]');\n};\n\nBundle.prototype.trim = function trim(charType) {\n return this.trimStart(charType).trimEnd(charType);\n};\n\nBundle.prototype.trimStart = function trimStart(charType) {\n var rx = new RegExp('^' + (charType || '\\\\s') + '+');\n this.intro = this.intro.replace(rx, '');\n\n if (!this.intro) {\n var source;\n var i = 0;\n\n do {\n source = this.sources[i++];\n\n if (!source) {\n break;\n }\n } while (!source.content.trimStartAborted(charType));\n }\n\n return this;\n};\n\nBundle.prototype.trimEnd = function trimEnd(charType) {\n var rx = new RegExp((charType || '\\\\s') + '+$');\n var source;\n var i = this.sources.length - 1;\n\n do {\n source = this.sources[i--];\n\n if (!source) {\n this.intro = this.intro.replace(rx, '');\n break;\n }\n } while (!source.content.trimEndAborted(charType));\n\n return this;\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (MagicString);\n\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../node-libs-browser/node_modules/buffer/index.js */ \"./node_modules/node-libs-browser/node_modules/buffer/index.js\").Buffer))\n\n//# sourceURL=webpack:///./node_modules/magic-string/dist/magic-string.es.js?"); /***/ }), @@ -10327,6 +10365,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/memoize-one/dist/memoize-one.esm.js": +/*!**********************************************************!*\ + !*** ./node_modules/memoize-one/dist/memoize-one.esm.js ***! + \**********************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nvar simpleIsEqual = function simpleIsEqual(a, b) {\n return a === b;\n};\n\nfunction index(resultFn, isEqual) {\n if (isEqual === void 0) {\n isEqual = simpleIsEqual;\n }\n\n var lastThis;\n var lastArgs = [];\n var lastResult;\n var calledOnce = false;\n\n var isNewArgEqualToLast = function isNewArgEqualToLast(newArg, index) {\n return isEqual(newArg, lastArgs[index]);\n };\n\n var result = function result() {\n for (var _len = arguments.length, newArgs = new Array(_len), _key = 0; _key < _len; _key++) {\n newArgs[_key] = arguments[_key];\n }\n\n if (calledOnce && lastThis === this && newArgs.length === lastArgs.length && newArgs.every(isNewArgEqualToLast)) {\n return lastResult;\n }\n\n lastResult = resultFn.apply(this, newArgs);\n calledOnce = true;\n lastThis = this;\n lastArgs = newArgs;\n return lastResult;\n };\n\n return result;\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/memoize-one/dist/memoize-one.esm.js?"); + +/***/ }), + /***/ "./node_modules/ms/index.js": /*!**********************************!*\ !*** ./node_modules/ms/index.js ***! @@ -11583,18 +11633,6 @@ eval("!function (e, t) {\n true ? module.exports = t(__webpack_require__(/*! r /***/ }), -/***/ "./node_modules/react-portal/build/portal.js": -/*!***************************************************!*\ - !*** ./node_modules/react-portal/build/portal.js ***! - \***************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -"use strict"; -eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _reactDom = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n\nvar _reactDom2 = _interopRequireDefault(_reactDom);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar KEYCODES = {\n ESCAPE: 27\n};\n\nvar Portal = function (_React$Component) {\n _inherits(Portal, _React$Component);\n\n function Portal() {\n _classCallCheck(this, Portal);\n\n var _this = _possibleConstructorReturn(this, (Portal.__proto__ || Object.getPrototypeOf(Portal)).call(this));\n\n _this.state = {\n active: false\n };\n _this.handleWrapperClick = _this.handleWrapperClick.bind(_this);\n _this.closePortal = _this.closePortal.bind(_this);\n _this.handleOutsideMouseClick = _this.handleOutsideMouseClick.bind(_this);\n _this.handleKeydown = _this.handleKeydown.bind(_this);\n _this.portal = null;\n _this.node = null;\n return _this;\n }\n\n _createClass(Portal, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n if (this.props.closeOnEsc) {\n document.addEventListener('keydown', this.handleKeydown);\n }\n\n if (this.props.closeOnOutsideClick) {\n document.addEventListener('mouseup', this.handleOutsideMouseClick);\n document.addEventListener('touchstart', this.handleOutsideMouseClick);\n }\n\n if (this.props.isOpened) {\n this.openPortal();\n }\n }\n }, {\n key: 'componentWillReceiveProps',\n value: function componentWillReceiveProps(newProps) {\n // portal's 'is open' state is handled through the prop isOpened\n if (typeof newProps.isOpened !== 'undefined') {\n if (newProps.isOpened) {\n if (this.state.active) {\n this.renderPortal(newProps);\n } else {\n this.openPortal(newProps);\n }\n }\n\n if (!newProps.isOpened && this.state.active) {\n this.closePortal();\n }\n } // portal handles its own 'is open' state\n\n\n if (typeof newProps.isOpened === 'undefined' && this.state.active) {\n this.renderPortal(newProps);\n }\n }\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n if (this.props.closeOnEsc) {\n document.removeEventListener('keydown', this.handleKeydown);\n }\n\n if (this.props.closeOnOutsideClick) {\n document.removeEventListener('mouseup', this.handleOutsideMouseClick);\n document.removeEventListener('touchstart', this.handleOutsideMouseClick);\n }\n\n this.closePortal(true);\n }\n }, {\n key: 'handleWrapperClick',\n value: function handleWrapperClick(e) {\n e.preventDefault();\n e.stopPropagation();\n\n if (this.state.active) {\n return;\n }\n\n this.openPortal();\n }\n }, {\n key: 'openPortal',\n value: function openPortal() {\n var props = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.props;\n this.setState({\n active: true\n });\n this.renderPortal(props);\n this.props.onOpen(this.node);\n }\n }, {\n key: 'closePortal',\n value: function closePortal() {\n var _this2 = this;\n\n var isUnmounted = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\n var resetPortalState = function resetPortalState(overrideIsUnmounted) {\n if (_this2.node) {\n _reactDom2.default.unmountComponentAtNode(_this2.node);\n\n document.body.removeChild(_this2.node);\n }\n\n _this2.portal = null;\n _this2.node = null;\n var finalIsUnmounted = overrideIsUnmounted === undefined ? isUnmounted : overrideIsUnmounted;\n\n if (finalIsUnmounted !== true) {\n _this2.setState({\n active: false\n });\n }\n };\n\n if (this.state.active) {\n if (this.props.beforeClose) {\n this.props.beforeClose(this.node, resetPortalState);\n } else {\n resetPortalState();\n }\n\n this.props.onClose();\n }\n }\n }, {\n key: 'handleOutsideMouseClick',\n value: function handleOutsideMouseClick(e) {\n if (!this.state.active) {\n return;\n }\n\n var root = (0, _reactDom.findDOMNode)(this.portal);\n\n if (root.contains(e.target) || e.button && e.button !== 0) {\n return;\n }\n\n e.stopPropagation();\n this.closePortal();\n }\n }, {\n key: 'handleKeydown',\n value: function handleKeydown(e) {\n if (e.keyCode === KEYCODES.ESCAPE && this.state.active) {\n this.closePortal();\n }\n }\n }, {\n key: 'renderPortal',\n value: function renderPortal(props) {\n if (!this.node) {\n this.node = document.createElement('div');\n document.body.appendChild(this.node);\n }\n\n var children = props.children; // https://gist.github.com/jimfb/d99e0678e9da715ccf6454961ef04d1b\n\n if (typeof props.children.type === 'function') {\n children = _react2.default.cloneElement(props.children, {\n closePortal: this.closePortal\n });\n }\n\n this.portal = _reactDom2.default.unstable_renderSubtreeIntoContainer(this, children, this.node, this.props.onUpdate);\n }\n }, {\n key: 'render',\n value: function render() {\n if (this.props.openByClickOn) {\n return _react2.default.cloneElement(this.props.openByClickOn, {\n onClick: this.handleWrapperClick\n });\n }\n\n return null;\n }\n }]);\n\n return Portal;\n}(_react2.default.Component);\n\nexports.default = Portal;\nPortal.propTypes = {\n children: _propTypes2.default.element.isRequired,\n openByClickOn: _propTypes2.default.element,\n closeOnEsc: _propTypes2.default.bool,\n closeOnOutsideClick: _propTypes2.default.bool,\n isOpened: _propTypes2.default.bool,\n onOpen: _propTypes2.default.func,\n onClose: _propTypes2.default.func,\n beforeClose: _propTypes2.default.func,\n onUpdate: _propTypes2.default.func\n};\nPortal.defaultProps = {\n onOpen: function onOpen() {},\n onClose: function onClose() {},\n onUpdate: function onUpdate() {}\n};\nmodule.exports = exports['default'];\n\n//# sourceURL=webpack:///./node_modules/react-portal/build/portal.js?"); - -/***/ }), - /***/ "./node_modules/react-redux/es/components/Context.js": /*!***********************************************************!*\ !*** ./node_modules/react-redux/es/components/Context.js ***! @@ -12562,7 +12600,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rsg_ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"baseOverrides\", function() { return baseOverrides; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inlineOverrides\", function() { return inlineOverrides; });\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var markdown_to_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! markdown-to-jsx */ \"./node_modules/markdown-to-jsx/dist/esm.js\");\n/* harmony import */ var rsg_components_Link__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rsg-components/Link */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Link/index.js\");\n/* harmony import */ var rsg_components_Text__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rsg-components/Text */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Text/index.js\");\n/* harmony import */ var rsg_components_Para__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rsg-components/Para */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Para/index.js\");\n/* harmony import */ var rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rsg-components/Markdown/MarkdownHeading */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/MarkdownHeading/index.js\");\n/* harmony import */ var rsg_components_Markdown_List__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rsg-components/Markdown/List */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/List/index.js\");\n/* harmony import */ var rsg_components_Markdown_Blockquote__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! rsg-components/Markdown/Blockquote */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Blockquote/index.js\");\n/* harmony import */ var rsg_components_Markdown_Pre__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! rsg-components/Markdown/Pre */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Pre/index.js\");\n/* harmony import */ var rsg_components_Code__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! rsg-components/Code */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Code/index.js\");\n/* harmony import */ var rsg_components_Markdown_Checkbox__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! rsg-components/Markdown/Checkbox */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Checkbox/index.js\");\n/* harmony import */ var rsg_components_Markdown_Hr__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! rsg-components/Markdown/Hr */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Hr/index.js\");\n/* harmony import */ var rsg_components_Markdown_Details__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! rsg-components/Markdown/Details */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Details/index.js\");\n/* harmony import */ var rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! rsg-components/Markdown/Table */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Table/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Pre = function Pre(props) {\n if (Object(react__WEBPACK_IMPORTED_MODULE_1__[\"isValidElement\"])(props.children)) {\n // Avoid rendering inside
\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Markdown_Pre__WEBPACK_IMPORTED_MODULE_10__[\"default\"], props.children.props);\n  }\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Markdown_Pre__WEBPACK_IMPORTED_MODULE_10__[\"default\"], props);\n};\n\nPre.propTypes = {\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node\n};\nvar baseOverrides = {\n  a: {\n    component: rsg_components_Link__WEBPACK_IMPORTED_MODULE_4__[\"default\"]\n  },\n  h1: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      level: 1\n    }\n  },\n  h2: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      level: 2\n    }\n  },\n  h3: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      level: 3\n    }\n  },\n  h4: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      level: 4\n    }\n  },\n  h5: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      level: 5\n    }\n  },\n  h6: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      level: 6\n    }\n  },\n  p: {\n    component: rsg_components_Para__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n    props: {\n      semantic: 'p'\n    }\n  },\n  em: {\n    component: rsg_components_Text__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n    props: {\n      semantic: 'em'\n    }\n  },\n  strong: {\n    component: rsg_components_Text__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n    props: {\n      semantic: 'strong'\n    }\n  },\n  ul: {\n    component: rsg_components_Markdown_List__WEBPACK_IMPORTED_MODULE_8__[\"default\"]\n  },\n  ol: {\n    component: rsg_components_Markdown_List__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      ordered: true\n    }\n  },\n  blockquote: {\n    component: rsg_components_Markdown_Blockquote__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  code: {\n    component: rsg_components_Code__WEBPACK_IMPORTED_MODULE_11__[\"default\"]\n  },\n  pre: {\n    component: Pre\n  },\n  input: {\n    component: rsg_components_Markdown_Checkbox__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n  },\n  hr: {\n    component: rsg_components_Markdown_Hr__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n  },\n  table: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__[\"Table\"]\n  },\n  thead: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__[\"TableHead\"]\n  },\n  th: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__[\"TableCell\"],\n    props: {\n      header: true\n    }\n  },\n  tbody: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__[\"TableBody\"]\n  },\n  tr: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__[\"TableRow\"]\n  },\n  td: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_15__[\"TableCell\"]\n  },\n  details: {\n    component: rsg_components_Markdown_Details__WEBPACK_IMPORTED_MODULE_14__[\"Details\"]\n  },\n  summary: {\n    component: rsg_components_Markdown_Details__WEBPACK_IMPORTED_MODULE_14__[\"DetailsSummary\"]\n  }\n};\nvar inlineOverrides = Object.assign({}, baseOverrides, {\n  p: {\n    component: rsg_components_Text__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  }\n});\n\nfunction Markdown(_ref) {\n  var text = _ref.text,\n      inline = _ref.inline;\n  var overrides = inline ? inlineOverrides : baseOverrides;\n  return Object(markdown_to_jsx__WEBPACK_IMPORTED_MODULE_3__[\"compiler\"])(text, {\n    overrides: overrides,\n    forceBlock: true\n  });\n}\n\nMarkdown.propTypes = {\n  text: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  inline: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Markdown);\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Markdown.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"baseOverrides\", function() { return baseOverrides; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"inlineOverrides\", function() { return inlineOverrides; });\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var markdown_to_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! markdown-to-jsx */ \"./node_modules/markdown-to-jsx/dist/esm.js\");\n/* harmony import */ var strip_html_comments__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! strip-html-comments */ \"./node_modules/strip-html-comments/index.js\");\n/* harmony import */ var strip_html_comments__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(strip_html_comments__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var rsg_components_Link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rsg-components/Link */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Link/index.js\");\n/* harmony import */ var rsg_components_Text__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! rsg-components/Text */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Text/index.js\");\n/* harmony import */ var rsg_components_Para__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rsg-components/Para */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Para/index.js\");\n/* harmony import */ var rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rsg-components/Markdown/MarkdownHeading */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/MarkdownHeading/index.js\");\n/* harmony import */ var rsg_components_Markdown_List__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! rsg-components/Markdown/List */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/List/index.js\");\n/* harmony import */ var rsg_components_Markdown_Blockquote__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! rsg-components/Markdown/Blockquote */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Blockquote/index.js\");\n/* harmony import */ var rsg_components_Markdown_Pre__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! rsg-components/Markdown/Pre */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Pre/index.js\");\n/* harmony import */ var rsg_components_Code__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! rsg-components/Code */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Code/index.js\");\n/* harmony import */ var rsg_components_Markdown_Checkbox__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! rsg-components/Markdown/Checkbox */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Checkbox/index.js\");\n/* harmony import */ var rsg_components_Markdown_Hr__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! rsg-components/Markdown/Hr */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Hr/index.js\");\n/* harmony import */ var rsg_components_Markdown_Details__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! rsg-components/Markdown/Details */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Details/index.js\");\n/* harmony import */ var rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! rsg-components/Markdown/Table */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Table/index.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar Pre = function Pre(props) {\n  if (Object(react__WEBPACK_IMPORTED_MODULE_1__[\"isValidElement\"])(props.children)) {\n    // Avoid rendering  inside 
\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Markdown_Pre__WEBPACK_IMPORTED_MODULE_11__[\"default\"], props.children.props);\n  }\n\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Markdown_Pre__WEBPACK_IMPORTED_MODULE_11__[\"default\"], props);\n};\n\nPre.propTypes = {\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node\n};\nvar baseOverrides = {\n  a: {\n    component: rsg_components_Link__WEBPACK_IMPORTED_MODULE_5__[\"default\"]\n  },\n  h1: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      level: 1\n    }\n  },\n  h2: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      level: 2\n    }\n  },\n  h3: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      level: 3\n    }\n  },\n  h4: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      level: 4\n    }\n  },\n  h5: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      level: 5\n    }\n  },\n  h6: {\n    component: rsg_components_Markdown_MarkdownHeading__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n    props: {\n      level: 6\n    }\n  },\n  p: {\n    component: rsg_components_Para__WEBPACK_IMPORTED_MODULE_7__[\"default\"],\n    props: {\n      semantic: 'p'\n    }\n  },\n  em: {\n    component: rsg_components_Text__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n    props: {\n      semantic: 'em'\n    }\n  },\n  strong: {\n    component: rsg_components_Text__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n    props: {\n      semantic: 'strong'\n    }\n  },\n  ul: {\n    component: rsg_components_Markdown_List__WEBPACK_IMPORTED_MODULE_9__[\"default\"]\n  },\n  ol: {\n    component: rsg_components_Markdown_List__WEBPACK_IMPORTED_MODULE_9__[\"default\"],\n    props: {\n      ordered: true\n    }\n  },\n  blockquote: {\n    component: rsg_components_Markdown_Blockquote__WEBPACK_IMPORTED_MODULE_10__[\"default\"]\n  },\n  code: {\n    component: rsg_components_Code__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n  },\n  pre: {\n    component: Pre\n  },\n  input: {\n    component: rsg_components_Markdown_Checkbox__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n  },\n  hr: {\n    component: rsg_components_Markdown_Hr__WEBPACK_IMPORTED_MODULE_14__[\"default\"]\n  },\n  table: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__[\"Table\"]\n  },\n  thead: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__[\"TableHead\"]\n  },\n  th: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__[\"TableCell\"],\n    props: {\n      header: true\n    }\n  },\n  tbody: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__[\"TableBody\"]\n  },\n  tr: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__[\"TableRow\"]\n  },\n  td: {\n    component: rsg_components_Markdown_Table__WEBPACK_IMPORTED_MODULE_16__[\"TableCell\"]\n  },\n  details: {\n    component: rsg_components_Markdown_Details__WEBPACK_IMPORTED_MODULE_15__[\"Details\"]\n  },\n  summary: {\n    component: rsg_components_Markdown_Details__WEBPACK_IMPORTED_MODULE_15__[\"DetailsSummary\"]\n  }\n};\nvar inlineOverrides = Object.assign({}, baseOverrides, {\n  p: {\n    component: rsg_components_Text__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n  }\n});\n\nfunction Markdown(_ref) {\n  var text = _ref.text,\n      inline = _ref.inline;\n  var overrides = inline ? inlineOverrides : baseOverrides;\n  return Object(markdown_to_jsx__WEBPACK_IMPORTED_MODULE_3__[\"compiler\"])(strip_html_comments__WEBPACK_IMPORTED_MODULE_4___default()(text), {\n    overrides: overrides,\n    forceBlock: true\n  });\n}\n\nMarkdown.propTypes = {\n  text: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  inline: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Markdown);\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/Markdown.js?");
 
 /***/ }),
 
@@ -12934,7 +12972,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rsg_
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unquote\", function() { return unquote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return getType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showSpaces\", function() { return showSpaces; });\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/**\n * Remove quotes around given string.\n *\n * @param {string} string\n * @returns {string}\n */\n\nfunction unquote(string) {\n  return string && string.replace(/^['\"]|['\"]$/g, '');\n}\n/**\n * Return prop type object.\n *\n * @param {object} prop\n * @returns {object}\n */\n\nfunction getType(prop) {\n  if (prop.flowType) {\n    if (prop.flowType.name === 'union' && prop.flowType.elements.every(function (elem) {\n      return elem.name === 'literal';\n    })) {\n      return Object.assign({}, prop.flowType, {\n        name: 'enum',\n        value: prop.flowType.elements\n      });\n    }\n\n    return prop.flowType;\n  }\n\n  return prop.type;\n}\n/**\n * Show starting and ending whitespace around given string.\n *\n * @param {string} string\n * @returns {string}\n */\n\nfunction showSpaces(string) {\n  return string && string.replace(/^\\s|\\s$/g, '␣');\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/Props/util.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"unquote\", function() { return unquote; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getType\", function() { return getType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showSpaces\", function() { return showSpaces; });\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n/**\n * Remove quotes around given string.\n *\n * @param {string} string\n * @returns {string}\n */\nfunction unquote(string) {\n  return string && string.replace(/^['\"]|['\"]$/g, '');\n}\n/**\n * Return prop type object.\n *\n * @param {object} prop\n * @returns {object}\n */\n\nfunction getType(prop) {\n  if (prop.flowType) {\n    if (prop.flowType.name === 'union' && prop.flowType.elements.every(function (elem) {\n      return elem.name === 'literal';\n    })) {\n      return Object.assign({}, prop.flowType, {\n        name: 'enum',\n        value: prop.flowType.elements\n      });\n    }\n\n    return prop.flowType;\n  }\n\n  return prop.type;\n}\n/**\n * Show starting and ending whitespace around given string.\n *\n * @param {string} string\n * @returns {string}\n */\n\nfunction showSpaces(string) {\n  return string && string.replace(/^\\s|\\s$/g, '␣');\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/Props/util.js?");
 
 /***/ }),
 
@@ -12982,7 +13020,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var rsg_
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReactExample; });\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rsg_components_Wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rsg-components/Wrapper */ \"./src/styleguide/Wrapper.js\");\n/* harmony import */ var _utils_compileCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/compileCode */ \"./node_modules/react-styleguidist/lib/client/utils/compileCode.js\");\n/* harmony import */ var _utils_splitExampleCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/splitExampleCode */ \"./node_modules/react-styleguidist/lib/client/utils/splitExampleCode.js\");\n\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\n\n\n\n\n\n/* eslint-disable react/no-multi-comp */\n// Wrap everything in a React component to leverage the state management\n// of this component\n\nvar StateHolder =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose(StateHolder, _Component);\n\n  function StateHolder() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", _this.props.initialState);\n\n    _defineProperty(_assertThisInitialized(_this), \"setStateBinded\", _this.setState.bind(_assertThisInitialized(_this)));\n\n    return _this;\n  }\n\n  var _proto = StateHolder.prototype;\n\n  _proto.render = function render() {\n    // Return null when component doesn't render anything to avoid an error\n    return this.props.component(this.state, this.setStateBinded) || null;\n  };\n\n  return StateHolder;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\n_defineProperty(StateHolder, \"propTypes\", {\n  component: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  initialState: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired\n});\n\nvar ReactExample =\n/*#__PURE__*/\nfunction (_Component2) {\n  _inheritsLoose(ReactExample, _Component2);\n\n  function ReactExample() {\n    return _Component2.apply(this, arguments) || this;\n  }\n\n  var _proto2 = ReactExample.prototype;\n\n  _proto2.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return this.props.code !== nextProps.code;\n  } // Eval the code to extract the value of the initial state\n  ;\n\n  _proto2.getExampleInitialState = function getExampleInitialState(compiledCode) {\n    if (compiledCode.indexOf('initialState') === -1) {\n      return {};\n    }\n\n    return this.props.evalInContext(\"\\n\\t\\t\\tvar state = {}, initialState = {};\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t\" + compiledCode + \";\\n\\t\\t\\t} catch (err) {}\\n\\t\\t\\treturn initialState;\\n\\t\\t\")();\n  } // Run example code and return the last top-level expression\n  ;\n\n  _proto2.getExampleComponent = function getExampleComponent(compiledCode) {\n    return this.props.evalInContext(\"\\n\\t\\t\\tvar initialState = {};\\n\\t\\t\\t\" + compiledCode + \"\\n\\t\\t\");\n  };\n\n  _proto2.render = function render() {\n    var _this$props = this.props,\n        code = _this$props.code,\n        compilerConfig = _this$props.compilerConfig,\n        onError = _this$props.onError;\n    var compiledCode = Object(_utils_compileCode__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(code, compilerConfig, onError);\n\n    if (!compiledCode) {\n      return null;\n    }\n\n    var _splitExampleCode = Object(_utils_splitExampleCode__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(compiledCode),\n        head = _splitExampleCode.head,\n        example = _splitExampleCode.example;\n\n    var initialState = this.getExampleInitialState(head);\n    var exampleComponent = this.getExampleComponent(example);\n    var wrappedComponent = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Wrapper__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      onError: onError\n    }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(StateHolder, {\n      component: exampleComponent,\n      initialState: initialState\n    }));\n    return wrappedComponent;\n  };\n\n  return ReactExample;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\n_defineProperty(ReactExample, \"propTypes\", {\n  code: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  evalInContext: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  onError: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  compilerConfig: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object\n});\n\n_defineProperty(ReactExample, \"contextTypes\", {});\n\n\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/ReactExample/ReactExample.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return ReactExample; });\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rsg_components_Wrapper__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rsg-components/Wrapper */ \"./src/styleguide/Wrapper.js\");\n/* harmony import */ var _utils_compileCode__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../../utils/compileCode */ \"./node_modules/react-styleguidist/lib/client/utils/compileCode.js\");\n/* harmony import */ var _utils_splitExampleCode__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../../utils/splitExampleCode */ \"./node_modules/react-styleguidist/lib/client/utils/splitExampleCode.js\");\n\n\nfunction _assertThisInitialized(self) {\n  if (self === void 0) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return self;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n  subClass.prototype = Object.create(superClass.prototype);\n  subClass.prototype.constructor = subClass;\n  subClass.__proto__ = superClass;\n}\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\n\n\n\n\n\n/* eslint-disable react/no-multi-comp */\n// Wrap the example component with a Functional Component to support\n// hooks in examples\n\nfunction FunctionComponentWrapper(props) {\n  var component = props.component,\n      state = props.state,\n      setState = props.setState; // Return null when component doesn't render anything to avoid an error\n\n  return component(state, setState) || null;\n} // Wrap everything in a React component to leverage the state management\n// of this component\n\n\nvar StateHolder =\n/*#__PURE__*/\nfunction (_Component) {\n  _inheritsLoose(StateHolder, _Component);\n\n  function StateHolder() {\n    var _this;\n\n    for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    _this = _Component.call.apply(_Component, [this].concat(args)) || this;\n\n    _defineProperty(_assertThisInitialized(_this), \"state\", _this.props.initialState);\n\n    _defineProperty(_assertThisInitialized(_this), \"setStateBinded\", _this.setState.bind(_assertThisInitialized(_this)));\n\n    return _this;\n  }\n\n  var _proto = StateHolder.prototype;\n\n  _proto.render = function render() {\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(FunctionComponentWrapper, {\n      component: this.props.component,\n      state: this.state,\n      setState: this.setStateBinded\n    });\n  };\n\n  return StateHolder;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\n_defineProperty(StateHolder, \"propTypes\", {\n  component: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  initialState: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired\n});\n\nvar ReactExample =\n/*#__PURE__*/\nfunction (_Component2) {\n  _inheritsLoose(ReactExample, _Component2);\n\n  function ReactExample() {\n    return _Component2.apply(this, arguments) || this;\n  }\n\n  var _proto2 = ReactExample.prototype;\n\n  _proto2.shouldComponentUpdate = function shouldComponentUpdate(nextProps) {\n    return this.props.code !== nextProps.code;\n  } // Eval the code to extract the value of the initial state\n  ;\n\n  _proto2.getExampleInitialState = function getExampleInitialState(compiledCode) {\n    if (compiledCode.indexOf('initialState') === -1) {\n      return {};\n    }\n\n    return this.props.evalInContext(\"\\n\\t\\t\\tvar state = {}, initialState = {};\\n\\t\\t\\ttry {\\n\\t\\t\\t\\t\" + compiledCode + \";\\n\\t\\t\\t} catch (err) {}\\n\\t\\t\\treturn initialState;\\n\\t\\t\")();\n  } // Run example code and return the last top-level expression\n  ;\n\n  _proto2.getExampleComponent = function getExampleComponent(compiledCode) {\n    return this.props.evalInContext(\"\\n\\t\\t\\tvar initialState = {};\\n\\t\\t\\t\" + compiledCode + \"\\n\\t\\t\");\n  };\n\n  _proto2.render = function render() {\n    var _this$props = this.props,\n        code = _this$props.code,\n        compilerConfig = _this$props.compilerConfig,\n        onError = _this$props.onError;\n    var compiledCode = Object(_utils_compileCode__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(code, compilerConfig, onError);\n\n    if (!compiledCode) {\n      return null;\n    }\n\n    var _splitExampleCode = Object(_utils_splitExampleCode__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(compiledCode),\n        head = _splitExampleCode.head,\n        example = _splitExampleCode.example;\n\n    var initialState = this.getExampleInitialState(head);\n    var exampleComponent = this.getExampleComponent(example);\n    var wrappedComponent = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Wrapper__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n      onError: onError\n    }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(StateHolder, {\n      component: exampleComponent,\n      initialState: initialState\n    }));\n    return wrappedComponent;\n  };\n\n  return ReactExample;\n}(react__WEBPACK_IMPORTED_MODULE_1__[\"Component\"]);\n\n_defineProperty(ReactExample, \"propTypes\", {\n  code: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  evalInContext: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  onError: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired,\n  compilerConfig: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object\n});\n\n_defineProperty(ReactExample, \"contextTypes\", {});\n\n\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/ReactExample/ReactExample.js?");
 
 /***/ }),
 
@@ -13018,7 +13056,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styles\", function() { return styles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RibbonRenderer\", function() { return RibbonRenderer; });\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.link */ \"./node_modules/core-js/modules/es.string.link.js\");\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rsg_components_Styled__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rsg-components/Styled */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Styled/index.js\");\n\n\n\n\nvar styles = function styles(_ref) {\n  var color = _ref.color,\n      space = _ref.space,\n      fontSize = _ref.fontSize,\n      fontFamily = _ref.fontFamily;\n  return {\n    root: {\n      position: 'fixed',\n      top: 0,\n      right: 0,\n      width: 149,\n      height: 149,\n      zIndex: 999\n    },\n    link: {\n      fontFamily: fontFamily.base,\n      position: 'relative',\n      right: -37,\n      top: -22,\n      display: 'block',\n      width: 190,\n      padding: [[space[0], space[2]]],\n      textAlign: 'center',\n      color: color.ribbonText,\n      fontSize: fontSize.base,\n      background: color.ribbonBackground,\n      textDecoration: 'none',\n      textShadow: [[0, '-1px', 0, 'rgba(0,0,0,.15)']],\n      transformOrigin: [[0, 0]],\n      transform: 'rotate(45deg)',\n      cursor: 'pointer'\n    }\n  };\n};\nfunction RibbonRenderer(_ref2) {\n  var classes = _ref2.classes,\n      url = _ref2.url,\n      text = _ref2.text;\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n    className: classes.root\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", {\n    href: url,\n    className: classes.link\n  }, text));\n}\nRibbonRenderer.defaultProps = {\n  text: 'Fork me on GitHub'\n};\nRibbonRenderer.propTypes = {\n  classes: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  url: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  text: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(rsg_components_Styled__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(styles)(RibbonRenderer));\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/Ribbon/RibbonRenderer.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"styles\", function() { return styles; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RibbonRenderer\", function() { return RibbonRenderer; });\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.link */ \"./node_modules/core-js/modules/es.string.link.js\");\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rsg_components_Styled__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rsg-components/Styled */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Styled/index.js\");\n\n\n\n\nvar styles = function styles(_ref) {\n  var color = _ref.color,\n      space = _ref.space,\n      fontSize = _ref.fontSize,\n      fontFamily = _ref.fontFamily;\n  return {\n    root: {\n      position: 'fixed',\n      top: 0,\n      right: 0,\n      width: 149,\n      height: 149,\n      zIndex: 999\n    },\n    link: {\n      fontFamily: fontFamily.base,\n      position: 'relative',\n      right: -37,\n      top: -22,\n      display: 'block',\n      width: 190,\n      padding: [[space[0], space[2]]],\n      textAlign: 'center',\n      color: color.ribbonText,\n      fontSize: fontSize.base,\n      background: color.ribbonBackground,\n      textDecoration: 'none',\n      textShadow: [[0, '-1px', 0, 'rgba(0,0,0,.15)']],\n      transformOrigin: [[0, 0]],\n      transform: 'rotate(45deg)',\n      cursor: 'pointer'\n    }\n  };\n};\nfunction RibbonRenderer(_ref2) {\n  var classes = _ref2.classes,\n      url = _ref2.url,\n      text = _ref2.text;\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"footer\", {\n    className: classes.root\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", {\n    href: url,\n    className: classes.link\n  }, text));\n}\nRibbonRenderer.defaultProps = {\n  text: 'Fork me on GitHub'\n};\nRibbonRenderer.propTypes = {\n  classes: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  url: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  text: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(rsg_components_Styled__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(styles)(RibbonRenderer));\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/Ribbon/RibbonRenderer.js?");
 
 /***/ }),
 
@@ -13186,7 +13224,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StyleGuideRenderer\", function() { return StyleGuideRenderer; });\n/* harmony import */ var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.small */ \"./node_modules/core-js/modules/es.string.small.js\");\n/* harmony import */ var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rsg_components_Logo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rsg-components/Logo */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Logo/index.js\");\n/* harmony import */ var rsg_components_Markdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rsg-components/Markdown */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/index.js\");\n/* harmony import */ var rsg_components_Styled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rsg-components/Styled */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Styled/index.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var rsg_components_Ribbon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rsg-components/Ribbon */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Ribbon/index.js\");\n/* harmony import */ var rsg_components_Version__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rsg-components/Version */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Version/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(_ref) {\n  var _hasSidebar, _content, _sidebar;\n\n  var color = _ref.color,\n      fontFamily = _ref.fontFamily,\n      fontSize = _ref.fontSize,\n      sidebarWidth = _ref.sidebarWidth,\n      mq = _ref.mq,\n      space = _ref.space,\n      maxWidth = _ref.maxWidth;\n  return {\n    root: {\n      minHeight: '100vh',\n      backgroundColor: color.baseBackground\n    },\n    hasSidebar: (_hasSidebar = {\n      paddingLeft: sidebarWidth\n    }, _hasSidebar[mq.small] = {\n      paddingLeft: 0\n    }, _hasSidebar),\n    content: (_content = {\n      maxWidth: maxWidth,\n      padding: [[space[2], space[4]]],\n      margin: [[0, 'auto']]\n    }, _content[mq.small] = {\n      padding: space[2]\n    }, _content.display = 'block', _content),\n    sidebar: (_sidebar = {\n      backgroundColor: color.sidebarBackground,\n      border: [[color.border, 'solid']],\n      borderWidth: [[0, 1, 0, 0]],\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      bottom: 0,\n      width: sidebarWidth,\n      overflow: 'auto',\n      WebkitOverflowScrolling: 'touch'\n    }, _sidebar[mq.small] = {\n      position: 'static',\n      width: 'auto',\n      borderWidth: [[1, 0, 0, 0]],\n      paddingBottom: space[0]\n    }, _sidebar),\n    logo: {\n      padding: space[2],\n      borderBottom: [[1, color.border, 'solid']]\n    },\n    footer: {\n      display: 'block',\n      color: color.light,\n      fontFamily: fontFamily.base,\n      fontSize: fontSize.small\n    }\n  };\n};\n\nfunction StyleGuideRenderer(_ref2) {\n  var classes = _ref2.classes,\n      title = _ref2.title,\n      version = _ref2.version,\n      homepageUrl = _ref2.homepageUrl,\n      children = _ref2.children,\n      toc = _ref2.toc,\n      hasSidebar = _ref2.hasSidebar;\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n    className: Object(clsx__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(classes.root, hasSidebar && classes.hasSidebar)\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"main\", {\n    className: classes.content\n  }, children, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"footer\", {\n    className: classes.footer\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Markdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n    text: \"Created with [React Styleguidist](\" + homepageUrl + \")\"\n  }))), hasSidebar && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n    className: classes.sidebar\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n    className: classes.logo\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Logo__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, title), version && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Version__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, version)), toc), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Ribbon__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null));\n}\nStyleGuideRenderer.propTypes = {\n  classes: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  title: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  version: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n  homepageUrl: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired,\n  toc: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired,\n  hasSidebar: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(rsg_components_Styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(styles)(StyleGuideRenderer));\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/StyleGuide/StyleGuideRenderer.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StyleGuideRenderer\", function() { return StyleGuideRenderer; });\n/* harmony import */ var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.small */ \"./node_modules/core-js/modules/es.string.small.js\");\n/* harmony import */ var core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_small__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var rsg_components_Logo__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! rsg-components/Logo */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Logo/index.js\");\n/* harmony import */ var rsg_components_Markdown__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rsg-components/Markdown */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Markdown/index.js\");\n/* harmony import */ var rsg_components_Styled__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! rsg-components/Styled */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Styled/index.js\");\n/* harmony import */ var clsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! clsx */ \"./node_modules/clsx/dist/clsx.m.js\");\n/* harmony import */ var rsg_components_Ribbon__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! rsg-components/Ribbon */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Ribbon/index.js\");\n/* harmony import */ var rsg_components_Version__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! rsg-components/Version */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Version/index.js\");\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(_ref) {\n  var _hasSidebar, _content, _sidebar;\n\n  var color = _ref.color,\n      fontFamily = _ref.fontFamily,\n      fontSize = _ref.fontSize,\n      sidebarWidth = _ref.sidebarWidth,\n      mq = _ref.mq,\n      space = _ref.space,\n      maxWidth = _ref.maxWidth;\n  return {\n    root: {\n      minHeight: '100vh',\n      backgroundColor: color.baseBackground\n    },\n    hasSidebar: (_hasSidebar = {\n      paddingLeft: sidebarWidth\n    }, _hasSidebar[mq.small] = {\n      paddingLeft: 0\n    }, _hasSidebar),\n    content: (_content = {\n      maxWidth: maxWidth,\n      padding: [[space[2], space[4]]],\n      margin: [[0, 'auto']]\n    }, _content[mq.small] = {\n      padding: space[2]\n    }, _content.display = 'block', _content),\n    sidebar: (_sidebar = {\n      backgroundColor: color.sidebarBackground,\n      border: [[color.border, 'solid']],\n      borderWidth: [[0, 1, 0, 0]],\n      position: 'fixed',\n      top: 0,\n      left: 0,\n      bottom: 0,\n      width: sidebarWidth,\n      overflow: 'auto',\n      WebkitOverflowScrolling: 'touch'\n    }, _sidebar[mq.small] = {\n      position: 'static',\n      width: 'auto',\n      borderWidth: [[1, 0, 0, 0]],\n      paddingBottom: space[0]\n    }, _sidebar),\n    logo: {\n      padding: space[2],\n      borderBottom: [[1, color.border, 'solid']]\n    },\n    footer: {\n      display: 'block',\n      color: color.light,\n      fontFamily: fontFamily.base,\n      fontSize: fontSize.small\n    }\n  };\n};\n\nfunction StyleGuideRenderer(_ref2) {\n  var classes = _ref2.classes,\n      title = _ref2.title,\n      version = _ref2.version,\n      homepageUrl = _ref2.homepageUrl,\n      children = _ref2.children,\n      toc = _ref2.toc,\n      hasSidebar = _ref2.hasSidebar;\n  return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n    className: Object(clsx__WEBPACK_IMPORTED_MODULE_6__[\"default\"])(classes.root, hasSidebar && classes.hasSidebar)\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"main\", {\n    className: classes.content\n  }, children, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"footer\", {\n    className: classes.footer\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Markdown__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n    text: \"Created with [React Styleguidist](\" + homepageUrl + \")\"\n  }))), hasSidebar && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", {\n    className: classes.sidebar\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"header\", {\n    className: classes.logo\n  }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Logo__WEBPACK_IMPORTED_MODULE_3__[\"default\"], null, title), version && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Version__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null, version)), toc), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(rsg_components_Ribbon__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null));\n}\nStyleGuideRenderer.propTypes = {\n  classes: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  title: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  version: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n  homepageUrl: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired,\n  toc: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.node.isRequired,\n  hasSidebar: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(rsg_components_Styled__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(styles)(StyleGuideRenderer));\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/StyleGuide/StyleGuideRenderer.js?");
 
 /***/ }),
 
@@ -13294,7 +13332,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableOfContentsRenderer\", function() { return TableOfContentsRenderer; });\n/* harmony import */ var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.search */ \"./node_modules/core-js/modules/es.string.search.js\");\n/* harmony import */ var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.link */ \"./node_modules/core-js/modules/es.string.link.js\");\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var rsg_components_Styled__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rsg-components/Styled */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Styled/index.js\");\n\n\n\n\n\n\nvar styles = function styles(_ref) {\n  var space = _ref.space,\n      color = _ref.color,\n      fontFamily = _ref.fontFamily,\n      fontSize = _ref.fontSize,\n      borderRadius = _ref.borderRadius;\n  return {\n    root: {\n      fontFamily: fontFamily.base\n    },\n    search: {\n      padding: space[2]\n    },\n    input: {\n      display: 'block',\n      width: '100%',\n      padding: space[1],\n      color: color.base,\n      backgroundColor: color.baseBackground,\n      fontFamily: fontFamily.base,\n      fontSize: fontSize.base,\n      border: [[1, color.border, 'solid']],\n      borderRadius: borderRadius,\n      transition: 'all ease-in-out .1s',\n      '&:focus': {\n        isolate: false,\n        borderColor: color.link,\n        boxShadow: [[0, 0, 0, 2, color.focus]],\n        outline: 0\n      },\n      '&::placeholder': {\n        isolate: false,\n        fontFamily: fontFamily.base,\n        fontSize: fontSize.base,\n        color: color.light\n      }\n    }\n  };\n};\n\nfunction TableOfContentsRenderer(_ref2) {\n  var classes = _ref2.classes,\n      children = _ref2.children,\n      searchTerm = _ref2.searchTerm,\n      onSearchTermChange = _ref2.onSearchTermChange;\n  return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n    className: classes.root\n  }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n    className: classes.search\n  }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"input\", {\n    value: searchTerm,\n    className: classes.input,\n    placeholder: \"Filter by name\",\n    \"aria-label\": \"Filter by name\",\n    onChange: function onChange(event) {\n      return onSearchTermChange(event.target.value);\n    }\n  })), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"nav\", null, children)));\n}\nTableOfContentsRenderer.propTypes = {\n  classes: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.object.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.node,\n  searchTerm: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string.isRequired,\n  onSearchTermChange: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(rsg_components_Styled__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(styles)(TableOfContentsRenderer));\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/TableOfContents/TableOfContentsRenderer.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableOfContentsRenderer\", function() { return TableOfContentsRenderer; });\n/* harmony import */ var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.string.search */ \"./node_modules/core-js/modules/es.string.search.js\");\n/* harmony import */ var core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_search__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.string.link */ \"./node_modules/core-js/modules/es.string.link.js\");\n/* harmony import */ var core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_link__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var rsg_components_Styled__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! rsg-components/Styled */ \"./node_modules/react-styleguidist/lib/client/rsg-components/Styled/index.js\");\n\n\n\n\n\n\nvar styles = function styles(_ref) {\n  var space = _ref.space,\n      color = _ref.color,\n      fontFamily = _ref.fontFamily,\n      fontSize = _ref.fontSize,\n      borderRadius = _ref.borderRadius;\n  return {\n    root: {\n      fontFamily: fontFamily.base\n    },\n    search: {\n      padding: space[2]\n    },\n    input: {\n      display: 'block',\n      width: '100%',\n      padding: space[1],\n      color: color.base,\n      backgroundColor: color.baseBackground,\n      fontFamily: fontFamily.base,\n      fontSize: fontSize.base,\n      border: [[1, color.border, 'solid']],\n      borderRadius: borderRadius,\n      transition: 'all ease-in-out .1s',\n      '&:focus': {\n        isolate: false,\n        borderColor: color.link,\n        boxShadow: [[0, 0, 0, 2, color.focus]],\n        outline: 0\n      },\n      '&::placeholder': {\n        isolate: false,\n        fontFamily: fontFamily.base,\n        fontSize: fontSize.base,\n        color: color.light\n      }\n    }\n  };\n};\n\nfunction TableOfContentsRenderer(_ref2) {\n  var classes = _ref2.classes,\n      children = _ref2.children,\n      searchTerm = _ref2.searchTerm,\n      onSearchTermChange = _ref2.onSearchTermChange;\n  return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n    className: classes.root\n  }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"nav\", null, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n    className: classes.search\n  }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"input\", {\n    value: searchTerm,\n    className: classes.input,\n    placeholder: \"Filter by name\",\n    \"aria-label\": \"Filter by name\",\n    onChange: function onChange(event) {\n      return onSearchTermChange(event.target.value);\n    }\n  })), children)));\n}\nTableOfContentsRenderer.propTypes = {\n  classes: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.object.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.node,\n  searchTerm: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.string.isRequired,\n  onSearchTermChange: prop_types__WEBPACK_IMPORTED_MODULE_3___default.a.func.isRequired\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(rsg_components_Styled__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(styles)(TableOfContentsRenderer));\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/rsg-components/TableOfContents/TableOfContentsRenderer.js?");
 
 /***/ }),
 
@@ -13606,7 +13644,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filterComponentExamples; });\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Return a copy of the given component with the examples array filtered\n * to contain only the specified index:\n * filterComponentExamples({ examples: [1,2,3], ...other }, 2) → { examples: [3], ...other }\n *\n * @param {object} component\n * @param {number} index\n * @returns {object}\n */\n\nfunction filterComponentExamples(component, index) {\n  return Object.assign({}, component, {\n    props: Object.assign({}, component.props, {\n      examples: [component.props.examples[index]]\n    })\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/filterComponentExamples.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filterComponentExamples; });\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * Return a copy of the given component with the examples array filtered\n * to contain only the specified index:\n * filterComponentExamples({ examples: [1,2,3], ...other }, 2) → { examples: [3], ...other }\n *\n * @param {object} component\n * @param {number} index\n * @returns {object}\n */\nfunction filterComponentExamples(component, index) {\n  return Object.assign({}, component, {\n    props: Object.assign({}, component.props, {\n      examples: [component.props.examples[index]]\n    })\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/filterComponentExamples.js?");
 
 /***/ }),
 
@@ -13618,7 +13656,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filterComponentsByExactName; });\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__);\n\n\n/**\n * Filters list of components by component name.\n *\n * @param {Array} components\n * @param {string} name\n * @return {Array}\n */\n\nfunction filterComponentsByExactName(components, name) {\n  return components.filter(function (component) {\n    return component.name === name;\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/filterComponentsByExactName.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filterComponentsByExactName; });\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\n/**\n * Filters list of components by component name.\n *\n * @param {Array} components\n * @param {string} name\n * @return {Array}\n */\nfunction filterComponentsByExactName(components, name) {\n  return components.filter(function (component) {\n    return component.name === name;\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/filterComponentsByExactName.js?");
 
 /***/ }),
 
@@ -13654,7 +13692,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filterSectionExamples; });\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n\n/**\n * Return a copy of the given section with the examples array filtered\n * to contain only the specified index\n *\n * @param {object} section\n * @param {number} index\n * @returns {object}\n */\n\nfunction filterSectionExamples(section, index) {\n  return Object.assign({}, section, {\n    content: [section.content[index]]\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/filterSectionExamples.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return filterSectionExamples; });\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_0__);\n\n\n/**\n * Return a copy of the given section with the examples array filtered\n * to contain only the specified index\n *\n * @param {object} section\n * @param {number} index\n * @returns {object}\n */\nfunction filterSectionExamples(section, index) {\n  return Object.assign({}, section, {\n    content: [section.content[index]]\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/filterSectionExamples.js?");
 
 /***/ }),
 
@@ -13702,7 +13740,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getFilterRegExp; });\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor */ \"./node_modules/core-js/modules/es.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.replace */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n/**\n * RegExp to fuzzy filter components list by component name.\n *\n * @param {string} query\n * @return {RegExp}\n */\n\nfunction getFilterRegExp(query) {\n  query = query.replace(/[^a-z0-9]/gi, '').split('').join('.*');\n  return new RegExp(query, 'i');\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/getFilterRegExp.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getFilterRegExp; });\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.join */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.regexp.constructor */ \"./node_modules/core-js/modules/es.regexp.constructor.js\");\n/* harmony import */ var core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_constructor__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.regexp.to-string */ \"./node_modules/core-js/modules/es.regexp.to-string.js\");\n/* harmony import */ var core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_regexp_to_string__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.replace */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.split */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\n/**\n * RegExp to fuzzy filter components list by component name.\n *\n * @param {string} query\n * @return {RegExp}\n */\nfunction getFilterRegExp(query) {\n  query = query.replace(/[^a-z0-9]/gi, '').split('').join('.*');\n  return new RegExp(query, 'i');\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/getFilterRegExp.js?");
 
 /***/ }),
 
@@ -13750,7 +13788,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getUrl; });\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.anchor */ \"./node_modules/core-js/modules/es.string.anchor.js\");\n/* harmony import */ var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\n * Get component / section URL.\n *\n * @param {string} $.name Name\n * @param {string} $.slug Slug\n * @param {number} $.example Example index\n * @param {boolean} $.anchor Anchor?\n * @param {boolean} $.isolated Isolated mode?\n * @param {boolean} $.nochrome No chrome? (Can be combined with anchor or isolated)\n * @param {boolean} $.absolute Absolute URL? (Can be combined with other flags)\n * @param {object} [location] Location object (will use current page location by default)\n * @return {string}\n */\n\nfunction getUrl(_temp, _temp2) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      name = _ref.name,\n      slug = _ref.slug,\n      example = _ref.example,\n      anchor = _ref.anchor,\n      isolated = _ref.isolated,\n      nochrome = _ref.nochrome,\n      absolute = _ref.absolute,\n      hashPath = _ref.hashPath,\n      id = _ref.id,\n      takeHash = _ref.takeHash;\n\n  var _ref2 = _temp2 === void 0 ? window.location : _temp2,\n      origin = _ref2.origin,\n      pathname = _ref2.pathname,\n      hash = _ref2.hash;\n\n  var url = pathname;\n\n  if (takeHash) {\n    if (hash.indexOf('?') > -1) {\n      url += hash.substring(0, hash.indexOf('?'));\n    } else {\n      url += hash;\n    }\n  }\n\n  if (nochrome) {\n    url += '?nochrome';\n  }\n\n  if (anchor) {\n    url += \"#\" + slug;\n  } else if (isolated || nochrome) {\n    url += \"#!/\" + name;\n  }\n\n  if (hashPath) {\n    if (!id) {\n      hashPath = [].concat(hashPath, [name]);\n    }\n\n    url += \"#/\" + hashPath.join('/');\n  }\n\n  if (id) {\n    url += \"?id=\" + slug;\n  }\n\n  if (example !== undefined) {\n    url += \"/\" + example;\n  }\n\n  if (absolute) {\n    return origin + url;\n  }\n\n  return url;\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/getUrl.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return getUrl; });\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.join */ \"./node_modules/core-js/modules/es.array.join.js\");\n/* harmony import */ var core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_join__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.anchor */ \"./node_modules/core-js/modules/es.string.anchor.js\");\n/* harmony import */ var core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_anchor__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n\n/**\n * Get component / section URL.\n *\n * @param {string} $.name Name\n * @param {string} $.slug Slug\n * @param {number} $.example Example index\n * @param {boolean} $.anchor Anchor?\n * @param {boolean} $.isolated Isolated mode?\n * @param {boolean} $.nochrome No chrome? (Can be combined with anchor or isolated)\n * @param {boolean} $.absolute Absolute URL? (Can be combined with other flags)\n * @param {object} [location] Location object (will use current page location by default)\n * @return {string}\n */\nfunction getUrl(_temp, _temp2) {\n  var _ref = _temp === void 0 ? {} : _temp,\n      name = _ref.name,\n      slug = _ref.slug,\n      example = _ref.example,\n      anchor = _ref.anchor,\n      isolated = _ref.isolated,\n      nochrome = _ref.nochrome,\n      absolute = _ref.absolute,\n      hashPath = _ref.hashPath,\n      id = _ref.id,\n      takeHash = _ref.takeHash;\n\n  var _ref2 = _temp2 === void 0 ? window.location : _temp2,\n      origin = _ref2.origin,\n      pathname = _ref2.pathname,\n      hash = _ref2.hash;\n\n  var url = pathname;\n\n  if (takeHash) {\n    if (hash.indexOf('?') > -1) {\n      url += hash.substring(0, hash.indexOf('?'));\n    } else {\n      url += hash;\n    }\n  }\n\n  if (nochrome) {\n    url += '?nochrome';\n  }\n\n  if (anchor) {\n    url += \"#\" + slug;\n  } else if (isolated || nochrome) {\n    url += \"#!/\" + name;\n  }\n\n  if (hashPath) {\n    if (!id) {\n      hashPath = [].concat(hashPath, [name]);\n    }\n\n    url += \"#/\" + hashPath.join('/');\n  }\n\n  if (id) {\n    url += \"?id=\" + slug;\n  }\n\n  if (example !== undefined) {\n    url += \"/\" + example;\n  }\n\n  if (absolute) {\n    return origin + url;\n  }\n\n  return url;\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/getUrl.js?");
 
 /***/ }),
 
@@ -13774,7 +13812,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return processComponents; });\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/**\n * Do things that are hard or impossible to do in a loader: we don’t have access to component name\n * and props in the styleguide-loader because we’re using `require` to load the component module.\n *\n * @param {Array} components\n * @return {Array}\n */\n\nfunction processComponents(components) {\n  return components.map(function (component) {\n    var newComponent = Object.assign({}, component, {\n      // Add .name shortcuts for names instead of .props.displayName.\n      name: component.props.displayName,\n      visibleName: component.props.visibleName || component.props.displayName,\n      props: Object.assign({}, component.props, {\n        // Append @example doclet to all examples\n        examples: [].concat(component.props.examples || [], component.props.example || [])\n      })\n    });\n    return newComponent;\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/processComponents.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return processComponents; });\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.concat */ \"./node_modules/core-js/modules/es.array.concat.js\");\n/* harmony import */ var core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_concat__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.array.map */ \"./node_modules/core-js/modules/es.array.map.js\");\n/* harmony import */ var core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_map__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.object.assign */ \"./node_modules/core-js/modules/es.object.assign.js\");\n/* harmony import */ var core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_object_assign__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n\n/**\n * Do things that are hard or impossible to do in a loader: we don’t have access to component name\n * and props in the styleguide-loader because we’re using `require` to load the component module.\n *\n * @param {Array} components\n * @return {Array}\n */\nfunction processComponents(components) {\n  return components.map(function (component) {\n    var newComponent = Object.assign({}, component, {\n      // Add .name shortcuts for names instead of .props.displayName.\n      name: component.props.displayName,\n      visibleName: component.props.visibleName || component.props.displayName,\n      props: Object.assign({}, component.props, {\n        // Append @example doclet to all examples\n        examples: [].concat(component.props.examples || [], component.props.example || [])\n      })\n    });\n    return newComponent;\n  });\n}\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/processComponents.js?");
 
 /***/ }),
 
@@ -13810,7 +13848,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.split */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.trim */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n // Temporary copy to fix\n// https://github.com/lukeed/rewrite-imports/issues/10\n\nvar UNNAMED = /import\\s*['\"]([^'\"]+)['\"];?/gi;\nvar NAMED = /import\\s*(\\*\\s*as)?\\s*(\\w*?)\\s*,?\\s*(?:\\{([\\s\\S]*?)\\})?\\s*from\\s*['\"]([^'\"]+)['\"];?/gi;\n\nfunction alias(key) {\n  key = key.trim();\n  var name = key.split(' as ');\n\n  if (name.length > 1) {\n    key = name.shift();\n  }\n\n  return {\n    key: key,\n    name: name[0]\n  };\n}\n\nfunction generate(keys, dep, base, fn) {\n  var tmp = dep.split('/').pop().replace(/\\W/g, '_') + '$' + num++; // uniqueness\n\n  var name = alias(tmp).name;\n  dep = fn + \"('\" + dep + \"')\";\n  var obj;\n  var out = \"const \" + name + \" = \" + dep + \";\";\n\n  if (base) {\n    out += \"\\nconst \" + base + \" = \" + tmp + \".default || \" + tmp + \";\";\n  }\n\n  keys.forEach(function (key) {\n    obj = alias(key);\n    out += \"\\nconst \" + obj.name + \" = \" + tmp + \".\" + obj.key + \";\";\n  });\n  return out;\n}\n\nvar num;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (str, fn) {\n  if (fn === void 0) {\n    fn = 'require';\n  }\n\n  num = 0;\n  return str.replace(NAMED, function (_, asterisk, base, req, dep) {\n    return generate(req ? req.split(',').filter(function (dep) {\n      return dep.trim();\n    }) : [], dep, base, fn);\n  }).replace(UNNAMED, function (_, dep) {\n    return fn + \"('\" + dep + \"');\";\n  });\n});\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/rewriteImports.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! core-js/modules/es.array.filter */ \"./node_modules/core-js/modules/es.array.filter.js\");\n/* harmony import */ var core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_filter__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! core-js/modules/es.function.name */ \"./node_modules/core-js/modules/es.function.name.js\");\n/* harmony import */ var core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_function_name__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! core-js/modules/es.string.replace */ \"./node_modules/core-js/modules/es.string.replace.js\");\n/* harmony import */ var core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_replace__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! core-js/modules/es.string.split */ \"./node_modules/core-js/modules/es.string.split.js\");\n/* harmony import */ var core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_split__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! core-js/modules/es.string.trim */ \"./node_modules/core-js/modules/es.string.trim.js\");\n/* harmony import */ var core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_string_trim__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! core-js/modules/web.dom-collections.for-each */ \"./node_modules/core-js/modules/web.dom-collections.for-each.js\");\n/* harmony import */ var core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_web_dom_collections_for_each__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n// Temporary copy to fix\n// https://github.com/lukeed/rewrite-imports/issues/10\nvar UNNAMED = /import\\s*['\"]([^'\"]+)['\"];?/gi;\nvar NAMED = /import\\s*(\\*\\s*as)?\\s*(\\w*?)\\s*,?\\s*(?:\\{([\\s\\S]*?)\\})?\\s*from\\s*['\"]([^'\"]+)['\"];?/gi;\n\nfunction alias(key) {\n  key = key.trim();\n  var name = key.split(' as ');\n\n  if (name.length > 1) {\n    key = name.shift();\n  }\n\n  return {\n    key: key,\n    name: name[0]\n  };\n}\n\nfunction generate(keys, dep, base, fn) {\n  var tmp = dep.split('/').pop().replace(/\\W/g, '_') + '$' + num++; // uniqueness\n\n  var name = alias(tmp).name;\n  dep = fn + \"('\" + dep + \"')\";\n  var obj;\n  var out = \"const \" + name + \" = \" + dep + \";\";\n\n  if (base) {\n    out += \"\\nconst \" + base + \" = \" + tmp + \".default || \" + tmp + \";\";\n  }\n\n  keys.forEach(function (key) {\n    obj = alias(key);\n    out += \"\\nconst \" + obj.name + \" = \" + tmp + \".\" + obj.key + \";\";\n  });\n  return out;\n}\n\nvar num;\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (str, fn) {\n  if (fn === void 0) {\n    fn = 'require';\n  }\n\n  num = 0;\n  return str.replace(NAMED, function (_, asterisk, base, req, dep) {\n    return generate(req ? req.split(',').filter(function (dep) {\n      return dep.trim();\n    }) : [], dep, base, fn);\n  }).replace(UNNAMED, function (_, dep) {\n    return fn + \"('\" + dep + \"');\";\n  });\n});\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/utils/rewriteImports.js?");
 
 /***/ }),
 
@@ -13845,7 +13883,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) *
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("\nif (false) {}\n\nmodule.exports = {\n    'config': {\n        'compilerConfig': {\n            'objectAssign': 'Object.assign',\n            'target': { 'ie': 11 },\n            'transforms': {\n                'modules': false,\n                'dangerousTaggedTemplateString': true\n            }\n        },\n        'mountPointId': 'rsg-root',\n        'pagePerSection': false,\n        'previewDelay': 500,\n        'ribbon': void 0,\n        'showSidebar': true,\n        'styles': {},\n        'theme': {},\n        'title': 'Dicty Frontpage Style Guide',\n        'version': void 0\n    },\n    'welcomeScreen': false,\n    'patterns': void 0,\n    'sections': [{\n            'name': void 0,\n            'exampleMode': 'collapse',\n            'usageMode': 'collapse',\n            'sectionDepth': 0,\n            'description': void 0,\n            'slug': '',\n            'sections': [],\n            'filepath': void 0,\n            'href': void 0,\n            'components': [\n                {\n                    'filepath': 'src/components/authentication/AuthLoader.js',\n                    'slug': 'authloader',\n                    'pathLine': 'src/components/authentication/AuthLoader.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/AuthLoader.js */ \"./src/components/authentication/AuthLoader.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/AuthLoader.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/AuthLoader.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/Authorization.js',\n                    'slug': 'authorization',\n                    'pathLine': 'src/components/authentication/Authorization.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/Authorization.js */ \"./src/components/authentication/Authorization.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Authorization.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Authorization.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/ErrorNotification.js',\n                    'slug': 'errornotification',\n                    'pathLine': 'src/components/authentication/ErrorNotification.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/ErrorNotification.js */ \"./src/components/authentication/ErrorNotification.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/ErrorNotification.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/ErrorNotification.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/Login.js',\n                    'slug': 'login',\n                    'pathLine': 'src/components/authentication/Login.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/Login.js */ \"./src/components/authentication/Login.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Login.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Login.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/Logout.js',\n                    'slug': 'logout',\n                    'pathLine': 'src/components/authentication/Logout.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/Logout.js */ \"./src/components/authentication/Logout.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Logout.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Logout.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/OauthCallback.js',\n                    'slug': 'oauthcallback',\n                    'pathLine': 'src/components/authentication/OauthCallback.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/OauthCallback.js */ \"./src/components/authentication/OauthCallback.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthCallback.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthCallback.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/OauthSignHandler.js',\n                    'slug': 'oauthsignhandler',\n                    'pathLine': 'src/components/authentication/OauthSignHandler.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/OauthSignHandler.js */ \"./src/components/authentication/OauthSignHandler.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthSignHandler.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthSignHandler.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/HelpModal.js',\n                    'slug': 'helpmodal',\n                    'pathLine': 'src/components/editor/HelpModal.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/HelpModal.js */ \"./src/components/editor/HelpModal.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/HelpModal.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/HelpModal.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/InlineEditor.js',\n                    'slug': 'inlineeditor',\n                    'pathLine': 'src/components/editor/InlineEditor.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/InlineEditor.js */ \"./src/components/editor/InlineEditor.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/InlineEditor.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/InlineEditor.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/PageEditor.js',\n                    'slug': 'pageeditor',\n                    'pathLine': 'src/components/editor/PageEditor.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/PageEditor.js */ \"./src/components/editor/PageEditor.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/PageEditor.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/PageEditor.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/alignment.js',\n                    'slug': 'alignment',\n                    'pathLine': 'src/components/editor/plugins/alignment.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/alignment.js */ \"./src/components/editor/plugins/alignment.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/alignment.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/alignment.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/bold.js',\n                    'slug': 'bold',\n                    'pathLine': 'src/components/editor/plugins/bold.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/bold.js */ \"./src/components/editor/plugins/bold.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/bold.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/bold.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/divider.js',\n                    'slug': 'divider',\n                    'pathLine': 'src/components/editor/plugins/divider.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/divider.js */ \"./src/components/editor/plugins/divider.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/divider.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/divider.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/fontcolor.js',\n                    'slug': 'fontcolor',\n                    'pathLine': 'src/components/editor/plugins/fontcolor.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/fontcolor.js */ \"./src/components/editor/plugins/fontcolor.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontcolor.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontcolor.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/fontfamily.js',\n                    'slug': 'fontfamily',\n                    'pathLine': 'src/components/editor/plugins/fontfamily.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/fontfamily.js */ \"./src/components/editor/plugins/fontfamily.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontfamily.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontfamily.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/fontsize.js',\n                    'slug': 'fontsize',\n                    'pathLine': 'src/components/editor/plugins/fontsize.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/fontsize.js */ \"./src/components/editor/plugins/fontsize.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontsize.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontsize.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/heading.js',\n                    'slug': 'heading',\n                    'pathLine': 'src/components/editor/plugins/heading.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/heading.js */ \"./src/components/editor/plugins/heading.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/heading.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/heading.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/image.js',\n                    'slug': 'image',\n                    'pathLine': 'src/components/editor/plugins/image.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/image.js */ \"./src/components/editor/plugins/image.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/image.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/image.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/italic.js',\n                    'slug': 'italic',\n                    'pathLine': 'src/components/editor/plugins/italic.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/italic.js */ \"./src/components/editor/plugins/italic.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/italic.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/italic.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/link.js',\n                    'slug': 'link',\n                    'pathLine': 'src/components/editor/plugins/link.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/link.js */ \"./src/components/editor/plugins/link.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/link.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/link.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/list.js',\n                    'slug': 'list',\n                    'pathLine': 'src/components/editor/plugins/list.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/list.js */ \"./src/components/editor/plugins/list.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/list.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/list.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/strikethrough.js',\n                    'slug': 'strikethrough',\n                    'pathLine': 'src/components/editor/plugins/strikethrough.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/strikethrough.js */ \"./src/components/editor/plugins/strikethrough.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/strikethrough.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/strikethrough.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/table.js',\n                    'slug': 'table',\n                    'pathLine': 'src/components/editor/plugins/table.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/table.js */ \"./src/components/editor/plugins/table.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/table.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/table.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/underline.js',\n                    'slug': 'underline',\n                    'pathLine': 'src/components/editor/plugins/underline.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/underline.js */ \"./src/components/editor/plugins/underline.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/underline.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/underline.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/video.js',\n                    'slug': 'video',\n                    'pathLine': 'src/components/editor/plugins/video.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/video.js */ \"./src/components/editor/plugins/video.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/video.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/video.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/toolbar/EditorToolbar.js',\n                    'slug': 'editortoolbar',\n                    'pathLine': 'src/components/editor/toolbar/EditorToolbar.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/toolbar/EditorToolbar.js */ \"./src/components/editor/toolbar/EditorToolbar.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/EditorToolbar.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/EditorToolbar.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/toolbar/ToolbarButton.js',\n                    'slug': 'toolbarbutton',\n                    'pathLine': 'src/components/editor/toolbar/ToolbarButton.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/toolbar/ToolbarButton.js */ \"./src/components/editor/toolbar/ToolbarButton.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/ToolbarButton.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/ToolbarButton.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Annotations.js',\n                    'slug': 'annotations',\n                    'pathLine': 'src/components/frontpage/Annotations.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Annotations.js */ \"./src/components/frontpage/Annotations.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Annotations.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Annotations.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/News.js',\n                    'slug': 'news',\n                    'pathLine': 'src/components/frontpage/News.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/News.js */ \"./src/components/frontpage/News.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/News.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/News.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Papers.js',\n                    'slug': 'papers',\n                    'pathLine': 'src/components/frontpage/Papers.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Papers.js */ \"./src/components/frontpage/Papers.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Papers.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Papers.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Popular.js',\n                    'slug': 'popular',\n                    'pathLine': 'src/components/frontpage/Popular.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Popular.js */ \"./src/components/frontpage/Popular.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Popular.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Popular.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Slideshow.js',\n                    'slug': 'slideshow',\n                    'pathLine': 'src/components/frontpage/Slideshow.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Slideshow.js */ \"./src/components/frontpage/Slideshow.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Slideshow.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Slideshow.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/StockCenter.js',\n                    'slug': 'stockcenter',\n                    'pathLine': 'src/components/frontpage/StockCenter.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/StockCenter.js */ \"./src/components/frontpage/StockCenter.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/StockCenter.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/StockCenter.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/About/About.js',\n                    'slug': 'about',\n                    'pathLine': 'src/components/pages/About/About.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/About/About.js */ \"./src/components/pages/About/About.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/About.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/About.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/About/SpecialThanks.js',\n                    'slug': 'specialthanks',\n                    'pathLine': 'src/components/pages/About/SpecialThanks.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/About/SpecialThanks.js */ \"./src/components/pages/About/SpecialThanks.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/SpecialThanks.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/SpecialThanks.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/About/TechnicalSummary.js',\n                    'slug': 'technicalsummary',\n                    'pathLine': 'src/components/pages/About/TechnicalSummary.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/About/TechnicalSummary.js */ \"./src/components/pages/About/TechnicalSummary.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/TechnicalSummary.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/TechnicalSummary.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/Citations.js',\n                    'slug': 'citations',\n                    'pathLine': 'src/components/pages/Downloads/Citations.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/Citations.js */ \"./src/components/pages/Downloads/Citations.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Citations.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Citations.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/Downloads.js',\n                    'slug': 'downloads',\n                    'pathLine': 'src/components/pages/Downloads/Downloads.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/Downloads.js */ \"./src/components/pages/Downloads/Downloads.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Downloads.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Downloads.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/DownloadsHeader.js',\n                    'slug': 'downloadsheader',\n                    'pathLine': 'src/components/pages/Downloads/DownloadsHeader.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/DownloadsHeader.js */ \"./src/components/pages/Downloads/DownloadsHeader.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsHeader.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsHeader.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/DownloadsLoader.js',\n                    'slug': 'downloadsloader',\n                    'pathLine': 'src/components/pages/Downloads/DownloadsLoader.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/DownloadsLoader.js */ \"./src/components/pages/Downloads/DownloadsLoader.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsLoader.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsLoader.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/DownloadsTable.js',\n                    'slug': 'downloadstable',\n                    'pathLine': 'src/components/pages/Downloads/DownloadsTable.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/DownloadsTable.js */ \"./src/components/pages/Downloads/DownloadsTable.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsTable.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsTable.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/TabContainer.js',\n                    'slug': 'tabcontainer',\n                    'pathLine': 'src/components/pages/Downloads/TabContainer.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/TabContainer.js */ \"./src/components/pages/Downloads/TabContainer.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/TabContainer.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/TabContainer.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/AddPage.js',\n                    'slug': 'addpage',\n                    'pathLine': 'src/components/pages/EditablePages/AddPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/AddPage.js */ \"./src/components/pages/EditablePages/AddPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/AddPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/AddPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/EditInfoPage.js',\n                    'slug': 'editinfopage',\n                    'pathLine': 'src/components/pages/EditablePages/EditInfoPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/EditInfoPage.js */ \"./src/components/pages/EditablePages/EditInfoPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/EditInfoPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/EditInfoPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/InfoPage.js',\n                    'slug': 'infopage',\n                    'pathLine': 'src/components/pages/EditablePages/InfoPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/InfoPage.js */ \"./src/components/pages/EditablePages/InfoPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/InfoPageView.js',\n                    'slug': 'infopageview',\n                    'pathLine': 'src/components/pages/EditablePages/InfoPageView.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/InfoPageView.js */ \"./src/components/pages/EditablePages/InfoPageView.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPageView.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPageView.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/ErrorBoundary.js',\n                    'slug': 'errorboundary',\n                    'pathLine': 'src/components/pages/ErrorBoundary.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/ErrorBoundary.js */ \"./src/components/pages/ErrorBoundary.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorBoundary.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorBoundary.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/ErrorPage.js',\n                    'slug': 'errorpage',\n                    'pathLine': 'src/components/pages/ErrorPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/ErrorPage.js */ \"./src/components/pages/ErrorPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Front.js',\n                    'slug': 'front',\n                    'pathLine': 'src/components/pages/Front.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Front.js */ \"./src/components/pages/Front.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Front.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Front.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/News/NewsArchive.js',\n                    'slug': 'newsarchive',\n                    'pathLine': 'src/components/pages/News/NewsArchive.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/News/NewsArchive.js */ \"./src/components/pages/News/NewsArchive.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/News/NewsArchive.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/News/NewsArchive.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/PageNotReady.js',\n                    'slug': 'pagenotready',\n                    'pathLine': 'src/components/pages/PageNotReady.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/PageNotReady.js */ \"./src/components/pages/PageNotReady.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/PageNotReady.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/PageNotReady.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Papers/PapersArchive.js',\n                    'slug': 'papersarchive',\n                    'pathLine': 'src/components/pages/Papers/PapersArchive.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Papers/PapersArchive.js */ \"./src/components/pages/Papers/PapersArchive.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Papers/PapersArchive.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Papers/PapersArchive.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                }\n            ],\n            'content': void 0,\n            'external': void 0\n        }]\n}\n\t\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/index.js?./node_modules/react-styleguidist/lib/loaders/styleguide-loader.js");
+eval("\nif (false) {}\n\nmodule.exports = {\n    'config': {\n        'compilerConfig': {\n            'objectAssign': 'Object.assign',\n            'target': { 'ie': 11 },\n            'transforms': {\n                'modules': false,\n                'dangerousTaggedTemplateString': true\n            }\n        },\n        'mountPointId': 'rsg-root',\n        'pagePerSection': false,\n        'previewDelay': 500,\n        'ribbon': void 0,\n        'showSidebar': true,\n        'styles': {},\n        'theme': {},\n        'title': 'Dicty Frontpage Style Guide',\n        'version': void 0\n    },\n    'welcomeScreen': false,\n    'patterns': void 0,\n    'sections': [{\n            'name': void 0,\n            'exampleMode': 'collapse',\n            'usageMode': 'collapse',\n            'sectionDepth': 0,\n            'description': void 0,\n            'slug': 'section-',\n            'sections': [],\n            'filepath': void 0,\n            'href': void 0,\n            'components': [\n                {\n                    'filepath': 'src/components/authentication/AuthLoader.js',\n                    'slug': 'authloader',\n                    'pathLine': 'src/components/authentication/AuthLoader.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/AuthLoader.js */ \"./src/components/authentication/AuthLoader.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/AuthLoader.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/AuthLoader.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/Authorization.js',\n                    'slug': 'authorization',\n                    'pathLine': 'src/components/authentication/Authorization.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/Authorization.js */ \"./src/components/authentication/Authorization.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Authorization.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Authorization.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/ErrorNotification.js',\n                    'slug': 'errornotification',\n                    'pathLine': 'src/components/authentication/ErrorNotification.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/ErrorNotification.js */ \"./src/components/authentication/ErrorNotification.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/ErrorNotification.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/ErrorNotification.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/Login.js',\n                    'slug': 'login',\n                    'pathLine': 'src/components/authentication/Login.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/Login.js */ \"./src/components/authentication/Login.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Login.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Login.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/Logout.js',\n                    'slug': 'logout',\n                    'pathLine': 'src/components/authentication/Logout.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/Logout.js */ \"./src/components/authentication/Logout.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Logout.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/Logout.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/OauthCallback.js',\n                    'slug': 'oauthcallback',\n                    'pathLine': 'src/components/authentication/OauthCallback.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/OauthCallback.js */ \"./src/components/authentication/OauthCallback.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthCallback.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthCallback.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/authentication/OauthSignHandler.js',\n                    'slug': 'oauthsignhandler',\n                    'pathLine': 'src/components/authentication/OauthSignHandler.js',\n                    'module': __webpack_require__(/*! ./src/components/authentication/OauthSignHandler.js */ \"./src/components/authentication/OauthSignHandler.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthSignHandler.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/authentication/OauthSignHandler.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/flow/types.js',\n                    'slug': 'types',\n                    'pathLine': 'src/components/editor/flow/types.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/flow/types.js */ \"./src/components/editor/flow/types.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/flow/types.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/flow/types.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/HelpModal.js',\n                    'slug': 'helpmodal',\n                    'pathLine': 'src/components/editor/HelpModal.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/HelpModal.js */ \"./src/components/editor/HelpModal.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/HelpModal.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/HelpModal.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/InlineEditor.js',\n                    'slug': 'inlineeditor',\n                    'pathLine': 'src/components/editor/InlineEditor.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/InlineEditor.js */ \"./src/components/editor/InlineEditor.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/InlineEditor.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/InlineEditor.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/PageEditor.js',\n                    'slug': 'pageeditor',\n                    'pathLine': 'src/components/editor/PageEditor.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/PageEditor.js */ \"./src/components/editor/PageEditor.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/PageEditor.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/PageEditor.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/alignment.js',\n                    'slug': 'alignment',\n                    'pathLine': 'src/components/editor/plugins/alignment.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/alignment.js */ \"./src/components/editor/plugins/alignment.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/alignment.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/alignment.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/bold.js',\n                    'slug': 'bold',\n                    'pathLine': 'src/components/editor/plugins/bold.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/bold.js */ \"./src/components/editor/plugins/bold.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/bold.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/bold.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/divider.js',\n                    'slug': 'divider',\n                    'pathLine': 'src/components/editor/plugins/divider.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/divider.js */ \"./src/components/editor/plugins/divider.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/divider.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/divider.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/fontcolor.js',\n                    'slug': 'fontcolor',\n                    'pathLine': 'src/components/editor/plugins/fontcolor.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/fontcolor.js */ \"./src/components/editor/plugins/fontcolor.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontcolor.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontcolor.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/fontfamily.js',\n                    'slug': 'fontfamily',\n                    'pathLine': 'src/components/editor/plugins/fontfamily.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/fontfamily.js */ \"./src/components/editor/plugins/fontfamily.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontfamily.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontfamily.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/fontsize.js',\n                    'slug': 'fontsize',\n                    'pathLine': 'src/components/editor/plugins/fontsize.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/fontsize.js */ \"./src/components/editor/plugins/fontsize.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontsize.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/fontsize.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/heading.js',\n                    'slug': 'heading',\n                    'pathLine': 'src/components/editor/plugins/heading.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/heading.js */ \"./src/components/editor/plugins/heading.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/heading.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/heading.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/image.js',\n                    'slug': 'image',\n                    'pathLine': 'src/components/editor/plugins/image.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/image.js */ \"./src/components/editor/plugins/image.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/image.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/image.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/italic.js',\n                    'slug': 'italic',\n                    'pathLine': 'src/components/editor/plugins/italic.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/italic.js */ \"./src/components/editor/plugins/italic.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/italic.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/italic.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/linespacing.js',\n                    'slug': 'linespacing',\n                    'pathLine': 'src/components/editor/plugins/linespacing.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/linespacing.js */ \"./src/components/editor/plugins/linespacing.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/linespacing.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/linespacing.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/link.js',\n                    'slug': 'link',\n                    'pathLine': 'src/components/editor/plugins/link.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/link.js */ \"./src/components/editor/plugins/link.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/link.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/link.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/list.js',\n                    'slug': 'list',\n                    'pathLine': 'src/components/editor/plugins/list.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/list.js */ \"./src/components/editor/plugins/list.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/list.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/list.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/strikethrough.js',\n                    'slug': 'strikethrough',\n                    'pathLine': 'src/components/editor/plugins/strikethrough.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/strikethrough.js */ \"./src/components/editor/plugins/strikethrough.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/strikethrough.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/strikethrough.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/subscript.js',\n                    'slug': 'subscript',\n                    'pathLine': 'src/components/editor/plugins/subscript.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/subscript.js */ \"./src/components/editor/plugins/subscript.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/subscript.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/subscript.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/superscript.js',\n                    'slug': 'superscript',\n                    'pathLine': 'src/components/editor/plugins/superscript.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/superscript.js */ \"./src/components/editor/plugins/superscript.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/superscript.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/superscript.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/table.js',\n                    'slug': 'table',\n                    'pathLine': 'src/components/editor/plugins/table.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/table.js */ \"./src/components/editor/plugins/table.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/table.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/table.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/underline.js',\n                    'slug': 'underline',\n                    'pathLine': 'src/components/editor/plugins/underline.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/underline.js */ \"./src/components/editor/plugins/underline.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/underline.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/underline.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/plugins/video.js',\n                    'slug': 'video',\n                    'pathLine': 'src/components/editor/plugins/video.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/plugins/video.js */ \"./src/components/editor/plugins/video.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/video.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/video.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/schema/schema.js',\n                    'slug': 'schema',\n                    'pathLine': 'src/components/editor/schema/schema.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/schema/schema.js */ \"./src/components/editor/schema/schema.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/schema/schema.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/schema/schema.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/toolbar/EditorToolbar.js',\n                    'slug': 'editortoolbar',\n                    'pathLine': 'src/components/editor/toolbar/EditorToolbar.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/toolbar/EditorToolbar.js */ \"./src/components/editor/toolbar/EditorToolbar.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/EditorToolbar.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/EditorToolbar.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/editor/toolbar/ToolbarButton.js',\n                    'slug': 'toolbarbutton',\n                    'pathLine': 'src/components/editor/toolbar/ToolbarButton.js',\n                    'module': __webpack_require__(/*! ./src/components/editor/toolbar/ToolbarButton.js */ \"./src/components/editor/toolbar/ToolbarButton.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/ToolbarButton.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/ToolbarButton.js\"),\n                    'hasExamples': true,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Annotations.js',\n                    'slug': 'annotations',\n                    'pathLine': 'src/components/frontpage/Annotations.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Annotations.js */ \"./src/components/frontpage/Annotations.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Annotations.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Annotations.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Papers.js',\n                    'slug': 'papers',\n                    'pathLine': 'src/components/frontpage/Papers.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Papers.js */ \"./src/components/frontpage/Papers.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Papers.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Papers.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Popular.js',\n                    'slug': 'popular',\n                    'pathLine': 'src/components/frontpage/Popular.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Popular.js */ \"./src/components/frontpage/Popular.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Popular.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Popular.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Slideshow.js',\n                    'slug': 'slideshow',\n                    'pathLine': 'src/components/frontpage/Slideshow.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Slideshow.js */ \"./src/components/frontpage/Slideshow.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Slideshow.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Slideshow.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/StockCenter.js',\n                    'slug': 'stockcenter',\n                    'pathLine': 'src/components/frontpage/StockCenter.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/StockCenter.js */ \"./src/components/frontpage/StockCenter.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/StockCenter.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/StockCenter.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/frontpage/Tweets.js',\n                    'slug': 'tweets',\n                    'pathLine': 'src/components/frontpage/Tweets.js',\n                    'module': __webpack_require__(/*! ./src/components/frontpage/Tweets.js */ \"./src/components/frontpage/Tweets.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Tweets.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Tweets.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/About/About.js',\n                    'slug': 'about',\n                    'pathLine': 'src/components/pages/About/About.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/About/About.js */ \"./src/components/pages/About/About.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/About.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/About.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/About/SpecialThanks.js',\n                    'slug': 'specialthanks',\n                    'pathLine': 'src/components/pages/About/SpecialThanks.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/About/SpecialThanks.js */ \"./src/components/pages/About/SpecialThanks.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/SpecialThanks.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/SpecialThanks.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/About/TechnicalSummary.js',\n                    'slug': 'technicalsummary',\n                    'pathLine': 'src/components/pages/About/TechnicalSummary.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/About/TechnicalSummary.js */ \"./src/components/pages/About/TechnicalSummary.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/TechnicalSummary.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/TechnicalSummary.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/Citations.js',\n                    'slug': 'citations',\n                    'pathLine': 'src/components/pages/Downloads/Citations.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/Citations.js */ \"./src/components/pages/Downloads/Citations.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Citations.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Citations.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/Downloads.js',\n                    'slug': 'downloads',\n                    'pathLine': 'src/components/pages/Downloads/Downloads.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/Downloads.js */ \"./src/components/pages/Downloads/Downloads.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Downloads.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/Downloads.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/DownloadsHeader.js',\n                    'slug': 'downloadsheader',\n                    'pathLine': 'src/components/pages/Downloads/DownloadsHeader.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/DownloadsHeader.js */ \"./src/components/pages/Downloads/DownloadsHeader.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsHeader.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsHeader.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/DownloadsLoader.js',\n                    'slug': 'downloadsloader',\n                    'pathLine': 'src/components/pages/Downloads/DownloadsLoader.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/DownloadsLoader.js */ \"./src/components/pages/Downloads/DownloadsLoader.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsLoader.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsLoader.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/DownloadsTable.js',\n                    'slug': 'downloadstable',\n                    'pathLine': 'src/components/pages/Downloads/DownloadsTable.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/DownloadsTable.js */ \"./src/components/pages/Downloads/DownloadsTable.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsTable.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/DownloadsTable.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Downloads/TabContainer.js',\n                    'slug': 'tabcontainer',\n                    'pathLine': 'src/components/pages/Downloads/TabContainer.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Downloads/TabContainer.js */ \"./src/components/pages/Downloads/TabContainer.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/TabContainer.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Downloads/TabContainer.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/AddPage.js',\n                    'slug': 'addpage',\n                    'pathLine': 'src/components/pages/EditablePages/AddPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/AddPage.js */ \"./src/components/pages/EditablePages/AddPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/AddPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/AddPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/EditInfoPage.js',\n                    'slug': 'editinfopage',\n                    'pathLine': 'src/components/pages/EditablePages/EditInfoPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/EditInfoPage.js */ \"./src/components/pages/EditablePages/EditInfoPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/EditInfoPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/EditInfoPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/InfoPage.js',\n                    'slug': 'infopage',\n                    'pathLine': 'src/components/pages/EditablePages/InfoPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/InfoPage.js */ \"./src/components/pages/EditablePages/InfoPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/EditablePages/InfoPageView.js',\n                    'slug': 'infopageview',\n                    'pathLine': 'src/components/pages/EditablePages/InfoPageView.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/EditablePages/InfoPageView.js */ \"./src/components/pages/EditablePages/InfoPageView.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPageView.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/EditablePages/InfoPageView.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/ErrorBoundary.js',\n                    'slug': 'errorboundary',\n                    'pathLine': 'src/components/pages/ErrorBoundary.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/ErrorBoundary.js */ \"./src/components/pages/ErrorBoundary.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorBoundary.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorBoundary.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/ErrorPage.js',\n                    'slug': 'errorpage',\n                    'pathLine': 'src/components/pages/ErrorPage.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/ErrorPage.js */ \"./src/components/pages/ErrorPage.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorPage.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/ErrorPage.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Front.js',\n                    'slug': 'front',\n                    'pathLine': 'src/components/pages/Front.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Front.js */ \"./src/components/pages/Front.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Front.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Front.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/PageNotReady.js',\n                    'slug': 'pagenotready',\n                    'pathLine': 'src/components/pages/PageNotReady.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/PageNotReady.js */ \"./src/components/pages/PageNotReady.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/PageNotReady.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/PageNotReady.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                },\n                {\n                    'filepath': 'src/components/pages/Papers/PapersArchive.js',\n                    'slug': 'papersarchive',\n                    'pathLine': 'src/components/pages/Papers/PapersArchive.js',\n                    'module': __webpack_require__(/*! ./src/components/pages/Papers/PapersArchive.js */ \"./src/components/pages/Papers/PapersArchive.js\"),\n                    'props': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Papers/PapersArchive.js */ \"./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/Papers/PapersArchive.js\"),\n                    'hasExamples': false,\n                    'metadata': {}\n                }\n            ],\n            'content': void 0,\n            'external': void 0\n        }]\n}\n\t\n\n//# sourceURL=webpack:///./node_modules/react-styleguidist/lib/client/index.js?./node_modules/react-styleguidist/lib/loaders/styleguide-loader.js");
 
 /***/ }),
 
@@ -13933,6 +13971,102 @@ eval("\n\nexports.__esModule = true;\nexports.classNamesShape = exports.timeouts
 
 /***/ }),
 
+/***/ "./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js":
+/*!******************************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js ***!
+  \******************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar AbstractWidget = function (_React$Component) {\n  _inherits(AbstractWidget, _React$Component);\n\n  function AbstractWidget() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, AbstractWidget);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = AbstractWidget.__proto__ || Object.getPrototypeOf(AbstractWidget)).call.apply(_ref, [this].concat(args))), _this), _this.loadWidget = function () {\n      var $script = __webpack_require__(/*! scriptjs */ \"./node_modules/scriptjs/dist/script.js\"); // eslint-disable-line global-require\n\n\n      $script.ready('twitter-widgets', function () {\n        if (!window.twttr) {\n          // If the script tag fails to load, scriptjs.ready() will still trigger.\n          // Let's avoid the JS exceptions when that happens.\n          console.error('Failure to load window.twttr, aborting load.'); // eslint-disable-line no-console\n\n          return;\n        } // Delete existing\n\n\n        AbstractWidget.removeChildren(_this.widgetWrapper); // Create widget\n\n        _this.props.ready(window.twttr, _this.widgetWrapper, _this.done);\n      });\n    }, _this.done = function () {\n      if (_this.willUnmount) {\n        AbstractWidget.removeChildrenExceptLast(_this.widgetWrapper);\n      }\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(AbstractWidget, [{\n    key: 'componentWillMount',\n    value: function componentWillMount() {\n      this.willUnmount = false;\n    }\n  }, {\n    key: 'componentDidMount',\n    value: function componentDidMount() {\n      this.loadWidget();\n    }\n  }, {\n    key: 'componentDidUpdate',\n    value: function componentDidUpdate() {\n      this.loadWidget();\n    }\n  }, {\n    key: 'componentWillUnmount',\n    value: function componentWillUnmount() {\n      this.willUnmount = true;\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      var _this2 = this;\n\n      return _react2.default.createElement('div', {\n        ref: function ref(c) {\n          _this2.widgetWrapper = c;\n        }\n      });\n    }\n  }], [{\n    key: 'removeChildren',\n    value: function removeChildren(node) {\n      if (node) {\n        while (node.firstChild) {\n          node.removeChild(node.firstChild);\n        }\n      }\n    }\n  }, {\n    key: 'removeChildrenExceptLast',\n    value: function removeChildrenExceptLast(node) {\n      if (node) {\n        while (node.childNodes.length > 1) {\n          node.removeChild(node.firstChild);\n        }\n      }\n    }\n  }]);\n\n  return AbstractWidget;\n}(_react2.default.Component);\n\nAbstractWidget.propTypes = {\n  ready: _propTypes2.default.func.isRequired\n};\nexports.default = AbstractWidget;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/components/Follow.js":
+/*!**********************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/Follow.js ***!
+  \**********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isEqual = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n\nvar _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\nvar _AbstractWidget = __webpack_require__(/*! ./AbstractWidget */ \"./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js\");\n\nvar _AbstractWidget2 = _interopRequireDefault(_AbstractWidget);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Follow = function (_React$Component) {\n  _inherits(Follow, _React$Component);\n\n  function Follow() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Follow);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Follow.__proto__ || Object.getPrototypeOf(Follow)).call.apply(_ref, [this].concat(args))), _this), _this.ready = function (tw, element, done) {\n      var _this$props = _this.props,\n          username = _this$props.username,\n          options = _this$props.options,\n          onLoad = _this$props.onLoad; // Options must be cloned since Twitter Widgets modifies it directly\n\n      tw.widgets.createFollowButton(username, element, (0, _cloneDeep2.default)(options)).then(function () {\n        // Widget is loaded\n        done();\n        onLoad();\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Follow, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var changed = function changed(name) {\n        return !(0, _isEqual2.default)(_this2.props[name], nextProps[name]);\n      };\n\n      return changed('username') || changed('options');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(_AbstractWidget2.default, {\n        ready: this.ready\n      });\n    }\n  }]);\n\n  return Follow;\n}(_react2.default.Component);\n\nFollow.propTypes = {\n  username: _propTypes2.default.string.isRequired,\n  options: _propTypes2.default.object,\n  onLoad: _propTypes2.default.func\n};\nFollow.defaultProps = {\n  options: {},\n  onLoad: function onLoad() {}\n};\nexports.default = Follow;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/Follow.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/components/Hashtag.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/Hashtag.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isEqual = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n\nvar _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\nvar _AbstractWidget = __webpack_require__(/*! ./AbstractWidget */ \"./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js\");\n\nvar _AbstractWidget2 = _interopRequireDefault(_AbstractWidget);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Hashtag = function (_React$Component) {\n  _inherits(Hashtag, _React$Component);\n\n  function Hashtag() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Hashtag);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Hashtag.__proto__ || Object.getPrototypeOf(Hashtag)).call.apply(_ref, [this].concat(args))), _this), _this.ready = function (tw, element, done) {\n      var _this$props = _this.props,\n          hashtag = _this$props.hashtag,\n          options = _this$props.options,\n          onLoad = _this$props.onLoad; // Options must be cloned since Twitter Widgets modifies it directly\n\n      tw.widgets.createHashtagButton(hashtag, element, (0, _cloneDeep2.default)(options)).then(function () {\n        // Widget is loaded\n        done();\n        onLoad();\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Hashtag, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var changed = function changed(name) {\n        return !(0, _isEqual2.default)(_this2.props[name], nextProps[name]);\n      };\n\n      return changed('hashtag') || changed('options');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(_AbstractWidget2.default, {\n        ready: this.ready\n      });\n    }\n  }]);\n\n  return Hashtag;\n}(_react2.default.Component);\n\nHashtag.propTypes = {\n  hashtag: _propTypes2.default.string.isRequired,\n  options: _propTypes2.default.object,\n  onLoad: _propTypes2.default.func\n};\nHashtag.defaultProps = {\n  options: {},\n  onLoad: function onLoad() {}\n};\nexports.default = Hashtag;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/Hashtag.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/components/Mention.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/Mention.js ***!
+  \***********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isEqual = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n\nvar _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\nvar _AbstractWidget = __webpack_require__(/*! ./AbstractWidget */ \"./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js\");\n\nvar _AbstractWidget2 = _interopRequireDefault(_AbstractWidget);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Mention = function (_React$Component) {\n  _inherits(Mention, _React$Component);\n\n  function Mention() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Mention);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Mention.__proto__ || Object.getPrototypeOf(Mention)).call.apply(_ref, [this].concat(args))), _this), _this.ready = function (tw, element, done) {\n      var _this$props = _this.props,\n          username = _this$props.username,\n          options = _this$props.options,\n          onLoad = _this$props.onLoad; // Options must be cloned since Twitter Widgets modifies it directly\n\n      tw.widgets.createMentionButton(username, element, (0, _cloneDeep2.default)(options)).then(function () {\n        // Widget is loaded\n        done();\n        onLoad();\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Mention, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var changed = function changed(name) {\n        return !(0, _isEqual2.default)(_this2.props[name], nextProps[name]);\n      };\n\n      return changed('username') || changed('options');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(_AbstractWidget2.default, {\n        ready: this.ready\n      });\n    }\n  }]);\n\n  return Mention;\n}(_react2.default.Component);\n\nMention.propTypes = {\n  username: _propTypes2.default.string.isRequired,\n  options: _propTypes2.default.object,\n  onLoad: _propTypes2.default.func\n};\nMention.defaultProps = {\n  options: {},\n  onLoad: function onLoad() {}\n};\nexports.default = Mention;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/Mention.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/components/Share.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/Share.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isEqual = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n\nvar _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\nvar _AbstractWidget = __webpack_require__(/*! ./AbstractWidget */ \"./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js\");\n\nvar _AbstractWidget2 = _interopRequireDefault(_AbstractWidget);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Share = function (_React$Component) {\n  _inherits(Share, _React$Component);\n\n  function Share() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Share);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Share.__proto__ || Object.getPrototypeOf(Share)).call.apply(_ref, [this].concat(args))), _this), _this.ready = function (tw, element, done) {\n      var _this$props = _this.props,\n          url = _this$props.url,\n          options = _this$props.options,\n          onLoad = _this$props.onLoad; // Options must be cloned since Twitter Widgets modifies it directly\n\n      tw.widgets.createShareButton(url, element, (0, _cloneDeep2.default)(options)).then(function () {\n        // Widget is loaded\n        done();\n        onLoad();\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Share, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var changed = function changed(name) {\n        return !(0, _isEqual2.default)(_this2.props[name], nextProps[name]);\n      };\n\n      return changed('url') || changed('options');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(_AbstractWidget2.default, {\n        ready: this.ready\n      });\n    }\n  }]);\n\n  return Share;\n}(_react2.default.Component);\n\nShare.propTypes = {\n  url: _propTypes2.default.string.isRequired,\n  options: _propTypes2.default.object,\n  onLoad: _propTypes2.default.func\n};\nShare.defaultProps = {\n  options: {},\n  onLoad: function onLoad() {}\n};\nexports.default = Share;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/Share.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/components/Timeline.js":
+/*!************************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/Timeline.js ***!
+  \************************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isEqual = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n\nvar _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\nvar _AbstractWidget = __webpack_require__(/*! ./AbstractWidget */ \"./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js\");\n\nvar _AbstractWidget2 = _interopRequireDefault(_AbstractWidget);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Timeline = function (_React$Component) {\n  _inherits(Timeline, _React$Component);\n\n  function Timeline() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Timeline);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Timeline.__proto__ || Object.getPrototypeOf(Timeline)).call.apply(_ref, [this].concat(args))), _this), _this.ready = function (tw, element, done) {\n      var _this$props = _this.props,\n          dataSource = _this$props.dataSource,\n          options = _this$props.options,\n          onLoad = _this$props.onLoad; // Options and dataSource must be cloned since Twitter Widgets modifies it directly\n\n      tw.widgets.createTimeline((0, _cloneDeep2.default)(dataSource), element, (0, _cloneDeep2.default)(options)).then(function () {\n        // Widget is loaded\n        done();\n        onLoad();\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Timeline, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var changed = function changed(name) {\n        return !(0, _isEqual2.default)(_this2.props[name], nextProps[name]);\n      };\n\n      return changed('dataSource') || changed('options');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(_AbstractWidget2.default, {\n        ready: this.ready\n      });\n    }\n  }]);\n\n  return Timeline;\n}(_react2.default.Component);\n\nTimeline.propTypes = {\n  dataSource: _propTypes2.default.object.isRequired,\n  options: _propTypes2.default.object,\n  onLoad: _propTypes2.default.func\n};\nTimeline.defaultProps = {\n  options: {},\n  onLoad: function onLoad() {}\n};\nexports.default = Timeline;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/Timeline.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/components/Tweet.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/components/Tweet.js ***!
+  \*********************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _react = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _isEqual = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n\nvar _isEqual2 = _interopRequireDefault(_isEqual);\n\nvar _cloneDeep = __webpack_require__(/*! lodash/cloneDeep */ \"./node_modules/lodash/cloneDeep.js\");\n\nvar _cloneDeep2 = _interopRequireDefault(_cloneDeep);\n\nvar _AbstractWidget = __webpack_require__(/*! ./AbstractWidget */ \"./node_modules/react-twitter-widgets/dist/components/AbstractWidget.js\");\n\nvar _AbstractWidget2 = _interopRequireDefault(_AbstractWidget);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Tweet = function (_React$Component) {\n  _inherits(Tweet, _React$Component);\n\n  function Tweet() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Tweet);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Tweet.__proto__ || Object.getPrototypeOf(Tweet)).call.apply(_ref, [this].concat(args))), _this), _this.ready = function (tw, element, done) {\n      var _this$props = _this.props,\n          tweetId = _this$props.tweetId,\n          options = _this$props.options,\n          onLoad = _this$props.onLoad; // Options must be cloned since Twitter Widgets modifies it directly\n\n      tw.widgets.createTweet(tweetId, element, (0, _cloneDeep2.default)(options)).then(function () {\n        // Widget is loaded\n        done();\n        onLoad();\n      });\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  }\n\n  _createClass(Tweet, [{\n    key: 'shouldComponentUpdate',\n    value: function shouldComponentUpdate(nextProps) {\n      var _this2 = this;\n\n      var changed = function changed(name) {\n        return !(0, _isEqual2.default)(_this2.props[name], nextProps[name]);\n      };\n\n      return changed('tweetId') || changed('options');\n    }\n  }, {\n    key: 'render',\n    value: function render() {\n      return _react2.default.createElement(_AbstractWidget2.default, {\n        ready: this.ready\n      });\n    }\n  }]);\n\n  return Tweet;\n}(_react2.default.Component);\n\nTweet.propTypes = {\n  tweetId: _propTypes2.default.string.isRequired,\n  options: _propTypes2.default.object,\n  onLoad: _propTypes2.default.func\n};\nTweet.defaultProps = {\n  options: {},\n  onLoad: function onLoad() {}\n};\nexports.default = Tweet;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/components/Tweet.js?");
+
+/***/ }),
+
+/***/ "./node_modules/react-twitter-widgets/dist/index.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/react-twitter-widgets/dist/index.js ***!
+  \**********************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.Tweet = exports.Timeline = exports.Share = exports.Mention = exports.Hashtag = exports.Follow = undefined;\n\nvar _exenv = __webpack_require__(/*! exenv */ \"./node_modules/exenv/index.js\");\n\nvar _Follow2 = __webpack_require__(/*! ./components/Follow */ \"./node_modules/react-twitter-widgets/dist/components/Follow.js\");\n\nvar _Follow3 = _interopRequireDefault(_Follow2);\n\nvar _Hashtag2 = __webpack_require__(/*! ./components/Hashtag */ \"./node_modules/react-twitter-widgets/dist/components/Hashtag.js\");\n\nvar _Hashtag3 = _interopRequireDefault(_Hashtag2);\n\nvar _Mention2 = __webpack_require__(/*! ./components/Mention */ \"./node_modules/react-twitter-widgets/dist/components/Mention.js\");\n\nvar _Mention3 = _interopRequireDefault(_Mention2);\n\nvar _Share2 = __webpack_require__(/*! ./components/Share */ \"./node_modules/react-twitter-widgets/dist/components/Share.js\");\n\nvar _Share3 = _interopRequireDefault(_Share2);\n\nvar _Timeline2 = __webpack_require__(/*! ./components/Timeline */ \"./node_modules/react-twitter-widgets/dist/components/Timeline.js\");\n\nvar _Timeline3 = _interopRequireDefault(_Timeline2);\n\nvar _Tweet2 = __webpack_require__(/*! ./components/Tweet */ \"./node_modules/react-twitter-widgets/dist/components/Tweet.js\");\n\nvar _Tweet3 = _interopRequireDefault(_Tweet2);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nif (_exenv.canUseDOM) {\n  var $script = __webpack_require__(/*! scriptjs */ \"./node_modules/scriptjs/dist/script.js\"); // eslint-disable-line global-require\n\n\n  $script('https://platform.twitter.com/widgets.js', 'twitter-widgets');\n}\n\nexports.Follow = _Follow3.default;\nexports.Hashtag = _Hashtag3.default;\nexports.Mention = _Mention3.default;\nexports.Share = _Share3.default;\nexports.Timeline = _Timeline3.default;\nexports.Tweet = _Tweet3.default;\n\n//# sourceURL=webpack:///./node_modules/react-twitter-widgets/dist/index.js?");
+
+/***/ }),
+
 /***/ "./node_modules/react/cjs/react.production.min.js":
 /*!********************************************************!*\
   !*** ./node_modules/react/cjs/react.production.min.js ***!
@@ -14210,7 +14344,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x38C, 0x85E, 0x9B2, 0x9D7, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB9C, 0xBD0, 0xBD7, 0xCDE, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1940, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xFB3E, 0xFEFF, 0x101A0, 0x1056F, 0x10808, 0x1083C, 0x1093F, 0x110CD, 0x11288, 0x11350, 0x11357, 0x1145B, 0x118FF, 0x11D3A, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0xE0001);\n\nset.addRange(0x0, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x600, 0x61C).addRange(0x61E, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x82D).addRange(0x830, 0x83E).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x8A0, 0x8B4).addRange(0x8B6, 0x8BD).addRange(0x8D3, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8);\nset.addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB56, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3D, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3);\nset.addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD00, 0xD03).addRange(0xD05, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE3A).addRange(0xE3F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE);\nset.addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x170C).addRange(0x170E, 0x1714).addRange(0x1720, 0x1736).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180E).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A1B).addRange(0x1A1E, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1AB0, 0x1ABE).addRange(0x1B00, 0x1B4B).addRange(0x1B50, 0x1B7C).addRange(0x1B80, 0x1BF3).addRange(0x1BFC, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CD0, 0x1CFA).addRange(0x1D00, 0x1DF9);\nset.addRange(0x1DFB, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x2064).addRange(0x2066, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20BF).addRange(0x20D0, 0x20F0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2C2E).addRange(0x2C30, 0x2C5E).addRange(0x2C60, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2E4F).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x303F).addRange(0x3041, 0x3096).addRange(0x3099, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31BA).addRange(0x31C0, 0x31E3);\nset.addRange(0x31F0, 0x321E).addRange(0x3220, 0x32FE).addRange(0x3300, 0x4DB5).addRange(0x4DC0, 0x9FEF).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA6F7).addRange(0xA700, 0xA7BF).addRange(0xA7C2, 0xA7C6).addRange(0xA7F7, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9).addRange(0xA8E0, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAAC2).addRange(0xAADB, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB67).addRange(0xAB70, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xD800, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC1).addRange(0xFBD3, 0xFD3F).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFD).addRange(0xFE00, 0xFE19).addRange(0xFE20, 0xFE52);\nset.addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FD).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E0, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B);\nset.addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F59).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x1107F, 0x110C1).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x11146).addRange(0x11150, 0x11176).addRange(0x11180, 0x111CD).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1123E).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310);\nset.addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x11459).addRange(0x1145D, 0x1145F).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x1173F).addRange(0x11800, 0x1183B).addRange(0x118A0, 0x118F2).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4).addRange(0x11A00, 0x11A47).addRange(0x11A50, 0x11AA2).addRange(0x11AC0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9);\nset.addRange(0x11EE0, 0x11EF8).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x13000, 0x1342E).addRange(0x13430, 0x13438).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5).addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AF2).addRange(0x1B000, 0x1B11E).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D1E8).addRange(0x1D200, 0x1D245).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505);\nset.addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF);\nset.addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F10C).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95).addRange(0x20000, 0x2A6D6).addRange(0x2A700, 0x2B734).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Assigned.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x38C, 0x85E, 0x9B2, 0x9D7, 0xA3C, 0xA51, 0xA5E, 0xAD0, 0xB9C, 0xBD0, 0xBD7, 0xCDE, 0xDBD, 0xDCA, 0xDD6, 0xE84, 0xEA5, 0xEC6, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x1940, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xFB3E, 0xFEFF, 0x101A0, 0x1056F, 0x10808, 0x1083C, 0x1093F, 0x110CD, 0x11288, 0x11350, 0x11357, 0x1145B, 0x118FF, 0x11D3A, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0xE0001);\n\nset.addRange(0x0, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x591, 0x5C7).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x600, 0x61C).addRange(0x61E, 0x70D).addRange(0x70F, 0x74A).addRange(0x74D, 0x7B1).addRange(0x7C0, 0x7FA).addRange(0x7FD, 0x82D).addRange(0x830, 0x83E).addRange(0x840, 0x85B).addRange(0x860, 0x86A).addRange(0x8A0, 0x8B4).addRange(0x8B6, 0x8BD).addRange(0x8D3, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BC, 0x9C4).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CE).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E3).addRange(0x9E6, 0x9FE).addRange(0xA01, 0xA03).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28).addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA42).addRange(0xA47, 0xA48).addRange(0xA4B, 0xA4D).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA76).addRange(0xA81, 0xA83).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8);\nset.addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABC, 0xAC5).addRange(0xAC7, 0xAC9).addRange(0xACB, 0xACD).addRange(0xAE0, 0xAE3).addRange(0xAE6, 0xAF1).addRange(0xAF9, 0xAFF).addRange(0xB01, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB3C, 0xB44).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4D).addRange(0xB56, 0xB57).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB63).addRange(0xB66, 0xB77).addRange(0xB82, 0xB83).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBBE, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCD).addRange(0xBE6, 0xBFA).addRange(0xC00, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC3D, 0xC44).addRange(0xC46, 0xC48).addRange(0xC4A, 0xC4D).addRange(0xC55, 0xC56).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC63).addRange(0xC66, 0xC6F).addRange(0xC77, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3);\nset.addRange(0xCB5, 0xCB9).addRange(0xCBC, 0xCC4).addRange(0xCC6, 0xCC8).addRange(0xCCA, 0xCCD).addRange(0xCD5, 0xCD6).addRange(0xCE0, 0xCE3).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD00, 0xD03).addRange(0xD05, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD44).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4F).addRange(0xD54, 0xD63).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDCF, 0xDD4).addRange(0xDD8, 0xDDF).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE3A).addRange(0xE3F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEBD).addRange(0xEC0, 0xEC4).addRange(0xEC8, 0xECD).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF71, 0xF97).addRange(0xF99, 0xFBC).addRange(0xFBE, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE);\nset.addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x135D, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x170C).addRange(0x170E, 0x1714).addRange(0x1720, 0x1736).addRange(0x1740, 0x1753).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1772, 0x1773).addRange(0x1780, 0x17DD).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180E).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x18AA).addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1920, 0x192B).addRange(0x1930, 0x193B).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A1B).addRange(0x1A1E, 0x1A5E).addRange(0x1A60, 0x1A7C).addRange(0x1A7F, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1AB0, 0x1ABE).addRange(0x1B00, 0x1B4B).addRange(0x1B50, 0x1B7C).addRange(0x1B80, 0x1BF3).addRange(0x1BFC, 0x1C37).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CD0, 0x1CFA).addRange(0x1D00, 0x1DF9);\nset.addRange(0x1DFB, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x2064).addRange(0x2066, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20BF).addRange(0x20D0, 0x20F0).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2C2E).addRange(0x2C30, 0x2C5E).addRange(0x2C60, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D7F, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2DE0, 0x2E4F).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x303F).addRange(0x3041, 0x3096).addRange(0x3099, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31BA).addRange(0x31C0, 0x31E3);\nset.addRange(0x31F0, 0x321E).addRange(0x3220, 0x4DB5).addRange(0x4DC0, 0x9FEF).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA6F7).addRange(0xA700, 0xA7BF).addRange(0xA7C2, 0xA7C6).addRange(0xA7F7, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C5).addRange(0xA8CE, 0xA8D9).addRange(0xA8E0, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA980, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9FE).addRange(0xAA00, 0xAA36).addRange(0xAA40, 0xAA4D).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAAC2).addRange(0xAADB, 0xAAF6).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB67).addRange(0xAB70, 0xABED).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xD800, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1D, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC1).addRange(0xFBD3, 0xFD3F).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFD).addRange(0xFE00, 0xFE19).addRange(0xFE20, 0xFE52).addRange(0xFE54, 0xFE66);\nset.addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FD).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E0, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x1037A).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939);\nset.addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A03).addRange(0x10A05, 0x10A06).addRange(0x10A0C, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A38, 0x10A3A).addRange(0x10A3F, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE6).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D27).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F59).addRange(0x10FE0, 0x10FF6).addRange(0x11000, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x1107F, 0x110C1).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9).addRange(0x11100, 0x11134).addRange(0x11136, 0x11146).addRange(0x11150, 0x11176).addRange(0x11180, 0x111CD).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1123E).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112EA).addRange(0x112F0, 0x112F9).addRange(0x11300, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328);\nset.addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x1133B, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11366, 0x1136C).addRange(0x11370, 0x11374).addRange(0x11400, 0x11459).addRange(0x1145D, 0x1145F).addRange(0x11480, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115B5).addRange(0x115B8, 0x115DD).addRange(0x11600, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116B8).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A).addRange(0x1171D, 0x1172B).addRange(0x11730, 0x1173F).addRange(0x11800, 0x1183B).addRange(0x118A0, 0x118F2).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D7).addRange(0x119DA, 0x119E4).addRange(0x11A00, 0x11A47).addRange(0x11A50, 0x11AA2).addRange(0x11AC0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C36).addRange(0x11C38, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11C92, 0x11CA7).addRange(0x11CA9, 0x11CB6).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D36).addRange(0x11D3C, 0x11D3D).addRange(0x11D3F, 0x11D47).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D90, 0x11D91).addRange(0x11D93, 0x11D98).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF8);\nset.addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x13000, 0x1342E).addRange(0x13430, 0x13438).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F).addRange(0x16AD0, 0x16AED).addRange(0x16AF0, 0x16AF5).addRange(0x16B00, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A).addRange(0x16F4F, 0x16F87).addRange(0x16F8F, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AF2).addRange(0x1B000, 0x1B11E).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1BC9C, 0x1BCA3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D1E8).addRange(0x1D200, 0x1D245).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A);\nset.addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1DA8B).addRange(0x1DA9B, 0x1DA9F).addRange(0x1DAA1, 0x1DAAF).addRange(0x1E000, 0x1E006).addRange(0x1E008, 0x1E018).addRange(0x1E01B, 0x1E021).addRange(0x1E023, 0x1E024).addRange(0x1E026, 0x1E02A).addRange(0x1E100, 0x1E12C).addRange(0x1E130, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E2C0, 0x1E2F9).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8D6).addRange(0x1E900, 0x1E94B).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF);\nset.addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F10C).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95).addRange(0x20000, 0x2A6D6).addRange(0x2A700, 0x2B734).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D).addRange(0xE0020, 0xE007F).addRange(0xE0100, 0xE01EF).addRange(0xF0000, 0xFFFFD).addRange(0x100000, 0x10FFFD);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Assigned.js?");
 
 /***/ }),
 
@@ -14298,7 +14432,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xA0, 0xA8, 0xAA, 0xAD, 0xAF, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x136, 0x139, 0x13B, 0x13D, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x34F, 0x370, 0x372, 0x374, 0x376, 0x37A, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x61C, 0x9DF, 0xA33, 0xA36, 0xA5E, 0xE33, 0xEB3, 0xF0C, 0xF43, 0xF4D, 0xF52, 0xF57, 0xF5C, 0xF69, 0xF73, 0xF81, 0xF93, 0xF9D, 0xFA2, 0xFA7, 0xFAC, 0xFB9, 0x10C7, 0x10CD, 0x10FC, 0x1D78, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F71, 0x1F73, 0x1F75, 0x1F77, 0x1F79, 0x1F7B, 0x1F7D, 0x1FD3, 0x1FE3, 0x2011, 0x2017, 0x203C, 0x203E, 0x2057, 0x20A8, 0x2124, 0x2126, 0x2128, 0x2183, 0x2189, 0x2A0C, 0x2ADC, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0x2D6F, 0x2E9F, 0x2EF3, 0x3000, 0x3036, 0x309F, 0x30FF, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA770, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C2, 0xFA10, 0xFA12, 0xFA20, 0xFA22, 0xFB1D, 0xFB3E, 0xFE74, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F190);\n\nset.addRange(0x41, 0x5A).addRange(0xB2, 0xB5).addRange(0xB8, 0xBA).addRange(0xBC, 0xBE).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x132, 0x134).addRange(0x13F, 0x141).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1CD).addRange(0x1F1, 0x1F4).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x2B0, 0x2B8).addRange(0x2D8, 0x2DD).addRange(0x2E0, 0x2E4).addRange(0x340, 0x341).addRange(0x343, 0x345).addRange(0x37E, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D6).addRange(0x3F0, 0x3F2).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x675, 0x678).addRange(0x958, 0x95F).addRange(0x9DC, 0x9DD).addRange(0xA59, 0xA5B).addRange(0xB5C, 0xB5D).addRange(0xEDC, 0xEDD);\nset.addRange(0xF75, 0xF79).addRange(0x10A0, 0x10C5).addRange(0x115F, 0x1160).addRange(0x13F8, 0x13FD).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180E).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D2C, 0x1D2E).addRange(0x1D30, 0x1D3A).addRange(0x1D3C, 0x1D4D).addRange(0x1D4F, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4).addRange(0x1FB7, 0x1FC4).addRange(0x1FC7, 0x1FCF).addRange(0x1FD8, 0x1FDB).addRange(0x1FDD, 0x1FDF).addRange(0x1FE8, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFE).addRange(0x2000, 0x200F).addRange(0x2024, 0x2026).addRange(0x202A, 0x202F).addRange(0x2033, 0x2034).addRange(0x2036, 0x2037).addRange(0x2047, 0x2049).addRange(0x205F, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x2100, 0x2103).addRange(0x2105, 0x2107).addRange(0x2109, 0x2113).addRange(0x2115, 0x2116).addRange(0x2119, 0x211D).addRange(0x2120, 0x2122).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213B, 0x2140).addRange(0x2145, 0x2149).addRange(0x2150, 0x217F).addRange(0x222C, 0x222D);\nset.addRange(0x222F, 0x2230).addRange(0x2329, 0x232A).addRange(0x2460, 0x24EA).addRange(0x2A74, 0x2A76).addRange(0x2C00, 0x2C2E).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7C, 0x2C80).addRange(0x2F00, 0x2FD5).addRange(0x3038, 0x303A).addRange(0x309B, 0x309C).addRange(0x3131, 0x318E).addRange(0x3192, 0x319F).addRange(0x3200, 0x321E).addRange(0x3220, 0x3247).addRange(0x3250, 0x327E).addRange(0x3280, 0x32FE).addRange(0x3300, 0x33FF).addRange(0xA69C, 0xA69D).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C6).addRange(0xA7F8, 0xA7F9).addRange(0xAB5C, 0xAB5F).addRange(0xAB70, 0xABBF).addRange(0xF900, 0xFA0D).addRange(0xFA15, 0xFA1E).addRange(0xFA25, 0xFA26).addRange(0xFA2A, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFC).addRange(0xFE00, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE72).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7);\nset.addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF0, 0xFFF8).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D15E, 0x1D164).addRange(0x1D173, 0x1D17A).addRange(0x1D1BB, 0x1D1C0).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E900, 0x1E921).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB);\nset.addRange(0x1F100, 0x1F10A).addRange(0x1F110, 0x1F12E).addRange(0x1F130, 0x1F14F).addRange(0x1F16A, 0x1F16C).addRange(0x1F200, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x2F800, 0x2FA1D).addRange(0xE0000, 0xE0FFF);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_NFKC_Casefolded.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xA0, 0xA8, 0xAA, 0xAD, 0xAF, 0x100, 0x102, 0x104, 0x106, 0x108, 0x10A, 0x10C, 0x10E, 0x110, 0x112, 0x114, 0x116, 0x118, 0x11A, 0x11C, 0x11E, 0x120, 0x122, 0x124, 0x126, 0x128, 0x12A, 0x12C, 0x12E, 0x130, 0x136, 0x139, 0x13B, 0x13D, 0x143, 0x145, 0x147, 0x14C, 0x14E, 0x150, 0x152, 0x154, 0x156, 0x158, 0x15A, 0x15C, 0x15E, 0x160, 0x162, 0x164, 0x166, 0x168, 0x16A, 0x16C, 0x16E, 0x170, 0x172, 0x174, 0x176, 0x17B, 0x17D, 0x17F, 0x184, 0x1A2, 0x1A4, 0x1A9, 0x1AC, 0x1B5, 0x1BC, 0x1CF, 0x1D1, 0x1D3, 0x1D5, 0x1D7, 0x1D9, 0x1DB, 0x1DE, 0x1E0, 0x1E2, 0x1E4, 0x1E6, 0x1E8, 0x1EA, 0x1EC, 0x1EE, 0x1FA, 0x1FC, 0x1FE, 0x200, 0x202, 0x204, 0x206, 0x208, 0x20A, 0x20C, 0x20E, 0x210, 0x212, 0x214, 0x216, 0x218, 0x21A, 0x21C, 0x21E, 0x220, 0x222, 0x224, 0x226, 0x228, 0x22A, 0x22C, 0x22E, 0x230, 0x232, 0x241, 0x248, 0x24A, 0x24C, 0x24E, 0x34F, 0x370, 0x372, 0x374, 0x376, 0x37A, 0x38C, 0x3C2, 0x3D8, 0x3DA, 0x3DC, 0x3DE, 0x3E0, 0x3E2, 0x3E4, 0x3E6, 0x3E8, 0x3EA, 0x3EC, 0x3EE, 0x3F7, 0x460, 0x462, 0x464, 0x466, 0x468, 0x46A, 0x46C, 0x46E, 0x470, 0x472, 0x474, 0x476, 0x478, 0x47A, 0x47C, 0x47E, 0x480, 0x48A, 0x48C, 0x48E, 0x490, 0x492, 0x494, 0x496, 0x498, 0x49A, 0x49C, 0x49E, 0x4A0, 0x4A2, 0x4A4, 0x4A6, 0x4A8, 0x4AA, 0x4AC, 0x4AE, 0x4B0, 0x4B2, 0x4B4, 0x4B6, 0x4B8, 0x4BA, 0x4BC, 0x4BE, 0x4C3, 0x4C5, 0x4C7, 0x4C9, 0x4CB, 0x4CD, 0x4D0, 0x4D2, 0x4D4, 0x4D6, 0x4D8, 0x4DA, 0x4DC, 0x4DE, 0x4E0, 0x4E2, 0x4E4, 0x4E6, 0x4E8, 0x4EA, 0x4EC, 0x4EE, 0x4F0, 0x4F2, 0x4F4, 0x4F6, 0x4F8, 0x4FA, 0x4FC, 0x4FE, 0x500, 0x502, 0x504, 0x506, 0x508, 0x50A, 0x50C, 0x50E, 0x510, 0x512, 0x514, 0x516, 0x518, 0x51A, 0x51C, 0x51E, 0x520, 0x522, 0x524, 0x526, 0x528, 0x52A, 0x52C, 0x52E, 0x587, 0x61C, 0x9DF, 0xA33, 0xA36, 0xA5E, 0xE33, 0xEB3, 0xF0C, 0xF43, 0xF4D, 0xF52, 0xF57, 0xF5C, 0xF69, 0xF73, 0xF81, 0xF93, 0xF9D, 0xFA2, 0xFA7, 0xFAC, 0xFB9, 0x10C7, 0x10CD, 0x10FC, 0x1D78, 0x1E00, 0x1E02, 0x1E04, 0x1E06, 0x1E08, 0x1E0A, 0x1E0C, 0x1E0E, 0x1E10, 0x1E12, 0x1E14, 0x1E16, 0x1E18, 0x1E1A, 0x1E1C, 0x1E1E, 0x1E20, 0x1E22, 0x1E24, 0x1E26, 0x1E28, 0x1E2A, 0x1E2C, 0x1E2E, 0x1E30, 0x1E32, 0x1E34, 0x1E36, 0x1E38, 0x1E3A, 0x1E3C, 0x1E3E, 0x1E40, 0x1E42, 0x1E44, 0x1E46, 0x1E48, 0x1E4A, 0x1E4C, 0x1E4E, 0x1E50, 0x1E52, 0x1E54, 0x1E56, 0x1E58, 0x1E5A, 0x1E5C, 0x1E5E, 0x1E60, 0x1E62, 0x1E64, 0x1E66, 0x1E68, 0x1E6A, 0x1E6C, 0x1E6E, 0x1E70, 0x1E72, 0x1E74, 0x1E76, 0x1E78, 0x1E7A, 0x1E7C, 0x1E7E, 0x1E80, 0x1E82, 0x1E84, 0x1E86, 0x1E88, 0x1E8A, 0x1E8C, 0x1E8E, 0x1E90, 0x1E92, 0x1E94, 0x1E9E, 0x1EA0, 0x1EA2, 0x1EA4, 0x1EA6, 0x1EA8, 0x1EAA, 0x1EAC, 0x1EAE, 0x1EB0, 0x1EB2, 0x1EB4, 0x1EB6, 0x1EB8, 0x1EBA, 0x1EBC, 0x1EBE, 0x1EC0, 0x1EC2, 0x1EC4, 0x1EC6, 0x1EC8, 0x1ECA, 0x1ECC, 0x1ECE, 0x1ED0, 0x1ED2, 0x1ED4, 0x1ED6, 0x1ED8, 0x1EDA, 0x1EDC, 0x1EDE, 0x1EE0, 0x1EE2, 0x1EE4, 0x1EE6, 0x1EE8, 0x1EEA, 0x1EEC, 0x1EEE, 0x1EF0, 0x1EF2, 0x1EF4, 0x1EF6, 0x1EF8, 0x1EFA, 0x1EFC, 0x1EFE, 0x1F59, 0x1F5B, 0x1F5D, 0x1F5F, 0x1F71, 0x1F73, 0x1F75, 0x1F77, 0x1F79, 0x1F7B, 0x1F7D, 0x1FD3, 0x1FE3, 0x2011, 0x2017, 0x203C, 0x203E, 0x2057, 0x20A8, 0x2124, 0x2126, 0x2128, 0x2183, 0x2189, 0x2A0C, 0x2ADC, 0x2C60, 0x2C67, 0x2C69, 0x2C6B, 0x2C72, 0x2C75, 0x2C82, 0x2C84, 0x2C86, 0x2C88, 0x2C8A, 0x2C8C, 0x2C8E, 0x2C90, 0x2C92, 0x2C94, 0x2C96, 0x2C98, 0x2C9A, 0x2C9C, 0x2C9E, 0x2CA0, 0x2CA2, 0x2CA4, 0x2CA6, 0x2CA8, 0x2CAA, 0x2CAC, 0x2CAE, 0x2CB0, 0x2CB2, 0x2CB4, 0x2CB6, 0x2CB8, 0x2CBA, 0x2CBC, 0x2CBE, 0x2CC0, 0x2CC2, 0x2CC4, 0x2CC6, 0x2CC8, 0x2CCA, 0x2CCC, 0x2CCE, 0x2CD0, 0x2CD2, 0x2CD4, 0x2CD6, 0x2CD8, 0x2CDA, 0x2CDC, 0x2CDE, 0x2CE0, 0x2CE2, 0x2CEB, 0x2CED, 0x2CF2, 0x2D6F, 0x2E9F, 0x2EF3, 0x3000, 0x3036, 0x309F, 0x30FF, 0xA640, 0xA642, 0xA644, 0xA646, 0xA648, 0xA64A, 0xA64C, 0xA64E, 0xA650, 0xA652, 0xA654, 0xA656, 0xA658, 0xA65A, 0xA65C, 0xA65E, 0xA660, 0xA662, 0xA664, 0xA666, 0xA668, 0xA66A, 0xA66C, 0xA680, 0xA682, 0xA684, 0xA686, 0xA688, 0xA68A, 0xA68C, 0xA68E, 0xA690, 0xA692, 0xA694, 0xA696, 0xA698, 0xA69A, 0xA722, 0xA724, 0xA726, 0xA728, 0xA72A, 0xA72C, 0xA72E, 0xA732, 0xA734, 0xA736, 0xA738, 0xA73A, 0xA73C, 0xA73E, 0xA740, 0xA742, 0xA744, 0xA746, 0xA748, 0xA74A, 0xA74C, 0xA74E, 0xA750, 0xA752, 0xA754, 0xA756, 0xA758, 0xA75A, 0xA75C, 0xA75E, 0xA760, 0xA762, 0xA764, 0xA766, 0xA768, 0xA76A, 0xA76C, 0xA76E, 0xA770, 0xA779, 0xA77B, 0xA780, 0xA782, 0xA784, 0xA786, 0xA78B, 0xA78D, 0xA790, 0xA792, 0xA796, 0xA798, 0xA79A, 0xA79C, 0xA79E, 0xA7A0, 0xA7A2, 0xA7A4, 0xA7A6, 0xA7A8, 0xA7B6, 0xA7B8, 0xA7BA, 0xA7BC, 0xA7BE, 0xA7C2, 0xFA10, 0xFA12, 0xFA20, 0xFA22, 0xFB1D, 0xFB3E, 0xFE74, 0xFEFF, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E, 0x1F190);\n\nset.addRange(0x41, 0x5A).addRange(0xB2, 0xB5).addRange(0xB8, 0xBA).addRange(0xBC, 0xBE).addRange(0xC0, 0xD6).addRange(0xD8, 0xDF).addRange(0x132, 0x134).addRange(0x13F, 0x141).addRange(0x149, 0x14A).addRange(0x178, 0x179).addRange(0x181, 0x182).addRange(0x186, 0x187).addRange(0x189, 0x18B).addRange(0x18E, 0x191).addRange(0x193, 0x194).addRange(0x196, 0x198).addRange(0x19C, 0x19D).addRange(0x19F, 0x1A0).addRange(0x1A6, 0x1A7).addRange(0x1AE, 0x1AF).addRange(0x1B1, 0x1B3).addRange(0x1B7, 0x1B8).addRange(0x1C4, 0x1CD).addRange(0x1F1, 0x1F4).addRange(0x1F6, 0x1F8).addRange(0x23A, 0x23B).addRange(0x23D, 0x23E).addRange(0x243, 0x246).addRange(0x2B0, 0x2B8).addRange(0x2D8, 0x2DD).addRange(0x2E0, 0x2E4).addRange(0x340, 0x341).addRange(0x343, 0x345).addRange(0x37E, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x38F).addRange(0x391, 0x3A1).addRange(0x3A3, 0x3AB).addRange(0x3CF, 0x3D6).addRange(0x3F0, 0x3F2).addRange(0x3F4, 0x3F5).addRange(0x3F9, 0x3FA).addRange(0x3FD, 0x42F).addRange(0x4C0, 0x4C1).addRange(0x531, 0x556).addRange(0x675, 0x678).addRange(0x958, 0x95F).addRange(0x9DC, 0x9DD).addRange(0xA59, 0xA5B).addRange(0xB5C, 0xB5D).addRange(0xEDC, 0xEDD);\nset.addRange(0xF75, 0xF79).addRange(0x10A0, 0x10C5).addRange(0x115F, 0x1160).addRange(0x13F8, 0x13FD).addRange(0x17B4, 0x17B5).addRange(0x180B, 0x180E).addRange(0x1C80, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CBF).addRange(0x1D2C, 0x1D2E).addRange(0x1D30, 0x1D3A).addRange(0x1D3C, 0x1D4D).addRange(0x1D4F, 0x1D6A).addRange(0x1D9B, 0x1DBF).addRange(0x1E9A, 0x1E9B).addRange(0x1F08, 0x1F0F).addRange(0x1F18, 0x1F1D).addRange(0x1F28, 0x1F2F).addRange(0x1F38, 0x1F3F).addRange(0x1F48, 0x1F4D).addRange(0x1F68, 0x1F6F).addRange(0x1F80, 0x1FAF).addRange(0x1FB2, 0x1FB4).addRange(0x1FB7, 0x1FC4).addRange(0x1FC7, 0x1FCF).addRange(0x1FD8, 0x1FDB).addRange(0x1FDD, 0x1FDF).addRange(0x1FE8, 0x1FEF).addRange(0x1FF2, 0x1FF4).addRange(0x1FF7, 0x1FFE).addRange(0x2000, 0x200F).addRange(0x2024, 0x2026).addRange(0x202A, 0x202F).addRange(0x2033, 0x2034).addRange(0x2036, 0x2037).addRange(0x2047, 0x2049).addRange(0x205F, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x2100, 0x2103).addRange(0x2105, 0x2107).addRange(0x2109, 0x2113).addRange(0x2115, 0x2116).addRange(0x2119, 0x211D).addRange(0x2120, 0x2122).addRange(0x212A, 0x212D).addRange(0x212F, 0x2139).addRange(0x213B, 0x2140).addRange(0x2145, 0x2149).addRange(0x2150, 0x217F).addRange(0x222C, 0x222D);\nset.addRange(0x222F, 0x2230).addRange(0x2329, 0x232A).addRange(0x2460, 0x24EA).addRange(0x2A74, 0x2A76).addRange(0x2C00, 0x2C2E).addRange(0x2C62, 0x2C64).addRange(0x2C6D, 0x2C70).addRange(0x2C7C, 0x2C80).addRange(0x2F00, 0x2FD5).addRange(0x3038, 0x303A).addRange(0x309B, 0x309C).addRange(0x3131, 0x318E).addRange(0x3192, 0x319F).addRange(0x3200, 0x321E).addRange(0x3220, 0x3247).addRange(0x3250, 0x327E).addRange(0x3280, 0x33FF).addRange(0xA69C, 0xA69D).addRange(0xA77D, 0xA77E).addRange(0xA7AA, 0xA7AE).addRange(0xA7B0, 0xA7B4).addRange(0xA7C4, 0xA7C6).addRange(0xA7F8, 0xA7F9).addRange(0xAB5C, 0xAB5F).addRange(0xAB70, 0xABBF).addRange(0xF900, 0xFA0D).addRange(0xFA15, 0xFA1E).addRange(0xFA25, 0xFA26).addRange(0xFA2A, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBB1).addRange(0xFBD3, 0xFD3D).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFC).addRange(0xFE00, 0xFE19).addRange(0xFE30, 0xFE44).addRange(0xFE47, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE72).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF);\nset.addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF0, 0xFFF8).addRange(0x10400, 0x10427).addRange(0x104B0, 0x104D3).addRange(0x10C80, 0x10CB2).addRange(0x118A0, 0x118BF).addRange(0x16E40, 0x16E5F).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D15E, 0x1D164).addRange(0x1D173, 0x1D17A).addRange(0x1D1BB, 0x1D1C0).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1E900, 0x1E921).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1F100, 0x1F10A);\nset.addRange(0x1F110, 0x1F12E).addRange(0x1F130, 0x1F14F).addRange(0x1F16A, 0x1F16C).addRange(0x1F200, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x2F800, 0x2FA1D).addRange(0xE0000, 0xE0FFF);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Changes_When_NFKC_Casefolded.js?");
 
 /***/ }),
 
@@ -14452,7 +14586,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x38C, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6DE, 0x6E9, 0x710, 0x7B1, 0x81A, 0x824, 0x828, 0x85E, 0x93B, 0x9B2, 0x9BD, 0x9CE, 0xA03, 0xA5E, 0xA76, 0xA83, 0xAC9, 0xAD0, 0xAF9, 0xB3D, 0xB40, 0xB83, 0xB9C, 0xBBF, 0xBD0, 0xC3D, 0xCDE, 0xD3D, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF36, 0xF38, 0xF7F, 0xF85, 0x1031, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17B6, 0x18AA, 0x1940, 0x1A57, 0x1A61, 0x1B3B, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CD3, 0x1CE1, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA673, 0xAA4D, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x101A0, 0x1056F, 0x10808, 0x1083C, 0x1093F, 0x11000, 0x1112C, 0x111CD, 0x11235, 0x11288, 0x1133D, 0x1133F, 0x11350, 0x11445, 0x1145B, 0x1145D, 0x1145F, 0x114B9, 0x114BE, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x116B8, 0x11726, 0x11838, 0x1183B, 0x118FF, 0x11A00, 0x11A50, 0x11A97, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D46, 0x11D96, 0x11D98, 0x16AF5, 0x1BC9C, 0x1BC9F, 0x1D166, 0x1D245, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\n\nset.addRange(0x20, 0x7E).addRange(0xA0, 0xAC).addRange(0xAE, 0x2FF).addRange(0x370, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x482).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x606, 0x60F).addRange(0x61E, 0x64A).addRange(0x660, 0x66F).addRange(0x671, 0x6D5).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x70D).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7C0, 0x7EA).addRange(0x7F4, 0x7FA).addRange(0x7FE, 0x815).addRange(0x830, 0x83E).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x8A0, 0x8B4).addRange(0x8B6, 0x8BD).addRange(0x903, 0x939).addRange(0x93D, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x950).addRange(0x958, 0x961).addRange(0x964, 0x980).addRange(0x982, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BF, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9E6, 0x9FD).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28);\nset.addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA40).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA6F).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC0).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE1).addRange(0xAE6, 0xAF1).addRange(0xB02, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB66, 0xB77).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xBE6, 0xBFA).addRange(0xC01, 0xC03).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC41, 0xC44).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC66, 0xC6F);\nset.addRange(0xC77, 0xC80).addRange(0xC82, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCBE).addRange(0xCC0, 0xCC1).addRange(0xCC3, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCE0, 0xCE1).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD02, 0xD03).addRange(0xD05, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3F, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD4E, 0xD4F).addRange(0xD54, 0xD56).addRange(0xD58, 0xD61).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDD0, 0xDD1).addRange(0xDD8, 0xDDE).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE3F, 0xE46).addRange(0xE4F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF17).addRange(0xF1A, 0xF34).addRange(0xF3A, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C);\nset.addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x102C).addRange(0x103B, 0x103C).addRange(0x103F, 0x1057).addRange(0x105A, 0x105D).addRange(0x1061, 0x1070).addRange(0x1075, 0x1081).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x108E, 0x109C).addRange(0x109E, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1360, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x170C).addRange(0x170E, 0x1711).addRange(0x1720, 0x1731).addRange(0x1735, 0x1736).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x17D4, 0x17DC).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180A).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8);\nset.addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A16).addRange(0x1A19, 0x1A1A).addRange(0x1A1E, 0x1A55).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1B04, 0x1B33).addRange(0x1B3D, 0x1B41).addRange(0x1B43, 0x1B4B).addRange(0x1B50, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1B82, 0x1BA1).addRange(0x1BA6, 0x1BA7).addRange(0x1BAE, 0x1BE5).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1BFC, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4);\nset.addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x200A).addRange(0x2010, 0x2027).addRange(0x202F, 0x205F).addRange(0x2070, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20BF).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2C2E).addRange(0x2C30, 0x2C5E).addRange(0x2C60, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2E00, 0x2E4F).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3029).addRange(0x3030, 0x303F).addRange(0x3041, 0x3096).addRange(0x309B, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31BA).addRange(0x31C0, 0x31E3).addRange(0x31F0, 0x321E).addRange(0x3220, 0x32FE).addRange(0x3300, 0x4DB5).addRange(0x4DC0, 0x9FEF).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67E, 0xA69D);\nset.addRange(0xA6A0, 0xA6EF).addRange(0xA6F2, 0xA6F7).addRange(0xA700, 0xA7BF).addRange(0xA7C2, 0xA7C6).addRange(0xA7F7, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA824).addRange(0xA827, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C3).addRange(0xA8CE, 0xA8D9).addRange(0xA8F2, 0xA8FE).addRange(0xA900, 0xA925).addRange(0xA92E, 0xA946).addRange(0xA952, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA983, 0xA9B2).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9E4).addRange(0xA9E6, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA7B).addRange(0xAA7D, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAAEB).addRange(0xAAEE, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB67).addRange(0xAB70, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEC).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D);\nset.addRange(0xFA70, 0xFAD9).addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC1).addRange(0xFBD3, 0xFD3F).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFD).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E1, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3);\nset.addRange(0x104D8, 0x104FB).addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A00).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A40, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE4).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D23).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F45).addRange(0x10F51, 0x10F59).addRange(0x10FE0, 0x10FF6).addRange(0x11002, 0x11037).addRange(0x11047, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x11082, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x110D0, 0x110E8);\nset.addRange(0x110F0, 0x110F9).addRange(0x11103, 0x11126).addRange(0x11136, 0x11146).addRange(0x11150, 0x11172).addRange(0x11174, 0x11176).addRange(0x11182, 0x111B5).addRange(0x111BF, 0x111C8).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122E).addRange(0x11232, 0x11233).addRange(0x11238, 0x1123D).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112DE).addRange(0x112E0, 0x112E2).addRange(0x112F0, 0x112F9).addRange(0x11302, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11437).addRange(0x11440, 0x11441).addRange(0x11447, 0x11459).addRange(0x11480, 0x114AF).addRange(0x114B1, 0x114B2).addRange(0x114BB, 0x114BC).addRange(0x114C4, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115AE).addRange(0x115B0, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x115C1, 0x115DB).addRange(0x11600, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x11641, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116AA).addRange(0x116AE, 0x116AF).addRange(0x116C0, 0x116C9);\nset.addRange(0x11700, 0x1171A).addRange(0x11720, 0x11721).addRange(0x11730, 0x1173F).addRange(0x11800, 0x1182E).addRange(0x118A0, 0x118F2).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x119E1, 0x119E4).addRange(0x11A0B, 0x11A32).addRange(0x11A39, 0x11A3A).addRange(0x11A3F, 0x11A46).addRange(0x11A57, 0x11A58).addRange(0x11A5C, 0x11A89).addRange(0x11A9A, 0x11AA2).addRange(0x11AC0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2F).addRange(0x11C40, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D93, 0x11D94).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF2).addRange(0x11EF5, 0x11EF8).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B37, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A);\nset.addRange(0x16F00, 0x16F4A).addRange(0x16F50, 0x16F87).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AF2).addRange(0x1B000, 0x1B11E).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16D).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D200, 0x1D241).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA8B).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F);\nset.addRange(0x1E2C0, 0x1E2EB).addRange(0x1E2F0, 0x1E2F9).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8CF).addRange(0x1E900, 0x1E943).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F10C).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887);\nset.addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95).addRange(0x20000, 0x2A6D6).addRange(0x2A700, 0x2B734).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Base.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x38C, 0x5BE, 0x5C0, 0x5C3, 0x5C6, 0x61B, 0x6DE, 0x6E9, 0x710, 0x7B1, 0x81A, 0x824, 0x828, 0x85E, 0x93B, 0x9B2, 0x9BD, 0x9CE, 0xA03, 0xA5E, 0xA76, 0xA83, 0xAC9, 0xAD0, 0xAF9, 0xB3D, 0xB40, 0xB83, 0xB9C, 0xBBF, 0xBD0, 0xC3D, 0xCDE, 0xD3D, 0xDBD, 0xE84, 0xEA5, 0xEBD, 0xEC6, 0xF36, 0xF38, 0xF7F, 0xF85, 0x1031, 0x1038, 0x10C7, 0x10CD, 0x1258, 0x12C0, 0x17B6, 0x18AA, 0x1940, 0x1A57, 0x1A61, 0x1B3B, 0x1BAA, 0x1BE7, 0x1BEE, 0x1CD3, 0x1CE1, 0x1CFA, 0x1F59, 0x1F5B, 0x1F5D, 0x2D27, 0x2D2D, 0xA673, 0xAA4D, 0xAAB1, 0xAAC0, 0xAAC2, 0xFB1D, 0xFB3E, 0x101A0, 0x1056F, 0x10808, 0x1083C, 0x1093F, 0x11000, 0x1112C, 0x111CD, 0x11235, 0x11288, 0x1133D, 0x1133F, 0x11350, 0x11445, 0x1145B, 0x1145D, 0x1145F, 0x114B9, 0x114BE, 0x114C1, 0x115BE, 0x1163E, 0x116AC, 0x116B6, 0x116B8, 0x11726, 0x11838, 0x1183B, 0x118FF, 0x11A00, 0x11A50, 0x11A97, 0x11C3E, 0x11CA9, 0x11CB1, 0x11CB4, 0x11D46, 0x11D96, 0x11D98, 0x16AF5, 0x1BC9C, 0x1BC9F, 0x1D166, 0x1D245, 0x1D4A2, 0x1D4BB, 0x1D546, 0x1E2FF, 0x1E94B, 0x1EE24, 0x1EE27, 0x1EE39, 0x1EE3B, 0x1EE42, 0x1EE47, 0x1EE49, 0x1EE4B, 0x1EE54, 0x1EE57, 0x1EE59, 0x1EE5B, 0x1EE5D, 0x1EE5F, 0x1EE64, 0x1EE7E);\n\nset.addRange(0x20, 0x7E).addRange(0xA0, 0xAC).addRange(0xAE, 0x2FF).addRange(0x370, 0x377).addRange(0x37A, 0x37F).addRange(0x384, 0x38A).addRange(0x38E, 0x3A1).addRange(0x3A3, 0x482).addRange(0x48A, 0x52F).addRange(0x531, 0x556).addRange(0x559, 0x58A).addRange(0x58D, 0x58F).addRange(0x5D0, 0x5EA).addRange(0x5EF, 0x5F4).addRange(0x606, 0x60F).addRange(0x61E, 0x64A).addRange(0x660, 0x66F).addRange(0x671, 0x6D5).addRange(0x6E5, 0x6E6).addRange(0x6EE, 0x70D).addRange(0x712, 0x72F).addRange(0x74D, 0x7A5).addRange(0x7C0, 0x7EA).addRange(0x7F4, 0x7FA).addRange(0x7FE, 0x815).addRange(0x830, 0x83E).addRange(0x840, 0x858).addRange(0x860, 0x86A).addRange(0x8A0, 0x8B4).addRange(0x8B6, 0x8BD).addRange(0x903, 0x939).addRange(0x93D, 0x940).addRange(0x949, 0x94C).addRange(0x94E, 0x950).addRange(0x958, 0x961).addRange(0x964, 0x980).addRange(0x982, 0x983).addRange(0x985, 0x98C).addRange(0x98F, 0x990).addRange(0x993, 0x9A8).addRange(0x9AA, 0x9B0).addRange(0x9B6, 0x9B9).addRange(0x9BF, 0x9C0).addRange(0x9C7, 0x9C8).addRange(0x9CB, 0x9CC).addRange(0x9DC, 0x9DD).addRange(0x9DF, 0x9E1).addRange(0x9E6, 0x9FD).addRange(0xA05, 0xA0A).addRange(0xA0F, 0xA10).addRange(0xA13, 0xA28);\nset.addRange(0xA2A, 0xA30).addRange(0xA32, 0xA33).addRange(0xA35, 0xA36).addRange(0xA38, 0xA39).addRange(0xA3E, 0xA40).addRange(0xA59, 0xA5C).addRange(0xA66, 0xA6F).addRange(0xA72, 0xA74).addRange(0xA85, 0xA8D).addRange(0xA8F, 0xA91).addRange(0xA93, 0xAA8).addRange(0xAAA, 0xAB0).addRange(0xAB2, 0xAB3).addRange(0xAB5, 0xAB9).addRange(0xABD, 0xAC0).addRange(0xACB, 0xACC).addRange(0xAE0, 0xAE1).addRange(0xAE6, 0xAF1).addRange(0xB02, 0xB03).addRange(0xB05, 0xB0C).addRange(0xB0F, 0xB10).addRange(0xB13, 0xB28).addRange(0xB2A, 0xB30).addRange(0xB32, 0xB33).addRange(0xB35, 0xB39).addRange(0xB47, 0xB48).addRange(0xB4B, 0xB4C).addRange(0xB5C, 0xB5D).addRange(0xB5F, 0xB61).addRange(0xB66, 0xB77).addRange(0xB85, 0xB8A).addRange(0xB8E, 0xB90).addRange(0xB92, 0xB95).addRange(0xB99, 0xB9A).addRange(0xB9E, 0xB9F).addRange(0xBA3, 0xBA4).addRange(0xBA8, 0xBAA).addRange(0xBAE, 0xBB9).addRange(0xBC1, 0xBC2).addRange(0xBC6, 0xBC8).addRange(0xBCA, 0xBCC).addRange(0xBE6, 0xBFA).addRange(0xC01, 0xC03).addRange(0xC05, 0xC0C).addRange(0xC0E, 0xC10).addRange(0xC12, 0xC28).addRange(0xC2A, 0xC39).addRange(0xC41, 0xC44).addRange(0xC58, 0xC5A).addRange(0xC60, 0xC61).addRange(0xC66, 0xC6F);\nset.addRange(0xC77, 0xC80).addRange(0xC82, 0xC8C).addRange(0xC8E, 0xC90).addRange(0xC92, 0xCA8).addRange(0xCAA, 0xCB3).addRange(0xCB5, 0xCB9).addRange(0xCBD, 0xCBE).addRange(0xCC0, 0xCC1).addRange(0xCC3, 0xCC4).addRange(0xCC7, 0xCC8).addRange(0xCCA, 0xCCB).addRange(0xCE0, 0xCE1).addRange(0xCE6, 0xCEF).addRange(0xCF1, 0xCF2).addRange(0xD02, 0xD03).addRange(0xD05, 0xD0C).addRange(0xD0E, 0xD10).addRange(0xD12, 0xD3A).addRange(0xD3F, 0xD40).addRange(0xD46, 0xD48).addRange(0xD4A, 0xD4C).addRange(0xD4E, 0xD4F).addRange(0xD54, 0xD56).addRange(0xD58, 0xD61).addRange(0xD66, 0xD7F).addRange(0xD82, 0xD83).addRange(0xD85, 0xD96).addRange(0xD9A, 0xDB1).addRange(0xDB3, 0xDBB).addRange(0xDC0, 0xDC6).addRange(0xDD0, 0xDD1).addRange(0xDD8, 0xDDE).addRange(0xDE6, 0xDEF).addRange(0xDF2, 0xDF4).addRange(0xE01, 0xE30).addRange(0xE32, 0xE33).addRange(0xE3F, 0xE46).addRange(0xE4F, 0xE5B).addRange(0xE81, 0xE82).addRange(0xE86, 0xE8A).addRange(0xE8C, 0xEA3).addRange(0xEA7, 0xEB0).addRange(0xEB2, 0xEB3).addRange(0xEC0, 0xEC4).addRange(0xED0, 0xED9).addRange(0xEDC, 0xEDF).addRange(0xF00, 0xF17).addRange(0xF1A, 0xF34).addRange(0xF3A, 0xF47).addRange(0xF49, 0xF6C).addRange(0xF88, 0xF8C);\nset.addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFDA).addRange(0x1000, 0x102C).addRange(0x103B, 0x103C).addRange(0x103F, 0x1057).addRange(0x105A, 0x105D).addRange(0x1061, 0x1070).addRange(0x1075, 0x1081).addRange(0x1083, 0x1084).addRange(0x1087, 0x108C).addRange(0x108E, 0x109C).addRange(0x109E, 0x10C5).addRange(0x10D0, 0x1248).addRange(0x124A, 0x124D).addRange(0x1250, 0x1256).addRange(0x125A, 0x125D).addRange(0x1260, 0x1288).addRange(0x128A, 0x128D).addRange(0x1290, 0x12B0).addRange(0x12B2, 0x12B5).addRange(0x12B8, 0x12BE).addRange(0x12C2, 0x12C5).addRange(0x12C8, 0x12D6).addRange(0x12D8, 0x1310).addRange(0x1312, 0x1315).addRange(0x1318, 0x135A).addRange(0x1360, 0x137C).addRange(0x1380, 0x1399).addRange(0x13A0, 0x13F5).addRange(0x13F8, 0x13FD).addRange(0x1400, 0x169C).addRange(0x16A0, 0x16F8).addRange(0x1700, 0x170C).addRange(0x170E, 0x1711).addRange(0x1720, 0x1731).addRange(0x1735, 0x1736).addRange(0x1740, 0x1751).addRange(0x1760, 0x176C).addRange(0x176E, 0x1770).addRange(0x1780, 0x17B3).addRange(0x17BE, 0x17C5).addRange(0x17C7, 0x17C8).addRange(0x17D4, 0x17DC).addRange(0x17E0, 0x17E9).addRange(0x17F0, 0x17F9).addRange(0x1800, 0x180A).addRange(0x1810, 0x1819).addRange(0x1820, 0x1878).addRange(0x1880, 0x1884).addRange(0x1887, 0x18A8);\nset.addRange(0x18B0, 0x18F5).addRange(0x1900, 0x191E).addRange(0x1923, 0x1926).addRange(0x1929, 0x192B).addRange(0x1930, 0x1931).addRange(0x1933, 0x1938).addRange(0x1944, 0x196D).addRange(0x1970, 0x1974).addRange(0x1980, 0x19AB).addRange(0x19B0, 0x19C9).addRange(0x19D0, 0x19DA).addRange(0x19DE, 0x1A16).addRange(0x1A19, 0x1A1A).addRange(0x1A1E, 0x1A55).addRange(0x1A63, 0x1A64).addRange(0x1A6D, 0x1A72).addRange(0x1A80, 0x1A89).addRange(0x1A90, 0x1A99).addRange(0x1AA0, 0x1AAD).addRange(0x1B04, 0x1B33).addRange(0x1B3D, 0x1B41).addRange(0x1B43, 0x1B4B).addRange(0x1B50, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1B82, 0x1BA1).addRange(0x1BA6, 0x1BA7).addRange(0x1BAE, 0x1BE5).addRange(0x1BEA, 0x1BEC).addRange(0x1BF2, 0x1BF3).addRange(0x1BFC, 0x1C2B).addRange(0x1C34, 0x1C35).addRange(0x1C3B, 0x1C49).addRange(0x1C4D, 0x1C88).addRange(0x1C90, 0x1CBA).addRange(0x1CBD, 0x1CC7).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x1D00, 0x1DBF).addRange(0x1E00, 0x1F15).addRange(0x1F18, 0x1F1D).addRange(0x1F20, 0x1F45).addRange(0x1F48, 0x1F4D).addRange(0x1F50, 0x1F57).addRange(0x1F5F, 0x1F7D).addRange(0x1F80, 0x1FB4).addRange(0x1FB6, 0x1FC4).addRange(0x1FC6, 0x1FD3).addRange(0x1FD6, 0x1FDB).addRange(0x1FDD, 0x1FEF).addRange(0x1FF2, 0x1FF4);\nset.addRange(0x1FF6, 0x1FFE).addRange(0x2000, 0x200A).addRange(0x2010, 0x2027).addRange(0x202F, 0x205F).addRange(0x2070, 0x2071).addRange(0x2074, 0x208E).addRange(0x2090, 0x209C).addRange(0x20A0, 0x20BF).addRange(0x2100, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2C2E).addRange(0x2C30, 0x2C5E).addRange(0x2C60, 0x2CEE).addRange(0x2CF2, 0x2CF3).addRange(0x2CF9, 0x2D25).addRange(0x2D30, 0x2D67).addRange(0x2D6F, 0x2D70).addRange(0x2D80, 0x2D96).addRange(0x2DA0, 0x2DA6).addRange(0x2DA8, 0x2DAE).addRange(0x2DB0, 0x2DB6).addRange(0x2DB8, 0x2DBE).addRange(0x2DC0, 0x2DC6).addRange(0x2DC8, 0x2DCE).addRange(0x2DD0, 0x2DD6).addRange(0x2DD8, 0x2DDE).addRange(0x2E00, 0x2E4F).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3029).addRange(0x3030, 0x303F).addRange(0x3041, 0x3096).addRange(0x309B, 0x30FF).addRange(0x3105, 0x312F).addRange(0x3131, 0x318E).addRange(0x3190, 0x31BA).addRange(0x31C0, 0x31E3).addRange(0x31F0, 0x321E).addRange(0x3220, 0x4DB5).addRange(0x4DC0, 0x9FEF).addRange(0xA000, 0xA48C).addRange(0xA490, 0xA4C6).addRange(0xA4D0, 0xA62B).addRange(0xA640, 0xA66E).addRange(0xA67E, 0xA69D).addRange(0xA6A0, 0xA6EF);\nset.addRange(0xA6F2, 0xA6F7).addRange(0xA700, 0xA7BF).addRange(0xA7C2, 0xA7C6).addRange(0xA7F7, 0xA801).addRange(0xA803, 0xA805).addRange(0xA807, 0xA80A).addRange(0xA80C, 0xA824).addRange(0xA827, 0xA82B).addRange(0xA830, 0xA839).addRange(0xA840, 0xA877).addRange(0xA880, 0xA8C3).addRange(0xA8CE, 0xA8D9).addRange(0xA8F2, 0xA8FE).addRange(0xA900, 0xA925).addRange(0xA92E, 0xA946).addRange(0xA952, 0xA953).addRange(0xA95F, 0xA97C).addRange(0xA983, 0xA9B2).addRange(0xA9B4, 0xA9B5).addRange(0xA9BA, 0xA9BB).addRange(0xA9BE, 0xA9CD).addRange(0xA9CF, 0xA9D9).addRange(0xA9DE, 0xA9E4).addRange(0xA9E6, 0xA9FE).addRange(0xAA00, 0xAA28).addRange(0xAA2F, 0xAA30).addRange(0xAA33, 0xAA34).addRange(0xAA40, 0xAA42).addRange(0xAA44, 0xAA4B).addRange(0xAA50, 0xAA59).addRange(0xAA5C, 0xAA7B).addRange(0xAA7D, 0xAAAF).addRange(0xAAB5, 0xAAB6).addRange(0xAAB9, 0xAABD).addRange(0xAADB, 0xAAEB).addRange(0xAAEE, 0xAAF5).addRange(0xAB01, 0xAB06).addRange(0xAB09, 0xAB0E).addRange(0xAB11, 0xAB16).addRange(0xAB20, 0xAB26).addRange(0xAB28, 0xAB2E).addRange(0xAB30, 0xAB67).addRange(0xAB70, 0xABE4).addRange(0xABE6, 0xABE7).addRange(0xABE9, 0xABEC).addRange(0xABF0, 0xABF9).addRange(0xAC00, 0xD7A3).addRange(0xD7B0, 0xD7C6).addRange(0xD7CB, 0xD7FB).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9);\nset.addRange(0xFB00, 0xFB06).addRange(0xFB13, 0xFB17).addRange(0xFB1F, 0xFB36).addRange(0xFB38, 0xFB3C).addRange(0xFB40, 0xFB41).addRange(0xFB43, 0xFB44).addRange(0xFB46, 0xFBC1).addRange(0xFBD3, 0xFD3F).addRange(0xFD50, 0xFD8F).addRange(0xFD92, 0xFDC7).addRange(0xFDF0, 0xFDFD).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFE70, 0xFE74).addRange(0xFE76, 0xFEFC).addRange(0xFF01, 0xFF9D).addRange(0xFFA0, 0xFFBE).addRange(0xFFC2, 0xFFC7).addRange(0xFFCA, 0xFFCF).addRange(0xFFD2, 0xFFD7).addRange(0xFFDA, 0xFFDC).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10000, 0x1000B).addRange(0x1000D, 0x10026).addRange(0x10028, 0x1003A).addRange(0x1003C, 0x1003D).addRange(0x1003F, 0x1004D).addRange(0x10050, 0x1005D).addRange(0x10080, 0x100FA).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x10280, 0x1029C).addRange(0x102A0, 0x102D0).addRange(0x102E1, 0x102FB).addRange(0x10300, 0x10323).addRange(0x1032D, 0x1034A).addRange(0x10350, 0x10375).addRange(0x10380, 0x1039D).addRange(0x1039F, 0x103C3).addRange(0x103C8, 0x103D5).addRange(0x10400, 0x1049D).addRange(0x104A0, 0x104A9).addRange(0x104B0, 0x104D3).addRange(0x104D8, 0x104FB);\nset.addRange(0x10500, 0x10527).addRange(0x10530, 0x10563).addRange(0x10600, 0x10736).addRange(0x10740, 0x10755).addRange(0x10760, 0x10767).addRange(0x10800, 0x10805).addRange(0x1080A, 0x10835).addRange(0x10837, 0x10838).addRange(0x1083F, 0x10855).addRange(0x10857, 0x1089E).addRange(0x108A7, 0x108AF).addRange(0x108E0, 0x108F2).addRange(0x108F4, 0x108F5).addRange(0x108FB, 0x1091B).addRange(0x1091F, 0x10939).addRange(0x10980, 0x109B7).addRange(0x109BC, 0x109CF).addRange(0x109D2, 0x10A00).addRange(0x10A10, 0x10A13).addRange(0x10A15, 0x10A17).addRange(0x10A19, 0x10A35).addRange(0x10A40, 0x10A48).addRange(0x10A50, 0x10A58).addRange(0x10A60, 0x10A9F).addRange(0x10AC0, 0x10AE4).addRange(0x10AEB, 0x10AF6).addRange(0x10B00, 0x10B35).addRange(0x10B39, 0x10B55).addRange(0x10B58, 0x10B72).addRange(0x10B78, 0x10B91).addRange(0x10B99, 0x10B9C).addRange(0x10BA9, 0x10BAF).addRange(0x10C00, 0x10C48).addRange(0x10C80, 0x10CB2).addRange(0x10CC0, 0x10CF2).addRange(0x10CFA, 0x10D23).addRange(0x10D30, 0x10D39).addRange(0x10E60, 0x10E7E).addRange(0x10F00, 0x10F27).addRange(0x10F30, 0x10F45).addRange(0x10F51, 0x10F59).addRange(0x10FE0, 0x10FF6).addRange(0x11002, 0x11037).addRange(0x11047, 0x1104D).addRange(0x11052, 0x1106F).addRange(0x11082, 0x110B2).addRange(0x110B7, 0x110B8).addRange(0x110BB, 0x110BC).addRange(0x110BE, 0x110C1).addRange(0x110D0, 0x110E8).addRange(0x110F0, 0x110F9);\nset.addRange(0x11103, 0x11126).addRange(0x11136, 0x11146).addRange(0x11150, 0x11172).addRange(0x11174, 0x11176).addRange(0x11182, 0x111B5).addRange(0x111BF, 0x111C8).addRange(0x111D0, 0x111DF).addRange(0x111E1, 0x111F4).addRange(0x11200, 0x11211).addRange(0x11213, 0x1122E).addRange(0x11232, 0x11233).addRange(0x11238, 0x1123D).addRange(0x11280, 0x11286).addRange(0x1128A, 0x1128D).addRange(0x1128F, 0x1129D).addRange(0x1129F, 0x112A9).addRange(0x112B0, 0x112DE).addRange(0x112E0, 0x112E2).addRange(0x112F0, 0x112F9).addRange(0x11302, 0x11303).addRange(0x11305, 0x1130C).addRange(0x1130F, 0x11310).addRange(0x11313, 0x11328).addRange(0x1132A, 0x11330).addRange(0x11332, 0x11333).addRange(0x11335, 0x11339).addRange(0x11341, 0x11344).addRange(0x11347, 0x11348).addRange(0x1134B, 0x1134D).addRange(0x1135D, 0x11363).addRange(0x11400, 0x11437).addRange(0x11440, 0x11441).addRange(0x11447, 0x11459).addRange(0x11480, 0x114AF).addRange(0x114B1, 0x114B2).addRange(0x114BB, 0x114BC).addRange(0x114C4, 0x114C7).addRange(0x114D0, 0x114D9).addRange(0x11580, 0x115AE).addRange(0x115B0, 0x115B1).addRange(0x115B8, 0x115BB).addRange(0x115C1, 0x115DB).addRange(0x11600, 0x11632).addRange(0x1163B, 0x1163C).addRange(0x11641, 0x11644).addRange(0x11650, 0x11659).addRange(0x11660, 0x1166C).addRange(0x11680, 0x116AA).addRange(0x116AE, 0x116AF).addRange(0x116C0, 0x116C9).addRange(0x11700, 0x1171A);\nset.addRange(0x11720, 0x11721).addRange(0x11730, 0x1173F).addRange(0x11800, 0x1182E).addRange(0x118A0, 0x118F2).addRange(0x119A0, 0x119A7).addRange(0x119AA, 0x119D3).addRange(0x119DC, 0x119DF).addRange(0x119E1, 0x119E4).addRange(0x11A0B, 0x11A32).addRange(0x11A39, 0x11A3A).addRange(0x11A3F, 0x11A46).addRange(0x11A57, 0x11A58).addRange(0x11A5C, 0x11A89).addRange(0x11A9A, 0x11AA2).addRange(0x11AC0, 0x11AF8).addRange(0x11C00, 0x11C08).addRange(0x11C0A, 0x11C2F).addRange(0x11C40, 0x11C45).addRange(0x11C50, 0x11C6C).addRange(0x11C70, 0x11C8F).addRange(0x11D00, 0x11D06).addRange(0x11D08, 0x11D09).addRange(0x11D0B, 0x11D30).addRange(0x11D50, 0x11D59).addRange(0x11D60, 0x11D65).addRange(0x11D67, 0x11D68).addRange(0x11D6A, 0x11D8E).addRange(0x11D93, 0x11D94).addRange(0x11DA0, 0x11DA9).addRange(0x11EE0, 0x11EF2).addRange(0x11EF5, 0x11EF8).addRange(0x11FC0, 0x11FF1).addRange(0x11FFF, 0x12399).addRange(0x12400, 0x1246E).addRange(0x12470, 0x12474).addRange(0x12480, 0x12543).addRange(0x13000, 0x1342E).addRange(0x14400, 0x14646).addRange(0x16800, 0x16A38).addRange(0x16A40, 0x16A5E).addRange(0x16A60, 0x16A69).addRange(0x16A6E, 0x16A6F).addRange(0x16AD0, 0x16AED).addRange(0x16B00, 0x16B2F).addRange(0x16B37, 0x16B45).addRange(0x16B50, 0x16B59).addRange(0x16B5B, 0x16B61).addRange(0x16B63, 0x16B77).addRange(0x16B7D, 0x16B8F).addRange(0x16E40, 0x16E9A).addRange(0x16F00, 0x16F4A);\nset.addRange(0x16F50, 0x16F87).addRange(0x16F93, 0x16F9F).addRange(0x16FE0, 0x16FE3).addRange(0x17000, 0x187F7).addRange(0x18800, 0x18AF2).addRange(0x1B000, 0x1B11E).addRange(0x1B150, 0x1B152).addRange(0x1B164, 0x1B167).addRange(0x1B170, 0x1B2FB).addRange(0x1BC00, 0x1BC6A).addRange(0x1BC70, 0x1BC7C).addRange(0x1BC80, 0x1BC88).addRange(0x1BC90, 0x1BC99).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16D).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D200, 0x1D241).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA8B).addRange(0x1E100, 0x1E12C).addRange(0x1E137, 0x1E13D).addRange(0x1E140, 0x1E149).addRange(0x1E14E, 0x1E14F).addRange(0x1E2C0, 0x1E2EB);\nset.addRange(0x1E2F0, 0x1E2F9).addRange(0x1E800, 0x1E8C4).addRange(0x1E8C7, 0x1E8CF).addRange(0x1E900, 0x1E943).addRange(0x1E950, 0x1E959).addRange(0x1E95E, 0x1E95F).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1EE00, 0x1EE03).addRange(0x1EE05, 0x1EE1F).addRange(0x1EE21, 0x1EE22).addRange(0x1EE29, 0x1EE32).addRange(0x1EE34, 0x1EE37).addRange(0x1EE4D, 0x1EE4F).addRange(0x1EE51, 0x1EE52).addRange(0x1EE61, 0x1EE62).addRange(0x1EE67, 0x1EE6A).addRange(0x1EE6C, 0x1EE72).addRange(0x1EE74, 0x1EE77).addRange(0x1EE79, 0x1EE7C).addRange(0x1EE80, 0x1EE89).addRange(0x1EE8B, 0x1EE9B).addRange(0x1EEA1, 0x1EEA3).addRange(0x1EEA5, 0x1EEA9).addRange(0x1EEAB, 0x1EEBB).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F10C).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD);\nset.addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95).addRange(0x20000, 0x2A6D6).addRange(0x2A700, 0x2B734).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Binary_Property/Grapheme_Base.js?");
 
 /***/ }),
 
@@ -14991,7 +15125,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xAD, 0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x6DD, 0x83F, 0x85F, 0x8B5, 0x8E2, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD04, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x170D, 0x176D, 0x1771, 0x191F, 0x1A5F, 0x1DFA, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x208F, 0x2C2F, 0x2C5F, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0x32FF, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x110BD, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145A, 0x1145C, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x1246F, 0x16A5F, 0x16B5A, 0x16B62, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1F90C, 0x1F972);\n\nset.addRange(0x0, 0x1F).addRange(0x7F, 0x9F).addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x605).addRange(0x61C, 0x61D).addRange(0x70E, 0x70F).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x89F).addRange(0x8BE, 0x8D2).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB55).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81);\nset.addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7).addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3C).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDD).addRange(0xCE4, 0xCE5).addRange(0xCF3, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD80, 0xD81).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xECE, 0xECF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7);\nset.addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1715, 0x171F).addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x180E, 0x180F).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ABF, 0x1AFF).addRange(0x1B4C, 0x1B4F).addRange(0x1B7D, 0x1B7F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C0, 0x20CF);\nset.addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2B96, 0x2B97).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E50, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31BB, 0x31BF).addRange(0x31E4, 0x31EF).addRange(0x4DB6, 0x4DBF).addRange(0x9FF0, 0x9FFF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7C0, 0xA7C1).addRange(0xA7C7, 0xA7F6).addRange(0xA82C, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB68, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xF8FF).addRange(0xFA6E, 0xFA6F);\nset.addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC2, 0xFBD2).addRange(0xFD40, 0xFD4F).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDEF).addRange(0xFDFE, 0xFDFF).addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFF00).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFFB).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019C, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x10570, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E);\nset.addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10E7F, 0x10EFF).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11070, 0x1107E).addRange(0x110C2, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11147, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111CE, 0x111CF).addRange(0x111F5, 0x111FF).addRange(0x1123F, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11460, 0x1147F);\nset.addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F).addRange(0x116B9, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11740, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11900, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11ABF).addRange(0x11AF9, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12FFF).addRange(0x1342F, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16A70, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE4, 0x16FFF).addRange(0x187F8, 0x187FF);\nset.addRange(0x18AF3, 0x1AFFF).addRange(0x1B11F, 0x1B14F).addRange(0x1B153, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA0, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D173, 0x1D17A).addRange(0x1D1E9, 0x1D1FF).addRange(0x1D246, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E7FF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F);\nset.addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16D, 0x1F16F).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D6, 0x1F6DF).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FB, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D9, 0x1F7DF).addRange(0x1F7EC, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F977, 0x1F979).addRange(0x1F9A3, 0x1F9A4).addRange(0x1F9AB, 0x1F9AD).addRange(0x1F9CB, 0x1F9CC).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA74, 0x1FA77).addRange(0x1FA7B, 0x1FA7F).addRange(0x1FA83, 0x1FA8F).addRange(0x1FA96, 0x1FFFF).addRange(0x2A6D7, 0x2A6FF).addRange(0x2B735, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0xE00FF).addRange(0xE01F0, 0x10FFFF);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xAD, 0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x6DD, 0x83F, 0x85F, 0x8B5, 0x8E2, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD04, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x170D, 0x176D, 0x1771, 0x191F, 0x1A5F, 0x1DFA, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x208F, 0x2C2F, 0x2C5F, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x110BD, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145A, 0x1145C, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x1246F, 0x16A5F, 0x16B5A, 0x16B62, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1F90C, 0x1F972);\n\nset.addRange(0x0, 0x1F).addRange(0x7F, 0x9F).addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x605).addRange(0x61C, 0x61D).addRange(0x70E, 0x70F).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x89F).addRange(0x8BE, 0x8D2).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB55).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81);\nset.addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7).addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3C).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDD).addRange(0xCE4, 0xCE5).addRange(0xCF3, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD80, 0xD81).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xECE, 0xECF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7);\nset.addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1715, 0x171F).addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x180E, 0x180F).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ABF, 0x1AFF).addRange(0x1B4C, 0x1B4F).addRange(0x1B7D, 0x1B7F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x200B, 0x200F).addRange(0x202A, 0x202E).addRange(0x2060, 0x206F).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C0, 0x20CF);\nset.addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2B96, 0x2B97).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C).addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E50, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31BB, 0x31BF).addRange(0x31E4, 0x31EF).addRange(0x4DB6, 0x4DBF).addRange(0x9FF0, 0x9FFF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7C0, 0xA7C1).addRange(0xA7C7, 0xA7F6).addRange(0xA82C, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB68, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xF8FF).addRange(0xFA6E, 0xFA6F);\nset.addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC2, 0xFBD2).addRange(0xFD40, 0xFD4F).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDEF).addRange(0xFDFE, 0xFDFF).addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFF00).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFFB).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019C, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x10570, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E);\nset.addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F).addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10E7F, 0x10EFF).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11070, 0x1107E).addRange(0x110C2, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11147, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111CE, 0x111CF).addRange(0x111F5, 0x111FF).addRange(0x1123F, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11460, 0x1147F);\nset.addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F).addRange(0x116B9, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11740, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11900, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11ABF).addRange(0x11AF9, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12FFF).addRange(0x1342F, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16A70, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE4, 0x16FFF).addRange(0x187F8, 0x187FF);\nset.addRange(0x18AF3, 0x1AFFF).addRange(0x1B11F, 0x1B14F).addRange(0x1B153, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F).addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA0, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D173, 0x1D17A).addRange(0x1D1E9, 0x1D1FF).addRange(0x1D246, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E7FF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F);\nset.addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16D, 0x1F16F).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F).addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D6, 0x1F6DF).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FB, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D9, 0x1F7DF).addRange(0x1F7EC, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F977, 0x1F979).addRange(0x1F9A3, 0x1F9A4).addRange(0x1F9AB, 0x1F9AD).addRange(0x1F9CB, 0x1F9CC).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA74, 0x1FA77).addRange(0x1FA7B, 0x1FA7F).addRange(0x1FA83, 0x1FA8F).addRange(0x1FA96, 0x1FFFF).addRange(0x2A6D7, 0x2A6FF).addRange(0x2B735, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0xE00FF).addRange(0xE01F0, 0x10FFFF);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other.js?");
 
 /***/ }),
 
@@ -15035,7 +15169,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xA6, 0xA9, 0xAE, 0xB0, 0x482, 0x6DE, 0x6E9, 0x7F6, 0x9FA, 0xB70, 0xBFA, 0xC7F, 0xD4F, 0xD79, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, 0x3250, 0xA839, 0xFDFD, 0xFFE4, 0xFFE8, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1E14F, 0x1ECAC, 0x1ED2E);\n\nset.addRange(0x58D, 0x58E).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0xBF3, 0xBF8).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2117).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x214C, 0x214D).addRange(0x218A, 0x218B).addRange(0x2195, 0x2199).addRange(0x219C, 0x219F).addRange(0x21A1, 0x21A2).addRange(0x21A4, 0x21A5).addRange(0x21A7, 0x21AD).addRange(0x21AF, 0x21CD).addRange(0x21D0, 0x21D1).addRange(0x21D5, 0x21F3).addRange(0x2300, 0x2307).addRange(0x230C, 0x231F).addRange(0x2322, 0x2328).addRange(0x232B, 0x237B).addRange(0x237D, 0x239A).addRange(0x23B4, 0x23DB).addRange(0x23E2, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9).addRange(0x2500, 0x25B6).addRange(0x25B8, 0x25C0).addRange(0x25C2, 0x25F7).addRange(0x2600, 0x266E).addRange(0x2670, 0x2767).addRange(0x2794, 0x27BF).addRange(0x2800, 0x28FF).addRange(0x2B00, 0x2B2F).addRange(0x2B45, 0x2B46).addRange(0x2B4D, 0x2B73);\nset.addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x32FE).addRange(0x3300, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA837).addRange(0xAA77, 0xAA79).addRange(0xFFED, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FDC).addRange(0x11FE1, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093);\nset.addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F3FA).addRange(0x1F400, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other_Symbol.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xA6, 0xA9, 0xAE, 0xB0, 0x482, 0x6DE, 0x6E9, 0x7F6, 0x9FA, 0xB70, 0xBFA, 0xC7F, 0xD4F, 0xD79, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x1940, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214A, 0x214F, 0x21D3, 0x3004, 0x3020, 0x3250, 0xA839, 0xFDFD, 0xFFE4, 0xFFE8, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1E14F, 0x1ECAC, 0x1ED2E);\n\nset.addRange(0x58D, 0x58E).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0xBF3, 0xBF8).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2117).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x214C, 0x214D).addRange(0x218A, 0x218B).addRange(0x2195, 0x2199).addRange(0x219C, 0x219F).addRange(0x21A1, 0x21A2).addRange(0x21A4, 0x21A5).addRange(0x21A7, 0x21AD).addRange(0x21AF, 0x21CD).addRange(0x21D0, 0x21D1).addRange(0x21D5, 0x21F3).addRange(0x2300, 0x2307).addRange(0x230C, 0x231F).addRange(0x2322, 0x2328).addRange(0x232B, 0x237B).addRange(0x237D, 0x239A).addRange(0x23B4, 0x23DB).addRange(0x23E2, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9).addRange(0x2500, 0x25B6).addRange(0x25B8, 0x25C0).addRange(0x25C2, 0x25F7).addRange(0x2600, 0x266E).addRange(0x2670, 0x2767).addRange(0x2794, 0x27BF).addRange(0x2800, 0x28FF).addRange(0x2B00, 0x2B2F).addRange(0x2B45, 0x2B46).addRange(0x2B4D, 0x2B73);\nset.addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA837).addRange(0xAA77, 0xAA79).addRange(0xFFED, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FDC).addRange(0x11FE1, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE);\nset.addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F3FA).addRange(0x1F400, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Other_Symbol.js?");
 
 /***/ }),
 
@@ -15123,7 +15257,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x24, 0x2B, 0x5E, 0x60, 0x7C, 0x7E, 0xAC, 0xB4, 0xB8, 0xD7, 0xF7, 0x2ED, 0x375, 0x3F6, 0x482, 0x60B, 0x6DE, 0x6E9, 0x7F6, 0xAF1, 0xB70, 0xC7F, 0xD4F, 0xD79, 0xE3F, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x17DB, 0x1940, 0x1FBD, 0x2044, 0x2052, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214F, 0x3004, 0x3020, 0x3250, 0xAB5B, 0xFB29, 0xFE62, 0xFE69, 0xFF04, 0xFF0B, 0xFF3E, 0xFF40, 0xFF5C, 0xFF5E, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3, 0x1E14F, 0x1E2FF, 0x1ECAC, 0x1ECB0, 0x1ED2E);\n\nset.addRange(0x3C, 0x3E).addRange(0xA2, 0xA6).addRange(0xA8, 0xA9).addRange(0xAE, 0xB1).addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x58D, 0x58F).addRange(0x606, 0x608).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x9FA, 0x9FB).addRange(0xBF3, 0xBFA).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x20A0, 0x20BF).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2118).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x2140, 0x2144).addRange(0x214A, 0x214D).addRange(0x218A, 0x218B).addRange(0x2190, 0x2307).addRange(0x230C, 0x2328).addRange(0x232B, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9);\nset.addRange(0x2500, 0x2767).addRange(0x2794, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x309B, 0x309C).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x32FE).addRange(0x3300, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA839).addRange(0xAA77, 0xAA79).addRange(0xFBB2, 0xFBC1).addRange(0xFDFC, 0xFDFD).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1D000, 0x1D0F5);\nset.addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Symbol.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x24, 0x2B, 0x5E, 0x60, 0x7C, 0x7E, 0xAC, 0xB4, 0xB8, 0xD7, 0xF7, 0x2ED, 0x375, 0x3F6, 0x482, 0x60B, 0x6DE, 0x6E9, 0x7F6, 0xAF1, 0xB70, 0xC7F, 0xD4F, 0xD79, 0xE3F, 0xF13, 0xF34, 0xF36, 0xF38, 0x166D, 0x17DB, 0x1940, 0x1FBD, 0x2044, 0x2052, 0x2114, 0x2125, 0x2127, 0x2129, 0x212E, 0x214F, 0x3004, 0x3020, 0x3250, 0xAB5B, 0xFB29, 0xFE62, 0xFE69, 0xFF04, 0xFF0B, 0xFF3E, 0xFF40, 0xFF5C, 0xFF5E, 0x101A0, 0x10AC8, 0x1173F, 0x16B45, 0x1BC9C, 0x1D245, 0x1D6C1, 0x1D6DB, 0x1D6FB, 0x1D715, 0x1D735, 0x1D74F, 0x1D76F, 0x1D789, 0x1D7A9, 0x1D7C3, 0x1E14F, 0x1E2FF, 0x1ECAC, 0x1ECB0, 0x1ED2E);\n\nset.addRange(0x3C, 0x3E).addRange(0xA2, 0xA6).addRange(0xA8, 0xA9).addRange(0xAE, 0xB1).addRange(0x2C2, 0x2C5).addRange(0x2D2, 0x2DF).addRange(0x2E5, 0x2EB).addRange(0x2EF, 0x2FF).addRange(0x384, 0x385).addRange(0x58D, 0x58F).addRange(0x606, 0x608).addRange(0x60E, 0x60F).addRange(0x6FD, 0x6FE).addRange(0x7FE, 0x7FF).addRange(0x9F2, 0x9F3).addRange(0x9FA, 0x9FB).addRange(0xBF3, 0xBFA).addRange(0xF01, 0xF03).addRange(0xF15, 0xF17).addRange(0xF1A, 0xF1F).addRange(0xFBE, 0xFC5).addRange(0xFC7, 0xFCC).addRange(0xFCE, 0xFCF).addRange(0xFD5, 0xFD8).addRange(0x109E, 0x109F).addRange(0x1390, 0x1399).addRange(0x19DE, 0x19FF).addRange(0x1B61, 0x1B6A).addRange(0x1B74, 0x1B7C).addRange(0x1FBF, 0x1FC1).addRange(0x1FCD, 0x1FCF).addRange(0x1FDD, 0x1FDF).addRange(0x1FED, 0x1FEF).addRange(0x1FFD, 0x1FFE).addRange(0x207A, 0x207C).addRange(0x208A, 0x208C).addRange(0x20A0, 0x20BF).addRange(0x2100, 0x2101).addRange(0x2103, 0x2106).addRange(0x2108, 0x2109).addRange(0x2116, 0x2118).addRange(0x211E, 0x2123).addRange(0x213A, 0x213B).addRange(0x2140, 0x2144).addRange(0x214A, 0x214D).addRange(0x218A, 0x218B).addRange(0x2190, 0x2307).addRange(0x230C, 0x2328).addRange(0x232B, 0x2426).addRange(0x2440, 0x244A).addRange(0x249C, 0x24E9);\nset.addRange(0x2500, 0x2767).addRange(0x2794, 0x27C4).addRange(0x27C7, 0x27E5).addRange(0x27F0, 0x2982).addRange(0x2999, 0x29D7).addRange(0x29DC, 0x29FB).addRange(0x29FE, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2BFF).addRange(0x2CE5, 0x2CEA).addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x2FF0, 0x2FFB).addRange(0x3012, 0x3013).addRange(0x3036, 0x3037).addRange(0x303E, 0x303F).addRange(0x309B, 0x309C).addRange(0x3190, 0x3191).addRange(0x3196, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3200, 0x321E).addRange(0x322A, 0x3247).addRange(0x3260, 0x327F).addRange(0x328A, 0x32B0).addRange(0x32C0, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA490, 0xA4C6).addRange(0xA700, 0xA716).addRange(0xA720, 0xA721).addRange(0xA789, 0xA78A).addRange(0xA828, 0xA82B).addRange(0xA836, 0xA839).addRange(0xAA77, 0xAA79).addRange(0xFBB2, 0xFBC1).addRange(0xFDFC, 0xFDFD).addRange(0xFE64, 0xFE66).addRange(0xFF1C, 0xFF1E).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFFC, 0xFFFD).addRange(0x10137, 0x1013F).addRange(0x10179, 0x10189).addRange(0x1018C, 0x1018E).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x10877, 0x10878).addRange(0x11FD5, 0x11FF1).addRange(0x16B3C, 0x16B3F).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126);\nset.addRange(0x1D129, 0x1D164).addRange(0x1D16A, 0x1D16C).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D200, 0x1D241).addRange(0x1D300, 0x1D356).addRange(0x1D800, 0x1D9FF).addRange(0x1DA37, 0x1DA3A).addRange(0x1DA6D, 0x1DA74).addRange(0x1DA76, 0x1DA83).addRange(0x1DA85, 0x1DA86).addRange(0x1EEF0, 0x1EEF1).addRange(0x1F000, 0x1F02B).addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Symbol.js?");
 
 /***/ }),
 
@@ -15145,7 +15279,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x61D, 0x70E, 0x83F, 0x85F, 0x8B5, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD04, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x170D, 0x176D, 0x1771, 0x180F, 0x191F, 0x1A5F, 0x1DFA, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x2065, 0x208F, 0x2C2F, 0x2C5F, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0x32FF, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFF00, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145A, 0x1145C, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x1246F, 0x1342F, 0x16A5F, 0x16B5A, 0x16B62, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1F90C, 0x1F972);\n\nset.addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x5FF).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x89F).addRange(0x8BE, 0x8D2).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB55).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7);\nset.addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3C).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDD).addRange(0xCE4, 0xCE5).addRange(0xCF3, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD80, 0xD81).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xECE, 0xECF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1715, 0x171F);\nset.addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ABF, 0x1AFF).addRange(0x1B4C, 0x1B4F).addRange(0x1B7D, 0x1B7F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C0, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2B96, 0x2B97).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C);\nset.addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E50, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31BB, 0x31BF).addRange(0x31E4, 0x31EF).addRange(0x4DB6, 0x4DBF).addRange(0x9FF0, 0x9FFF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7C0, 0xA7C1).addRange(0xA7C7, 0xA7F6).addRange(0xA82C, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB68, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xD7FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC2, 0xFBD2).addRange(0xFD40, 0xFD4F).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDEF).addRange(0xFDFE, 0xFDFF);\nset.addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFEFE).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFF8).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019C, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x10570, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F);\nset.addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10E7F, 0x10EFF).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11070, 0x1107E).addRange(0x110C2, 0x110CC).addRange(0x110CE, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11147, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111CE, 0x111CF).addRange(0x111F5, 0x111FF).addRange(0x1123F, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11460, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F);\nset.addRange(0x116B9, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11740, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11900, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11ABF).addRange(0x11AF9, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12FFF).addRange(0x13439, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16A70, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE4, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18AF3, 0x1AFFF).addRange(0x1B11F, 0x1B14F).addRange(0x1B153, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F);\nset.addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D1E9, 0x1D1FF).addRange(0x1D246, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E7FF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16D, 0x1F16F).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F);\nset.addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D6, 0x1F6DF).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FB, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D9, 0x1F7DF).addRange(0x1F7EC, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F977, 0x1F979).addRange(0x1F9A3, 0x1F9A4).addRange(0x1F9AB, 0x1F9AD).addRange(0x1F9CB, 0x1F9CC).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA74, 0x1FA77).addRange(0x1FA7B, 0x1FA7F).addRange(0x1FA83, 0x1FA8F).addRange(0x1FA96, 0x1FFFF).addRange(0x2A6D7, 0x2A6FF).addRange(0x2B735, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0xE0000).addRange(0xE0002, 0xE001F).addRange(0xE0080, 0xE00FF).addRange(0xE01F0, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Unassigned.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x38B, 0x38D, 0x3A2, 0x530, 0x590, 0x61D, 0x70E, 0x83F, 0x85F, 0x8B5, 0x984, 0x9A9, 0x9B1, 0x9DE, 0xA04, 0xA29, 0xA31, 0xA34, 0xA37, 0xA3D, 0xA5D, 0xA84, 0xA8E, 0xA92, 0xAA9, 0xAB1, 0xAB4, 0xAC6, 0xACA, 0xB00, 0xB04, 0xB29, 0xB31, 0xB34, 0xB5E, 0xB84, 0xB91, 0xB9B, 0xB9D, 0xBC9, 0xC0D, 0xC11, 0xC29, 0xC45, 0xC49, 0xC57, 0xC8D, 0xC91, 0xCA9, 0xCB4, 0xCC5, 0xCC9, 0xCDF, 0xCF0, 0xD04, 0xD0D, 0xD11, 0xD45, 0xD49, 0xD84, 0xDB2, 0xDBC, 0xDD5, 0xDD7, 0xE83, 0xE85, 0xE8B, 0xEA4, 0xEA6, 0xEC5, 0xEC7, 0xF48, 0xF98, 0xFBD, 0xFCD, 0x10C6, 0x1249, 0x1257, 0x1259, 0x1289, 0x12B1, 0x12BF, 0x12C1, 0x12D7, 0x1311, 0x170D, 0x176D, 0x1771, 0x180F, 0x191F, 0x1A5F, 0x1DFA, 0x1F58, 0x1F5A, 0x1F5C, 0x1F5E, 0x1FB5, 0x1FC5, 0x1FDC, 0x1FF5, 0x1FFF, 0x2065, 0x208F, 0x2C2F, 0x2C5F, 0x2D26, 0x2DA7, 0x2DAF, 0x2DB7, 0x2DBF, 0x2DC7, 0x2DCF, 0x2DD7, 0x2DDF, 0x2E9A, 0x3040, 0x3130, 0x318F, 0x321F, 0xA9CE, 0xA9FF, 0xAB27, 0xAB2F, 0xFB37, 0xFB3D, 0xFB3F, 0xFB42, 0xFB45, 0xFE53, 0xFE67, 0xFE75, 0xFF00, 0xFFE7, 0x1000C, 0x10027, 0x1003B, 0x1003E, 0x1018F, 0x1039E, 0x10809, 0x10836, 0x10856, 0x108F3, 0x10A04, 0x10A14, 0x10A18, 0x11135, 0x111E0, 0x11212, 0x11287, 0x11289, 0x1128E, 0x1129E, 0x11304, 0x11329, 0x11331, 0x11334, 0x1133A, 0x1145A, 0x1145C, 0x11C09, 0x11C37, 0x11CA8, 0x11D07, 0x11D0A, 0x11D3B, 0x11D3E, 0x11D66, 0x11D69, 0x11D8F, 0x11D92, 0x1246F, 0x1342F, 0x16A5F, 0x16B5A, 0x16B62, 0x1D455, 0x1D49D, 0x1D4AD, 0x1D4BA, 0x1D4BC, 0x1D4C4, 0x1D506, 0x1D515, 0x1D51D, 0x1D53A, 0x1D53F, 0x1D545, 0x1D551, 0x1DAA0, 0x1E007, 0x1E022, 0x1E025, 0x1EE04, 0x1EE20, 0x1EE23, 0x1EE28, 0x1EE33, 0x1EE38, 0x1EE3A, 0x1EE48, 0x1EE4A, 0x1EE4C, 0x1EE50, 0x1EE53, 0x1EE58, 0x1EE5A, 0x1EE5C, 0x1EE5E, 0x1EE60, 0x1EE63, 0x1EE6B, 0x1EE73, 0x1EE78, 0x1EE7D, 0x1EE7F, 0x1EE8A, 0x1EEA4, 0x1EEAA, 0x1F0C0, 0x1F0D0, 0x1F90C, 0x1F972);\n\nset.addRange(0x378, 0x379).addRange(0x380, 0x383).addRange(0x557, 0x558).addRange(0x58B, 0x58C).addRange(0x5C8, 0x5CF).addRange(0x5EB, 0x5EE).addRange(0x5F5, 0x5FF).addRange(0x74B, 0x74C).addRange(0x7B2, 0x7BF).addRange(0x7FB, 0x7FC).addRange(0x82E, 0x82F).addRange(0x85C, 0x85D).addRange(0x86B, 0x89F).addRange(0x8BE, 0x8D2).addRange(0x98D, 0x98E).addRange(0x991, 0x992).addRange(0x9B3, 0x9B5).addRange(0x9BA, 0x9BB).addRange(0x9C5, 0x9C6).addRange(0x9C9, 0x9CA).addRange(0x9CF, 0x9D6).addRange(0x9D8, 0x9DB).addRange(0x9E4, 0x9E5).addRange(0x9FF, 0xA00).addRange(0xA0B, 0xA0E).addRange(0xA11, 0xA12).addRange(0xA3A, 0xA3B).addRange(0xA43, 0xA46).addRange(0xA49, 0xA4A).addRange(0xA4E, 0xA50).addRange(0xA52, 0xA58).addRange(0xA5F, 0xA65).addRange(0xA77, 0xA80).addRange(0xABA, 0xABB).addRange(0xACE, 0xACF).addRange(0xAD1, 0xADF).addRange(0xAE4, 0xAE5).addRange(0xAF2, 0xAF8).addRange(0xB0D, 0xB0E).addRange(0xB11, 0xB12).addRange(0xB3A, 0xB3B).addRange(0xB45, 0xB46).addRange(0xB49, 0xB4A).addRange(0xB4E, 0xB55).addRange(0xB58, 0xB5B).addRange(0xB64, 0xB65).addRange(0xB78, 0xB81).addRange(0xB8B, 0xB8D).addRange(0xB96, 0xB98).addRange(0xBA0, 0xBA2).addRange(0xBA5, 0xBA7);\nset.addRange(0xBAB, 0xBAD).addRange(0xBBA, 0xBBD).addRange(0xBC3, 0xBC5).addRange(0xBCE, 0xBCF).addRange(0xBD1, 0xBD6).addRange(0xBD8, 0xBE5).addRange(0xBFB, 0xBFF).addRange(0xC3A, 0xC3C).addRange(0xC4E, 0xC54).addRange(0xC5B, 0xC5F).addRange(0xC64, 0xC65).addRange(0xC70, 0xC76).addRange(0xCBA, 0xCBB).addRange(0xCCE, 0xCD4).addRange(0xCD7, 0xCDD).addRange(0xCE4, 0xCE5).addRange(0xCF3, 0xCFF).addRange(0xD50, 0xD53).addRange(0xD64, 0xD65).addRange(0xD80, 0xD81).addRange(0xD97, 0xD99).addRange(0xDBE, 0xDBF).addRange(0xDC7, 0xDC9).addRange(0xDCB, 0xDCE).addRange(0xDE0, 0xDE5).addRange(0xDF0, 0xDF1).addRange(0xDF5, 0xE00).addRange(0xE3B, 0xE3E).addRange(0xE5C, 0xE80).addRange(0xEBE, 0xEBF).addRange(0xECE, 0xECF).addRange(0xEDA, 0xEDB).addRange(0xEE0, 0xEFF).addRange(0xF6D, 0xF70).addRange(0xFDB, 0xFFF).addRange(0x10C8, 0x10CC).addRange(0x10CE, 0x10CF).addRange(0x124E, 0x124F).addRange(0x125E, 0x125F).addRange(0x128E, 0x128F).addRange(0x12B6, 0x12B7).addRange(0x12C6, 0x12C7).addRange(0x1316, 0x1317).addRange(0x135B, 0x135C).addRange(0x137D, 0x137F).addRange(0x139A, 0x139F).addRange(0x13F6, 0x13F7).addRange(0x13FE, 0x13FF).addRange(0x169D, 0x169F).addRange(0x16F9, 0x16FF).addRange(0x1715, 0x171F);\nset.addRange(0x1737, 0x173F).addRange(0x1754, 0x175F).addRange(0x1774, 0x177F).addRange(0x17DE, 0x17DF).addRange(0x17EA, 0x17EF).addRange(0x17FA, 0x17FF).addRange(0x181A, 0x181F).addRange(0x1879, 0x187F).addRange(0x18AB, 0x18AF).addRange(0x18F6, 0x18FF).addRange(0x192C, 0x192F).addRange(0x193C, 0x193F).addRange(0x1941, 0x1943).addRange(0x196E, 0x196F).addRange(0x1975, 0x197F).addRange(0x19AC, 0x19AF).addRange(0x19CA, 0x19CF).addRange(0x19DB, 0x19DD).addRange(0x1A1C, 0x1A1D).addRange(0x1A7D, 0x1A7E).addRange(0x1A8A, 0x1A8F).addRange(0x1A9A, 0x1A9F).addRange(0x1AAE, 0x1AAF).addRange(0x1ABF, 0x1AFF).addRange(0x1B4C, 0x1B4F).addRange(0x1B7D, 0x1B7F).addRange(0x1BF4, 0x1BFB).addRange(0x1C38, 0x1C3A).addRange(0x1C4A, 0x1C4C).addRange(0x1C89, 0x1C8F).addRange(0x1CBB, 0x1CBC).addRange(0x1CC8, 0x1CCF).addRange(0x1CFB, 0x1CFF).addRange(0x1F16, 0x1F17).addRange(0x1F1E, 0x1F1F).addRange(0x1F46, 0x1F47).addRange(0x1F4E, 0x1F4F).addRange(0x1F7E, 0x1F7F).addRange(0x1FD4, 0x1FD5).addRange(0x1FF0, 0x1FF1).addRange(0x2072, 0x2073).addRange(0x209D, 0x209F).addRange(0x20C0, 0x20CF).addRange(0x20F1, 0x20FF).addRange(0x218C, 0x218F).addRange(0x2427, 0x243F).addRange(0x244B, 0x245F).addRange(0x2B74, 0x2B75).addRange(0x2B96, 0x2B97).addRange(0x2CF4, 0x2CF8).addRange(0x2D28, 0x2D2C);\nset.addRange(0x2D2E, 0x2D2F).addRange(0x2D68, 0x2D6E).addRange(0x2D71, 0x2D7E).addRange(0x2D97, 0x2D9F).addRange(0x2E50, 0x2E7F).addRange(0x2EF4, 0x2EFF).addRange(0x2FD6, 0x2FEF).addRange(0x2FFC, 0x2FFF).addRange(0x3097, 0x3098).addRange(0x3100, 0x3104).addRange(0x31BB, 0x31BF).addRange(0x31E4, 0x31EF).addRange(0x4DB6, 0x4DBF).addRange(0x9FF0, 0x9FFF).addRange(0xA48D, 0xA48F).addRange(0xA4C7, 0xA4CF).addRange(0xA62C, 0xA63F).addRange(0xA6F8, 0xA6FF).addRange(0xA7C0, 0xA7C1).addRange(0xA7C7, 0xA7F6).addRange(0xA82C, 0xA82F).addRange(0xA83A, 0xA83F).addRange(0xA878, 0xA87F).addRange(0xA8C6, 0xA8CD).addRange(0xA8DA, 0xA8DF).addRange(0xA954, 0xA95E).addRange(0xA97D, 0xA97F).addRange(0xA9DA, 0xA9DD).addRange(0xAA37, 0xAA3F).addRange(0xAA4E, 0xAA4F).addRange(0xAA5A, 0xAA5B).addRange(0xAAC3, 0xAADA).addRange(0xAAF7, 0xAB00).addRange(0xAB07, 0xAB08).addRange(0xAB0F, 0xAB10).addRange(0xAB17, 0xAB1F).addRange(0xAB68, 0xAB6F).addRange(0xABEE, 0xABEF).addRange(0xABFA, 0xABFF).addRange(0xD7A4, 0xD7AF).addRange(0xD7C7, 0xD7CA).addRange(0xD7FC, 0xD7FF).addRange(0xFA6E, 0xFA6F).addRange(0xFADA, 0xFAFF).addRange(0xFB07, 0xFB12).addRange(0xFB18, 0xFB1C).addRange(0xFBC2, 0xFBD2).addRange(0xFD40, 0xFD4F).addRange(0xFD90, 0xFD91).addRange(0xFDC8, 0xFDEF).addRange(0xFDFE, 0xFDFF);\nset.addRange(0xFE1A, 0xFE1F).addRange(0xFE6C, 0xFE6F).addRange(0xFEFD, 0xFEFE).addRange(0xFFBF, 0xFFC1).addRange(0xFFC8, 0xFFC9).addRange(0xFFD0, 0xFFD1).addRange(0xFFD8, 0xFFD9).addRange(0xFFDD, 0xFFDF).addRange(0xFFEF, 0xFFF8).addRange(0xFFFE, 0xFFFF).addRange(0x1004E, 0x1004F).addRange(0x1005E, 0x1007F).addRange(0x100FB, 0x100FF).addRange(0x10103, 0x10106).addRange(0x10134, 0x10136).addRange(0x1019C, 0x1019F).addRange(0x101A1, 0x101CF).addRange(0x101FE, 0x1027F).addRange(0x1029D, 0x1029F).addRange(0x102D1, 0x102DF).addRange(0x102FC, 0x102FF).addRange(0x10324, 0x1032C).addRange(0x1034B, 0x1034F).addRange(0x1037B, 0x1037F).addRange(0x103C4, 0x103C7).addRange(0x103D6, 0x103FF).addRange(0x1049E, 0x1049F).addRange(0x104AA, 0x104AF).addRange(0x104D4, 0x104D7).addRange(0x104FC, 0x104FF).addRange(0x10528, 0x1052F).addRange(0x10564, 0x1056E).addRange(0x10570, 0x105FF).addRange(0x10737, 0x1073F).addRange(0x10756, 0x1075F).addRange(0x10768, 0x107FF).addRange(0x10806, 0x10807).addRange(0x10839, 0x1083B).addRange(0x1083D, 0x1083E).addRange(0x1089F, 0x108A6).addRange(0x108B0, 0x108DF).addRange(0x108F6, 0x108FA).addRange(0x1091C, 0x1091E).addRange(0x1093A, 0x1093E).addRange(0x10940, 0x1097F).addRange(0x109B8, 0x109BB).addRange(0x109D0, 0x109D1).addRange(0x10A07, 0x10A0B).addRange(0x10A36, 0x10A37).addRange(0x10A3B, 0x10A3E).addRange(0x10A49, 0x10A4F);\nset.addRange(0x10A59, 0x10A5F).addRange(0x10AA0, 0x10ABF).addRange(0x10AE7, 0x10AEA).addRange(0x10AF7, 0x10AFF).addRange(0x10B36, 0x10B38).addRange(0x10B56, 0x10B57).addRange(0x10B73, 0x10B77).addRange(0x10B92, 0x10B98).addRange(0x10B9D, 0x10BA8).addRange(0x10BB0, 0x10BFF).addRange(0x10C49, 0x10C7F).addRange(0x10CB3, 0x10CBF).addRange(0x10CF3, 0x10CF9).addRange(0x10D28, 0x10D2F).addRange(0x10D3A, 0x10E5F).addRange(0x10E7F, 0x10EFF).addRange(0x10F28, 0x10F2F).addRange(0x10F5A, 0x10FDF).addRange(0x10FF7, 0x10FFF).addRange(0x1104E, 0x11051).addRange(0x11070, 0x1107E).addRange(0x110C2, 0x110CC).addRange(0x110CE, 0x110CF).addRange(0x110E9, 0x110EF).addRange(0x110FA, 0x110FF).addRange(0x11147, 0x1114F).addRange(0x11177, 0x1117F).addRange(0x111CE, 0x111CF).addRange(0x111F5, 0x111FF).addRange(0x1123F, 0x1127F).addRange(0x112AA, 0x112AF).addRange(0x112EB, 0x112EF).addRange(0x112FA, 0x112FF).addRange(0x1130D, 0x1130E).addRange(0x11311, 0x11312).addRange(0x11345, 0x11346).addRange(0x11349, 0x1134A).addRange(0x1134E, 0x1134F).addRange(0x11351, 0x11356).addRange(0x11358, 0x1135C).addRange(0x11364, 0x11365).addRange(0x1136D, 0x1136F).addRange(0x11375, 0x113FF).addRange(0x11460, 0x1147F).addRange(0x114C8, 0x114CF).addRange(0x114DA, 0x1157F).addRange(0x115B6, 0x115B7).addRange(0x115DE, 0x115FF).addRange(0x11645, 0x1164F).addRange(0x1165A, 0x1165F).addRange(0x1166D, 0x1167F);\nset.addRange(0x116B9, 0x116BF).addRange(0x116CA, 0x116FF).addRange(0x1171B, 0x1171C).addRange(0x1172C, 0x1172F).addRange(0x11740, 0x117FF).addRange(0x1183C, 0x1189F).addRange(0x118F3, 0x118FE).addRange(0x11900, 0x1199F).addRange(0x119A8, 0x119A9).addRange(0x119D8, 0x119D9).addRange(0x119E5, 0x119FF).addRange(0x11A48, 0x11A4F).addRange(0x11AA3, 0x11ABF).addRange(0x11AF9, 0x11BFF).addRange(0x11C46, 0x11C4F).addRange(0x11C6D, 0x11C6F).addRange(0x11C90, 0x11C91).addRange(0x11CB7, 0x11CFF).addRange(0x11D37, 0x11D39).addRange(0x11D48, 0x11D4F).addRange(0x11D5A, 0x11D5F).addRange(0x11D99, 0x11D9F).addRange(0x11DAA, 0x11EDF).addRange(0x11EF9, 0x11FBF).addRange(0x11FF2, 0x11FFE).addRange(0x1239A, 0x123FF).addRange(0x12475, 0x1247F).addRange(0x12544, 0x12FFF).addRange(0x13439, 0x143FF).addRange(0x14647, 0x167FF).addRange(0x16A39, 0x16A3F).addRange(0x16A6A, 0x16A6D).addRange(0x16A70, 0x16ACF).addRange(0x16AEE, 0x16AEF).addRange(0x16AF6, 0x16AFF).addRange(0x16B46, 0x16B4F).addRange(0x16B78, 0x16B7C).addRange(0x16B90, 0x16E3F).addRange(0x16E9B, 0x16EFF).addRange(0x16F4B, 0x16F4E).addRange(0x16F88, 0x16F8E).addRange(0x16FA0, 0x16FDF).addRange(0x16FE4, 0x16FFF).addRange(0x187F8, 0x187FF).addRange(0x18AF3, 0x1AFFF).addRange(0x1B11F, 0x1B14F).addRange(0x1B153, 0x1B163).addRange(0x1B168, 0x1B16F).addRange(0x1B2FC, 0x1BBFF).addRange(0x1BC6B, 0x1BC6F).addRange(0x1BC7D, 0x1BC7F);\nset.addRange(0x1BC89, 0x1BC8F).addRange(0x1BC9A, 0x1BC9B).addRange(0x1BCA4, 0x1CFFF).addRange(0x1D0F6, 0x1D0FF).addRange(0x1D127, 0x1D128).addRange(0x1D1E9, 0x1D1FF).addRange(0x1D246, 0x1D2DF).addRange(0x1D2F4, 0x1D2FF).addRange(0x1D357, 0x1D35F).addRange(0x1D379, 0x1D3FF).addRange(0x1D4A0, 0x1D4A1).addRange(0x1D4A3, 0x1D4A4).addRange(0x1D4A7, 0x1D4A8).addRange(0x1D50B, 0x1D50C).addRange(0x1D547, 0x1D549).addRange(0x1D6A6, 0x1D6A7).addRange(0x1D7CC, 0x1D7CD).addRange(0x1DA8C, 0x1DA9A).addRange(0x1DAB0, 0x1DFFF).addRange(0x1E019, 0x1E01A).addRange(0x1E02B, 0x1E0FF).addRange(0x1E12D, 0x1E12F).addRange(0x1E13E, 0x1E13F).addRange(0x1E14A, 0x1E14D).addRange(0x1E150, 0x1E2BF).addRange(0x1E2FA, 0x1E2FE).addRange(0x1E300, 0x1E7FF).addRange(0x1E8C5, 0x1E8C6).addRange(0x1E8D7, 0x1E8FF).addRange(0x1E94C, 0x1E94F).addRange(0x1E95A, 0x1E95D).addRange(0x1E960, 0x1EC70).addRange(0x1ECB5, 0x1ED00).addRange(0x1ED3E, 0x1EDFF).addRange(0x1EE25, 0x1EE26).addRange(0x1EE3C, 0x1EE41).addRange(0x1EE43, 0x1EE46).addRange(0x1EE55, 0x1EE56).addRange(0x1EE65, 0x1EE66).addRange(0x1EE9C, 0x1EEA0).addRange(0x1EEBC, 0x1EEEF).addRange(0x1EEF2, 0x1EFFF).addRange(0x1F02C, 0x1F02F).addRange(0x1F094, 0x1F09F).addRange(0x1F0AF, 0x1F0B0).addRange(0x1F0F6, 0x1F0FF).addRange(0x1F10D, 0x1F10F).addRange(0x1F16D, 0x1F16F).addRange(0x1F1AD, 0x1F1E5).addRange(0x1F203, 0x1F20F).addRange(0x1F23C, 0x1F23F);\nset.addRange(0x1F249, 0x1F24F).addRange(0x1F252, 0x1F25F).addRange(0x1F266, 0x1F2FF).addRange(0x1F6D6, 0x1F6DF).addRange(0x1F6ED, 0x1F6EF).addRange(0x1F6FB, 0x1F6FF).addRange(0x1F774, 0x1F77F).addRange(0x1F7D9, 0x1F7DF).addRange(0x1F7EC, 0x1F7FF).addRange(0x1F80C, 0x1F80F).addRange(0x1F848, 0x1F84F).addRange(0x1F85A, 0x1F85F).addRange(0x1F888, 0x1F88F).addRange(0x1F8AE, 0x1F8FF).addRange(0x1F977, 0x1F979).addRange(0x1F9A3, 0x1F9A4).addRange(0x1F9AB, 0x1F9AD).addRange(0x1F9CB, 0x1F9CC).addRange(0x1FA54, 0x1FA5F).addRange(0x1FA6E, 0x1FA6F).addRange(0x1FA74, 0x1FA77).addRange(0x1FA7B, 0x1FA7F).addRange(0x1FA83, 0x1FA8F).addRange(0x1FA96, 0x1FFFF).addRange(0x2A6D7, 0x2A6FF).addRange(0x2B735, 0x2B73F).addRange(0x2B81E, 0x2B81F).addRange(0x2CEA2, 0x2CEAF).addRange(0x2EBE1, 0x2F7FF).addRange(0x2FA1E, 0xE0000).addRange(0xE0002, 0xE001F).addRange(0xE0080, 0xE00FF).addRange(0xE01F0, 0xEFFFF).addRange(0xFFFFE, 0xFFFFF).addRange(0x10FFFE, 0x10FFFF);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/General_Category/Unassigned.js?");
 
 /***/ }),
 
@@ -15420,7 +15554,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x589, 0x605, 0x60C, 0x61B, 0x61F, 0x640, 0x6DD, 0x8E2, 0xE3F, 0x10FB, 0x1805, 0x1CD3, 0x1CE1, 0x1CFA, 0x3006, 0x30A0, 0xA92E, 0xA9CF, 0xAB5B, 0xFEFF, 0xFF70, 0x1D4A2, 0x1D4BB, 0x1D546, 0xE0001);\n\nset.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0x964, 0x965).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x1802, 0x1803).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x2000, 0x200B).addRange(0x200E, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20BF).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2BFF).addRange(0x2E00, 0x2E4F).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3004).addRange(0x3008, 0x3020).addRange(0x3030, 0x3037).addRange(0x303C, 0x303F).addRange(0x309B, 0x309C).addRange(0x30FB, 0x30FC).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x325F).addRange(0x327F, 0x32CF).addRange(0x3358, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA830, 0xA839);\nset.addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x102E1, 0x102FB).addRange(0x16FE2, 0x16FE3).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1F000, 0x1F02B);\nset.addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F10C).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95).addRange(0xE0020, 0xE007F);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Script/Common.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0xD7, 0xF7, 0x374, 0x37E, 0x385, 0x387, 0x589, 0x605, 0x60C, 0x61B, 0x61F, 0x640, 0x6DD, 0x8E2, 0xE3F, 0x10FB, 0x1805, 0x1CD3, 0x1CE1, 0x1CFA, 0x3006, 0x30A0, 0x32FF, 0xA92E, 0xA9CF, 0xAB5B, 0xFEFF, 0xFF70, 0x1D4A2, 0x1D4BB, 0x1D546, 0xE0001);\n\nset.addRange(0x0, 0x40).addRange(0x5B, 0x60).addRange(0x7B, 0xA9).addRange(0xAB, 0xB9).addRange(0xBB, 0xBF).addRange(0x2B9, 0x2DF).addRange(0x2E5, 0x2E9).addRange(0x2EC, 0x2FF).addRange(0x964, 0x965).addRange(0xFD5, 0xFD8).addRange(0x16EB, 0x16ED).addRange(0x1735, 0x1736).addRange(0x1802, 0x1803).addRange(0x1CE9, 0x1CEC).addRange(0x1CEE, 0x1CF3).addRange(0x1CF5, 0x1CF7).addRange(0x2000, 0x200B).addRange(0x200E, 0x2064).addRange(0x2066, 0x2070).addRange(0x2074, 0x207E).addRange(0x2080, 0x208E).addRange(0x20A0, 0x20BF).addRange(0x2100, 0x2125).addRange(0x2127, 0x2129).addRange(0x212C, 0x2131).addRange(0x2133, 0x214D).addRange(0x214F, 0x215F).addRange(0x2189, 0x218B).addRange(0x2190, 0x2426).addRange(0x2440, 0x244A).addRange(0x2460, 0x27FF).addRange(0x2900, 0x2B73).addRange(0x2B76, 0x2B95).addRange(0x2B98, 0x2BFF).addRange(0x2E00, 0x2E4F).addRange(0x2FF0, 0x2FFB).addRange(0x3000, 0x3004).addRange(0x3008, 0x3020).addRange(0x3030, 0x3037).addRange(0x303C, 0x303F).addRange(0x309B, 0x309C).addRange(0x30FB, 0x30FC).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x325F).addRange(0x327F, 0x32CF).addRange(0x3358, 0x33FF).addRange(0x4DC0, 0x4DFF).addRange(0xA700, 0xA721).addRange(0xA788, 0xA78A).addRange(0xA830, 0xA839);\nset.addRange(0xFD3E, 0xFD3F).addRange(0xFE10, 0xFE19).addRange(0xFE30, 0xFE52).addRange(0xFE54, 0xFE66).addRange(0xFE68, 0xFE6B).addRange(0xFF01, 0xFF20).addRange(0xFF3B, 0xFF40).addRange(0xFF5B, 0xFF65).addRange(0xFF9E, 0xFF9F).addRange(0xFFE0, 0xFFE6).addRange(0xFFE8, 0xFFEE).addRange(0xFFF9, 0xFFFD).addRange(0x10100, 0x10102).addRange(0x10107, 0x10133).addRange(0x10137, 0x1013F).addRange(0x10190, 0x1019B).addRange(0x101D0, 0x101FC).addRange(0x102E1, 0x102FB).addRange(0x16FE2, 0x16FE3).addRange(0x1BCA0, 0x1BCA3).addRange(0x1D000, 0x1D0F5).addRange(0x1D100, 0x1D126).addRange(0x1D129, 0x1D166).addRange(0x1D16A, 0x1D17A).addRange(0x1D183, 0x1D184).addRange(0x1D18C, 0x1D1A9).addRange(0x1D1AE, 0x1D1E8).addRange(0x1D2E0, 0x1D2F3).addRange(0x1D300, 0x1D356).addRange(0x1D360, 0x1D378).addRange(0x1D400, 0x1D454).addRange(0x1D456, 0x1D49C).addRange(0x1D49E, 0x1D49F).addRange(0x1D4A5, 0x1D4A6).addRange(0x1D4A9, 0x1D4AC).addRange(0x1D4AE, 0x1D4B9).addRange(0x1D4BD, 0x1D4C3).addRange(0x1D4C5, 0x1D505).addRange(0x1D507, 0x1D50A).addRange(0x1D50D, 0x1D514).addRange(0x1D516, 0x1D51C).addRange(0x1D51E, 0x1D539).addRange(0x1D53B, 0x1D53E).addRange(0x1D540, 0x1D544).addRange(0x1D54A, 0x1D550).addRange(0x1D552, 0x1D6A5).addRange(0x1D6A8, 0x1D7CB).addRange(0x1D7CE, 0x1D7FF).addRange(0x1EC71, 0x1ECB4).addRange(0x1ED01, 0x1ED3D).addRange(0x1F000, 0x1F02B);\nset.addRange(0x1F030, 0x1F093).addRange(0x1F0A0, 0x1F0AE).addRange(0x1F0B1, 0x1F0BF).addRange(0x1F0C1, 0x1F0CF).addRange(0x1F0D1, 0x1F0F5).addRange(0x1F100, 0x1F10C).addRange(0x1F110, 0x1F16C).addRange(0x1F170, 0x1F1AC).addRange(0x1F1E6, 0x1F1FF).addRange(0x1F201, 0x1F202).addRange(0x1F210, 0x1F23B).addRange(0x1F240, 0x1F248).addRange(0x1F250, 0x1F251).addRange(0x1F260, 0x1F265).addRange(0x1F300, 0x1F6D5).addRange(0x1F6E0, 0x1F6EC).addRange(0x1F6F0, 0x1F6FA).addRange(0x1F700, 0x1F773).addRange(0x1F780, 0x1F7D8).addRange(0x1F7E0, 0x1F7EB).addRange(0x1F800, 0x1F80B).addRange(0x1F810, 0x1F847).addRange(0x1F850, 0x1F859).addRange(0x1F860, 0x1F887).addRange(0x1F890, 0x1F8AD).addRange(0x1F900, 0x1F90B).addRange(0x1F90D, 0x1F971).addRange(0x1F973, 0x1F976).addRange(0x1F97A, 0x1F9A2).addRange(0x1F9A5, 0x1F9AA).addRange(0x1F9AE, 0x1F9CA).addRange(0x1F9CD, 0x1FA53).addRange(0x1FA60, 0x1FA6D).addRange(0x1FA70, 0x1FA73).addRange(0x1FA78, 0x1FA7A).addRange(0x1FA80, 0x1FA82).addRange(0x1FA90, 0x1FA95).addRange(0xE0020, 0xE007F);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Script/Common.js?");
 
 /***/ }),
 
@@ -17323,7 +17457,7 @@ eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerat
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
-eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x3030, 0x30FB);\n\nset.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3001, 0x3003).addRange(0x3005, 0x3011).addRange(0x3013, 0x301F).addRange(0x3021, 0x302D).addRange(0x3037, 0x303F).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x3247).addRange(0x3280, 0x32B0).addRange(0x32C0, 0x32CB).addRange(0x3358, 0x3370).addRange(0x337B, 0x337F).addRange(0x33E0, 0x33FE).addRange(0x3400, 0x4DB5).addRange(0x4E00, 0x9FEF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0x1D360, 0x1D371).addRange(0x1F250, 0x1F251).addRange(0x20000, 0x2A6D6).addRange(0x2A700, 0x2B734).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Han.js?");
+eval("var set = __webpack_require__(/*! regenerate */ \"./node_modules/regenerate/regenerate.js\")(0x3030, 0x30FB, 0x32FF);\n\nset.addRange(0x2E80, 0x2E99).addRange(0x2E9B, 0x2EF3).addRange(0x2F00, 0x2FD5).addRange(0x3001, 0x3003).addRange(0x3005, 0x3011).addRange(0x3013, 0x301F).addRange(0x3021, 0x302D).addRange(0x3037, 0x303F).addRange(0x3190, 0x319F).addRange(0x31C0, 0x31E3).addRange(0x3220, 0x3247).addRange(0x3280, 0x32B0).addRange(0x32C0, 0x32CB).addRange(0x3358, 0x3370).addRange(0x337B, 0x337F).addRange(0x33E0, 0x33FE).addRange(0x3400, 0x4DB5).addRange(0x4E00, 0x9FEF).addRange(0xF900, 0xFA6D).addRange(0xFA70, 0xFAD9).addRange(0xFE45, 0xFE46).addRange(0xFF61, 0xFF65).addRange(0x1D360, 0x1D371).addRange(0x1F250, 0x1F251).addRange(0x20000, 0x2A6D6).addRange(0x2A700, 0x2B734).addRange(0x2B740, 0x2B81D).addRange(0x2B820, 0x2CEA1).addRange(0x2CEB0, 0x2EBE0).addRange(0x2F800, 0x2FA1D);\nmodule.exports = set;\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/Script_Extensions/Han.js?");
 
 /***/ }),
 
@@ -18522,7 +18656,7 @@ eval("module.exports = new Map([['General_Category', ['Cased_Letter', 'Close_Pun
 /*! no static exports found */
 /***/ (function(module, exports) {
 
-eval("module.exports = '12.0.0';\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/unicode-version.js?");
+eval("module.exports = '12.1.0';\n\n//# sourceURL=webpack:///./node_modules/regenerate-unicode-properties/unicode-version.js?");
 
 /***/ }),
 
@@ -18641,6 +18775,17 @@ eval("\n\nif (true) {\n  module.exports = __webpack_require__(/*! ./cjs/schedule
 
 /***/ }),
 
+/***/ "./node_modules/scriptjs/dist/script.js":
+/*!**********************************************!*\
+  !*** ./node_modules/scriptjs/dist/script.js ***!
+  \**********************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+eval("var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!\n  * $script.js JS loader & dependency manager\n  * https://github.com/ded/script.js\n  * (c) Dustin Diaz 2014 | License MIT\n  */\n(function (name, definition) {\n  if ( true && module.exports) module.exports = definition();else if (true) !(__WEBPACK_AMD_DEFINE_FACTORY__ = (definition),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?\n\t\t\t\t(__WEBPACK_AMD_DEFINE_FACTORY__.call(exports, __webpack_require__, exports, module)) :\n\t\t\t\t__WEBPACK_AMD_DEFINE_FACTORY__),\n\t\t\t\t__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));else {}\n})('$script', function () {\n  var doc = document,\n      head = doc.getElementsByTagName('head')[0],\n      s = 'string',\n      f = false,\n      push = 'push',\n      readyState = 'readyState',\n      onreadystatechange = 'onreadystatechange',\n      list = {},\n      ids = {},\n      delay = {},\n      scripts = {},\n      scriptpath,\n      urlArgs;\n\n  function every(ar, fn) {\n    for (var i = 0, j = ar.length; i < j; ++i) {\n      if (!fn(ar[i])) return f;\n    }\n\n    return 1;\n  }\n\n  function each(ar, fn) {\n    every(ar, function (el) {\n      fn(el);\n      return 1;\n    });\n  }\n\n  function $script(paths, idOrDone, optDone) {\n    paths = paths[push] ? paths : [paths];\n    var idOrDoneIsDone = idOrDone && idOrDone.call,\n        done = idOrDoneIsDone ? idOrDone : optDone,\n        id = idOrDoneIsDone ? paths.join('') : idOrDone,\n        queue = paths.length;\n\n    function loopFn(item) {\n      return item.call ? item() : list[item];\n    }\n\n    function callback() {\n      if (! --queue) {\n        list[id] = 1;\n        done && done();\n\n        for (var dset in delay) {\n          every(dset.split('|'), loopFn) && !each(delay[dset], loopFn) && (delay[dset] = []);\n        }\n      }\n    }\n\n    setTimeout(function () {\n      each(paths, function loading(path, force) {\n        if (path === null) return callback();\n\n        if (!force && !/^https?:\\/\\//.test(path) && scriptpath) {\n          path = path.indexOf('.js') === -1 ? scriptpath + path + '.js' : scriptpath + path;\n        }\n\n        if (scripts[path]) {\n          if (id) ids[id] = 1;\n          return scripts[path] == 2 ? callback() : setTimeout(function () {\n            loading(path, true);\n          }, 0);\n        }\n\n        scripts[path] = 1;\n        if (id) ids[id] = 1;\n        create(path, callback);\n      });\n    }, 0);\n    return $script;\n  }\n\n  function create(path, fn) {\n    var el = doc.createElement('script'),\n        loaded;\n\n    el.onload = el.onerror = el[onreadystatechange] = function () {\n      if (el[readyState] && !/^c|loade/.test(el[readyState]) || loaded) return;\n      el.onload = el[onreadystatechange] = null;\n      loaded = 1;\n      scripts[path] = 2;\n      fn();\n    };\n\n    el.async = 1;\n    el.src = urlArgs ? path + (path.indexOf('?') === -1 ? '?' : '&') + urlArgs : path;\n    head.insertBefore(el, head.lastChild);\n  }\n\n  $script.get = create;\n\n  $script.order = function (scripts, id, done) {\n    (function callback(s) {\n      s = scripts.shift();\n      !scripts.length ? $script(s, id, done) : $script(s, callback);\n    })();\n  };\n\n  $script.path = function (p) {\n    scriptpath = p;\n  };\n\n  $script.urlArgs = function (str) {\n    urlArgs = str;\n  };\n\n  $script.ready = function (deps, ready, req) {\n    deps = deps[push] ? deps : [deps];\n    var missing = [];\n    !each(deps, function (dep) {\n      list[dep] || missing[push](dep);\n    }) && every(deps, function (dep) {\n      return list[dep];\n    }) ? ready() : !function (key) {\n      delay[key] = delay[key] || [];\n      delay[key][push](ready);\n      req && req(missing);\n    }(deps.join('|'));\n    return $script;\n  };\n\n  $script.done = function (idOrDone) {\n    $script([null], idOrDone);\n  };\n\n  return $script;\n});\n\n//# sourceURL=webpack:///./node_modules/scriptjs/dist/script.js?");
+
+/***/ }),
+
 /***/ "./node_modules/selection-is-backward/index.js":
 /*!*****************************************************!*\
   !*** ./node_modules/selection-is-backward/index.js ***!
@@ -18675,843 +18820,231 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slat
 
 /***/ }),
 
-/***/ "./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js":
-/*!****************************************************************************!*\
-  !*** ./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js ***!
-  \****************************************************************************/
-/*! exports provided: IS_CHROME, IS_OPERA, IS_FIREFOX, IS_SAFARI, IS_IE, IS_EDGE, IS_ANDROID, IS_IOS, IS_MAC, IS_WINDOWS, HAS_INPUT_EVENTS_LEVEL_1, HAS_INPUT_EVENTS_LEVEL_2, SUPPORTED_EVENTS */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_CHROME\", function() { return IS_CHROME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_OPERA\", function() { return IS_OPERA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_FIREFOX\", function() { return IS_FIREFOX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_SAFARI\", function() { return IS_SAFARI; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_IE\", function() { return IS_IE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_EDGE\", function() { return IS_EDGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_ANDROID\", function() { return IS_ANDROID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_IOS\", function() { return IS_IOS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_MAC\", function() { return IS_MAC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_WINDOWS\", function() { return IS_WINDOWS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HAS_INPUT_EVENTS_LEVEL_1\", function() { return HAS_INPUT_EVENTS_LEVEL_1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HAS_INPUT_EVENTS_LEVEL_2\", function() { return HAS_INPUT_EVENTS_LEVEL_2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SUPPORTED_EVENTS\", function() { return SUPPORTED_EVENTS; });\n/* harmony import */ var is_in_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-in-browser */ \"./node_modules/is-in-browser/dist/module.js\");\n\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n/**\n * Browser matching rules.\n *\n * @type {Array}\n */\n\n\nvar BROWSER_RULES = [['edge', /Edge\\/([0-9\\._]+)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+)\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['android', /Android\\s([0-9\\.]+)/], ['safari', /Version\\/([0-9\\._]+).*Safari/]];\nvar browser = void 0;\n\nif (is_in_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = BROWSER_RULES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var _ref = _step.value;\n\n      var _ref2 = slicedToArray(_ref, 2);\n\n      var name = _ref2[0];\n      var regexp = _ref2[1];\n\n      if (regexp.test(window.navigator.userAgent)) {\n        browser = name;\n        break;\n      }\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n}\n/**\n * Operating system matching rules.\n *\n * @type {Array}\n */\n\n\nvar OS_RULES = [['ios', /os ([\\.\\_\\d]+) like mac os/i], // must be before the macos rule\n['macos', /mac os x/i], ['android', /android/i], ['firefoxos', /mozilla\\/[a-z\\.\\_\\d]+ \\((?:mobile)|(?:tablet)/i], ['windows', /windows\\s*(?:nt)?\\s*([\\.\\_\\d]+)/i]];\nvar os = void 0;\n\nif (is_in_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n  var _iteratorNormalCompletion2 = true;\n  var _didIteratorError2 = false;\n  var _iteratorError2 = undefined;\n\n  try {\n    for (var _iterator2 = OS_RULES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n      var _ref3 = _step2.value;\n\n      var _ref4 = slicedToArray(_ref3, 2);\n\n      var _name = _ref4[0];\n      var _regexp = _ref4[1];\n\n      if (_regexp.test(window.navigator.userAgent)) {\n        os = _name;\n        break;\n      }\n    }\n  } catch (err) {\n    _didIteratorError2 = true;\n    _iteratorError2 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion2 && _iterator2.return) {\n        _iterator2.return();\n      }\n    } finally {\n      if (_didIteratorError2) {\n        throw _iteratorError2;\n      }\n    }\n  }\n}\n/**\n * Feature matching rules.\n *\n * @type {Array}\n */\n\n\nvar FEATURE_RULES = [['inputeventslevel1', function (window) {\n  var event = window.InputEvent ? new InputEvent('input') : {};\n  var support = 'inputType' in event;\n  return support;\n}], ['inputeventslevel2', function (window) {\n  var element = window.document.createElement('div');\n  element.contentEditable = true;\n  var support = 'onbeforeinput' in element;\n  return support;\n}]];\nvar features = [];\n\nif (is_in_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n  var _iteratorNormalCompletion3 = true;\n  var _didIteratorError3 = false;\n  var _iteratorError3 = undefined;\n\n  try {\n    for (var _iterator3 = FEATURE_RULES[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n      var _ref5 = _step3.value;\n\n      var _ref6 = slicedToArray(_ref5, 2);\n\n      var _name2 = _ref6[0];\n      var test = _ref6[1];\n\n      if (test(window)) {\n        features.push(_name2);\n      }\n    }\n  } catch (err) {\n    _didIteratorError3 = true;\n    _iteratorError3 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion3 && _iterator3.return) {\n        _iterator3.return();\n      }\n    } finally {\n      if (_didIteratorError3) {\n        throw _iteratorError3;\n      }\n    }\n  }\n}\n/**\n * Export.\n *\n * @type {Boolean}\n */\n\n\nvar IS_CHROME = browser === 'chrome';\nvar IS_OPERA = browser === 'opera';\nvar IS_FIREFOX = browser === 'firefox';\nvar IS_SAFARI = browser === 'safari';\nvar IS_IE = browser === 'ie';\nvar IS_EDGE = browser === 'edge';\nvar IS_ANDROID = os === 'android';\nvar IS_IOS = os === 'ios';\nvar IS_MAC = os === 'macos';\nvar IS_WINDOWS = os === 'windows';\nvar HAS_INPUT_EVENTS_LEVEL_1 = features.includes('inputeventslevel1');\nvar HAS_INPUT_EVENTS_LEVEL_2 = features.includes('inputeventslevel2'); // COMPAT: this is needed for an older version of `slate-react` support.\n\nvar SUPPORTED_EVENTS = {\n  beforeinput: HAS_INPUT_EVENTS_LEVEL_2\n};\n\n\n//# sourceURL=webpack:///./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-dev-logger/lib/slate-dev-logger.es.js":
-/*!******************************************************************!*\
-  !*** ./node_modules/slate-dev-logger/lib/slate-dev-logger.es.js ***!
-  \******************************************************************/
-/*! exports provided: default */
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
+/***/ "./node_modules/slate-deep-table/dist/TablePosition.js":
+/*!*************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/TablePosition.js ***!
+  \*************************************************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* WEBPACK VAR INJECTION */(function(global) {var global$1 = typeof global !== \"undefined\" ? global : typeof self !== \"undefined\" ? self : typeof window !== \"undefined\" ? window : {}; // shim for using process in browser\n// based off https://github.com/defunctzombie/node-process/blob/master/browser.js\n\nfunction defaultSetTimout() {\n  throw new Error('setTimeout has not been defined');\n}\n\nfunction defaultClearTimeout() {\n  throw new Error('clearTimeout has not been defined');\n}\n\nvar cachedSetTimeout = defaultSetTimout;\nvar cachedClearTimeout = defaultClearTimeout;\n\nif (typeof global$1.setTimeout === 'function') {\n  cachedSetTimeout = setTimeout;\n}\n\nif (typeof global$1.clearTimeout === 'function') {\n  cachedClearTimeout = clearTimeout;\n}\n\nfunction runTimeout(fun) {\n  if (cachedSetTimeout === setTimeout) {\n    //normal enviroments in sane situations\n    return setTimeout(fun, 0);\n  } // if setTimeout wasn't available but was latter defined\n\n\n  if ((cachedSetTimeout === defaultSetTimout || !cachedSetTimeout) && setTimeout) {\n    cachedSetTimeout = setTimeout;\n    return setTimeout(fun, 0);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedSetTimeout(fun, 0);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't trust the global object when called normally\n      return cachedSetTimeout.call(null, fun, 0);\n    } catch (e) {\n      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error\n      return cachedSetTimeout.call(this, fun, 0);\n    }\n  }\n}\n\nfunction runClearTimeout(marker) {\n  if (cachedClearTimeout === clearTimeout) {\n    //normal enviroments in sane situations\n    return clearTimeout(marker);\n  } // if clearTimeout wasn't available but was latter defined\n\n\n  if ((cachedClearTimeout === defaultClearTimeout || !cachedClearTimeout) && clearTimeout) {\n    cachedClearTimeout = clearTimeout;\n    return clearTimeout(marker);\n  }\n\n  try {\n    // when when somebody has screwed with setTimeout but no I.E. maddness\n    return cachedClearTimeout(marker);\n  } catch (e) {\n    try {\n      // When we are in I.E. but the script has been evaled so I.E. doesn't  trust the global object when called normally\n      return cachedClearTimeout.call(null, marker);\n    } catch (e) {\n      // same as above but when it's a version of I.E. that must have the global object for 'this', hopfully our context correct otherwise it will throw a global error.\n      // Some versions of I.E. have different rules for clearTimeout vs setTimeout\n      return cachedClearTimeout.call(this, marker);\n    }\n  }\n}\n\nvar queue = [];\nvar draining = false;\nvar currentQueue;\nvar queueIndex = -1;\n\nfunction cleanUpNextTick() {\n  if (!draining || !currentQueue) {\n    return;\n  }\n\n  draining = false;\n\n  if (currentQueue.length) {\n    queue = currentQueue.concat(queue);\n  } else {\n    queueIndex = -1;\n  }\n\n  if (queue.length) {\n    drainQueue();\n  }\n}\n\nfunction drainQueue() {\n  if (draining) {\n    return;\n  }\n\n  var timeout = runTimeout(cleanUpNextTick);\n  draining = true;\n  var len = queue.length;\n\n  while (len) {\n    currentQueue = queue;\n    queue = [];\n\n    while (++queueIndex < len) {\n      if (currentQueue) {\n        currentQueue[queueIndex].run();\n      }\n    }\n\n    queueIndex = -1;\n    len = queue.length;\n  }\n\n  currentQueue = null;\n  draining = false;\n  runClearTimeout(timeout);\n}\n\nfunction nextTick(fun) {\n  var args = new Array(arguments.length - 1);\n\n  if (arguments.length > 1) {\n    for (var i = 1; i < arguments.length; i++) {\n      args[i - 1] = arguments[i];\n    }\n  }\n\n  queue.push(new Item(fun, args));\n\n  if (queue.length === 1 && !draining) {\n    runTimeout(drainQueue);\n  }\n} // v8 likes predictible objects\n\n\nfunction Item(fun, array) {\n  this.fun = fun;\n  this.array = array;\n}\n\nItem.prototype.run = function () {\n  this.fun.apply(null, this.array);\n};\n\nvar title = 'browser';\nvar platform = 'browser';\nvar browser = true;\nvar env = {};\nvar argv = [];\nvar version = ''; // empty string to avoid regexp issues\n\nvar versions = {};\nvar release = {};\nvar config = {};\n\nfunction noop() {}\n\nvar on = noop;\nvar addListener = noop;\nvar once = noop;\nvar off = noop;\nvar removeListener = noop;\nvar removeAllListeners = noop;\nvar emit = noop;\n\nfunction binding(name) {\n  throw new Error('process.binding is not supported');\n}\n\nfunction cwd() {\n  return '/';\n}\n\nfunction chdir(dir) {\n  throw new Error('process.chdir is not supported');\n}\n\nfunction umask() {\n  return 0;\n} // from https://github.com/kumavis/browser-process-hrtime/blob/master/index.js\n\n\nvar performance = global$1.performance || {};\n\nvar performanceNow = performance.now || performance.mozNow || performance.msNow || performance.oNow || performance.webkitNow || function () {\n  return new Date().getTime();\n}; // generate timestamp or delta\n// see http://nodejs.org/api/process.html#process_process_hrtime\n\n\nfunction hrtime(previousTimestamp) {\n  var clocktime = performanceNow.call(performance) * 1e-3;\n  var seconds = Math.floor(clocktime);\n  var nanoseconds = Math.floor(clocktime % 1 * 1e9);\n\n  if (previousTimestamp) {\n    seconds = seconds - previousTimestamp[0];\n    nanoseconds = nanoseconds - previousTimestamp[1];\n\n    if (nanoseconds < 0) {\n      seconds--;\n      nanoseconds += 1e9;\n    }\n  }\n\n  return [seconds, nanoseconds];\n}\n\nvar startTime = new Date();\n\nfunction uptime() {\n  var currentTime = new Date();\n  var dif = currentTime - startTime;\n  return dif / 1000;\n}\n\nvar process = {\n  nextTick: nextTick,\n  title: title,\n  browser: browser,\n  env: env,\n  argv: argv,\n  version: version,\n  versions: versions,\n  on: on,\n  addListener: addListener,\n  once: once,\n  off: off,\n  removeListener: removeListener,\n  removeAllListeners: removeAllListeners,\n  emit: emit,\n  binding: binding,\n  cwd: cwd,\n  chdir: chdir,\n  umask: umask,\n  hrtime: hrtime,\n  platform: platform,\n  release: release,\n  config: config,\n  uptime: uptime\n};\n/* eslint-disable no-console */\n\n/**\n * Is deprecate interface forbidden?\n */\n\nvar FORBID_DEPRECATE = process && process.env && process.env.FORBID_DEPRECATIONS;\n/**\n * Is warning scenarios forbidden?\n */\n\nvar FORBID_WARNING = process && process.env && process.env.FORBID_WARNINGS;\n/**\n * Is in development?\n *\n * @type {Boolean}\n */\n\nvar IS_DEV = typeof process !== 'undefined' && process.env && \"development\" !== 'production';\n/**\n * Has console?\n *\n * @type {Boolean}\n */\n\nvar HAS_CONSOLE = typeof console != 'undefined' && typeof console.log == 'function' && typeof console.warn == 'function' && typeof console.error == 'function';\n/**\n * Log a `message` at `level`.\n *\n * @param {String} level\n * @param {String} message\n * @param {Any} ...args\n */\n\nfunction log(level, message) {\n  if (!IS_DEV) {\n    return;\n  }\n\n  if (HAS_CONSOLE) {\n    var _console;\n\n    for (var _len = arguments.length, args = Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n      args[_key - 2] = arguments[_key];\n    }\n\n    (_console = console)[level].apply(_console, [message].concat(args));\n  }\n}\n/**\n * Log an error `message`.\n *\n * @param {String} message\n * @param {Any} ...args\n */\n\n\nfunction error(message) {\n  if (HAS_CONSOLE) {\n    var _console2;\n\n    for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    (_console2 = console).error.apply(_console2, [message].concat(args));\n  }\n}\n/**\n * Log a warning `message` in development only.\n *\n * @param {String} message\n * @param {Any} ...args\n */\n\n\nfunction warn(message) {\n  var logger = FORBID_WARNING ? forbidden : log;\n\n  for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n    args[_key3 - 1] = arguments[_key3];\n  }\n\n  logger.apply(undefined, ['warn', 'Warning: ' + message].concat(args));\n}\n/**\n * Log a deprecation warning `message`, with helpful `version` number in\n * development only.\n *\n * @param {String} version\n * @param {String} message\n * @param {Any} ...args\n */\n\n\nfunction deprecate(version$$1, message) {\n  var logger = FORBID_DEPRECATE ? forbidden : log;\n\n  for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n    args[_key4 - 2] = arguments[_key4];\n  }\n\n  logger.apply(undefined, ['warn', 'Deprecation (' + version$$1 + '): ' + message].concat(args));\n}\n\nfunction forbidden(level, message) {\n  throw new Error(message);\n}\n/**\n * Export.\n *\n * @type {Function}\n */\n\n\nvar index = {\n  deprecate: deprecate,\n  error: error,\n  warn: warn\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../webpack/buildin/global.js */ \"./node_modules/webpack/buildin/global.js\")))\n\n//# sourceURL=webpack:///./node_modules/slate-dev-logger/lib/slate-dev-logger.es.js?");
+eval("\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar Immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar DEFAULTS = {\n  // Block containr for the table\n  table: null,\n  // Block for current row\n  row: null,\n  // Block for current cell\n  cell: null\n};\n\nvar TablePosition = function (_ref) {\n  _inherits(TablePosition, _ref);\n\n  function TablePosition() {\n    _classCallCheck(this, TablePosition);\n\n    return _possibleConstructorReturn(this, (TablePosition.__proto__ || Object.getPrototypeOf(TablePosition)).apply(this, arguments));\n  }\n\n  _createClass(TablePosition, [{\n    key: 'getWidth',\n\n    /**\n     * Get count of columns\n     * @return {Number}\n     */\n    value: function getWidth() {\n      var table = this.table;\n      var rows = table.nodes;\n      var cells = rows.get(0).nodes;\n      return cells.size;\n    }\n    /**\n     * Get count of rows\n     * @return {Number}\n     */\n\n  }, {\n    key: 'getHeight',\n    value: function getHeight() {\n      var table = this.table;\n      var rows = table.nodes;\n      return rows.size;\n    }\n    /**\n     * Get index of current row in the table.\n     * @return {Number}\n     */\n\n  }, {\n    key: 'getRowIndex',\n    value: function getRowIndex() {\n      var table = this.table,\n          row = this.row;\n      var rows = table.nodes;\n      return rows.findIndex(function (x) {\n        return x === row;\n      });\n    }\n    /**\n     * Get index of current column in the row.\n     * @return {Number}\n     */\n\n  }, {\n    key: 'getColumnIndex',\n    value: function getColumnIndex() {\n      var row = this.row,\n          cell = this.cell;\n      var cells = row.nodes;\n      return cells.findIndex(function (x) {\n        return x === cell;\n      });\n    }\n    /**\n     * @return {Boolean} True if on first cell of the table\n     */\n\n  }, {\n    key: 'isFirstCell',\n    value: function isFirstCell() {\n      return this.isFirstRow() && this.isFirstColumn();\n    }\n    /**\n     * @return {Boolean} True if on last cell of the table\n     */\n\n  }, {\n    key: 'isLastCell',\n    value: function isLastCell() {\n      return this.isLastRow() && this.isLastColumn();\n    }\n    /**\n     * @return {Boolean} True if on first row\n     */\n\n  }, {\n    key: 'isFirstRow',\n    value: function isFirstRow() {\n      return this.getRowIndex() === 0;\n    }\n    /**\n     * @return {Boolean} True if on last row\n     */\n\n  }, {\n    key: 'isLastRow',\n    value: function isLastRow() {\n      return this.getRowIndex() === this.getHeight() - 1;\n    }\n    /**\n     * @return {Boolean} True if on first column\n     */\n\n  }, {\n    key: 'isFirstColumn',\n    value: function isFirstColumn() {\n      return this.getColumnIndex() === 0;\n    }\n    /**\n     * @return {Boolean} True if on last column\n     */\n\n  }, {\n    key: 'isLastColumn',\n    value: function isLastColumn() {\n      return this.getColumnIndex() === this.getWidth() - 1;\n    }\n    /**\n     * Create a new instance of a TablePosition from a Slate value\n     * and a current cell or node within a cell.\n     *\n     * @param  {Slate.Value} value\n     * @param  {Slate.Block} startBlock\n     * @param  {Object} opts\n     * @return {TablePosition}\n     */\n\n  }], [{\n    key: 'create',\n    value: function create(value, startBlock, opts) {\n      var cell = value.document.getClosest(startBlock.key, function (p) {\n        return p.type === opts.typeCell;\n      });\n      var row = value.document.getClosest(startBlock.key, function (p) {\n        return p.type === opts.typeRow;\n      });\n      var table = value.document.getClosest(startBlock.key, function (p) {\n        return p.type === opts.typeTable;\n      });\n      return new TablePosition({\n        table: table,\n        row: row,\n        cell: cell\n      });\n    }\n    /**\n     * Check to see if current node is within a cell\n     * \n     * @param {Slate.Value} value\n     * @param {Slate.Block} startBlock\n     * @param {Object} opts\n     * @return {Boolean} \n     */\n\n  }, {\n    key: 'isInCell',\n    value: function isInCell(value, startBlock, opts) {\n      return startBlock.type === opts.typeCell || value.document.getClosest(startBlock.key, function (p) {\n        return p.type === opts.typeCell;\n      }) ? true : false;\n    }\n  }]);\n\n  return TablePosition;\n}(new Immutable.Record(DEFAULTS));\n\nmodule.exports = TablePosition;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/TablePosition.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js":
-/*!************************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js ***!
-  \************************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/insertColumn.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/insertColumn.js ***!
+  \********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * Decreases the depth of the current item. The following items will\n * be moved as sublist of the decreased item.\n *\n * No-op for root items.\n */\n\n\nfunction decreaseItemDepth(opts, change) {\n  var value = change.value;\n  var document = value.document; // Cannot decrease item depth of root items\n\n  var depth = (0, _utils.getItemDepth)(opts, value);\n\n  if (depth == 1) {\n    return change;\n  }\n\n  var currentItem = (0, _utils.getCurrentItem)(opts, value);\n\n  if (!currentItem) {\n    return change;\n  }\n\n  var currentList = document.getParent(currentItem.key);\n  var parentItem = document.getParent(currentList.key);\n  var parentList = document.getParent(parentItem.key); // The items following the item will be moved to a sublist of currentItem\n\n  var followingItems = currentList.nodes.skipUntil(function (i) {\n    return i === currentItem;\n  }).rest(); // True if the currentItem and the followingItems make the whole\n  // currentList, and hence the currentList will be emptied\n\n  var willEmptyCurrentList = currentList.nodes.size === followingItems.size + 1;\n\n  if (!followingItems.isEmpty()) {\n    // Add them as sublist of currentItem\n    var sublist = _slate.Block.create({\n      object: 'block',\n      type: currentList.type,\n      data: currentList.data\n    }); // Add the sublist\n\n\n    change.insertNodeByKey(currentItem.key, currentItem.nodes.size, sublist, {\n      normalize: false\n    });\n    change.moveNodeByKey(currentItem.key, parentList.key, parentList.nodes.indexOf(parentItem) + 1, {\n      normalize: false\n    }); // Move the followingItems to the sublist\n\n    followingItems.forEach(function (item, index) {\n      return change.moveNodeByKey(item.key, sublist.key, sublist.nodes.size + index, {\n        normalize: false\n      });\n    });\n  } else {\n    change.moveNodeByKey(currentItem.key, parentList.key, parentList.nodes.indexOf(parentItem) + 1);\n  } // Remove the currentList completely if needed\n\n\n  if (willEmptyCurrentList) {\n    change.removeNodeByKey(currentList.key);\n  }\n\n  return change;\n}\n\nexports.default = decreaseItemDepth;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js?");
+eval("\n\nvar _require = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\"),\n    List = _require.List;\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n\nvar moveSelection = __webpack_require__(/*! ./moveSelection */ \"./node_modules/slate-deep-table/dist/changes/moveSelection.js\");\n\nvar createCell = __webpack_require__(/*! ../createCell */ \"./node_modules/slate-deep-table/dist/createCell.js\");\n/**\n * Insert a new column in current table\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} at\n * @return {Slate.Editor}\n */\n\n\nfunction insertColumn(opts, editor, at) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table;\n\n  if (typeof at === 'undefined') {\n    at = pos.getColumnIndex() + 1;\n  } // Insert the new cell\n\n\n  editor.withoutNormalizing(function () {\n    table.nodes.forEach(function (row) {\n      var newCell = createCell(opts);\n      editor.insertNodeByKey(row.key, at, newCell);\n    });\n  }); // Update the selection (not doing can break the undo)\n\n  return moveSelection(opts, editor, pos.getColumnIndex() + 1, pos.getRowIndex());\n}\n\nmodule.exports = insertColumn;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/insertColumn.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/changes/increaseItemDepth.js":
-/*!************************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/changes/increaseItemDepth.js ***!
-  \************************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/insertRow.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/insertRow.js ***!
+  \*****************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * Increase the depth of the current item by putting it in a sub-list\n * of previous item.\n * For first items in a list, does nothing.\n */\n\n\nfunction increaseItemDepth(opts, change) {\n  var previousItem = (0, _utils.getPreviousItem)(opts, change.value);\n  var currentItem = (0, _utils.getCurrentItem)(opts, change.value);\n\n  if (!previousItem) {\n    return change;\n  }\n\n  if (!currentItem) {\n    return change;\n  } // Move the item in the sublist of previous item\n\n\n  return moveAsSubItem(opts, change, currentItem, previousItem.key);\n}\n/**\n * Move the given item to the sublist at the end of destination item,\n * creating a sublist if needed.\n */\n\n\nfunction moveAsSubItem(opts, change, // The list item to add\nitem, // The key of the destination node\ndestKey) {\n  var destination = change.value.document.getDescendant(destKey);\n  var lastIndex = destination.nodes.size;\n  var lastChild = destination.nodes.last(); // The potential existing last child list\n\n  var existingList = (0, _utils.isList)(opts, lastChild) ? lastChild : null;\n\n  if (existingList) {\n    return change.moveNodeByKey(item.key, existingList.key, existingList.nodes.size // as last item\n    );\n  }\n\n  var currentList = (0, _utils.getListForItem)(opts, change.value, destination);\n\n  if (!currentList) {\n    throw new Error('Destination is not in a list');\n  }\n\n  var newSublist = _slate.Block.create({\n    object: 'block',\n    type: currentList.type,\n    data: currentList.data\n  });\n\n  change.insertNodeByKey(destKey, lastIndex, newSublist, {\n    normalize: false\n  });\n  return change.moveNodeByKey(item.key, newSublist.key, 0);\n}\n\nexports.default = increaseItemDepth;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/changes/increaseItemDepth.js?");
+eval("\n\nvar createRow = __webpack_require__(/*! ../createRow */ \"./node_modules/slate-deep-table/dist/createRow.js\");\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n/**\n * Insert a new row in current table\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} at\n * @param {Function} textGetter\n * @return {Slate.Editor}\n */\n\n\nfunction insertRow(opts, editor, at, textGetter) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table; // Create a new row with the right count of cells\n\n  var firstRow = table.nodes.get(0);\n  var newRow = createRow(opts, firstRow.nodes.size, textGetter);\n\n  if (typeof at === 'undefined') {\n    at = pos.getRowIndex() + 1;\n  }\n\n  return editor.insertNodeByKey(table.key, at, newRow).moveToEndOfNode(newRow.nodes.get(pos.getColumnIndex()));\n}\n\nmodule.exports = insertRow;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/insertRow.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/changes/index.js":
-/*!************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/changes/index.js ***!
-  \************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/insertTable.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/insertTable.js ***!
+  \*******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.decreaseItemDepth = exports.increaseItemDepth = exports.splitListItem = exports.unwrapList = exports.wrapInList = undefined;\n\nvar _wrapInList = __webpack_require__(/*! ./wrapInList */ \"./node_modules/slate-edit-list/dist/changes/wrapInList.js\");\n\nvar _wrapInList2 = _interopRequireDefault(_wrapInList);\n\nvar _unwrapList = __webpack_require__(/*! ./unwrapList */ \"./node_modules/slate-edit-list/dist/changes/unwrapList.js\");\n\nvar _unwrapList2 = _interopRequireDefault(_unwrapList);\n\nvar _splitListItem = __webpack_require__(/*! ./splitListItem */ \"./node_modules/slate-edit-list/dist/changes/splitListItem.js\");\n\nvar _splitListItem2 = _interopRequireDefault(_splitListItem);\n\nvar _increaseItemDepth = __webpack_require__(/*! ./increaseItemDepth */ \"./node_modules/slate-edit-list/dist/changes/increaseItemDepth.js\");\n\nvar _increaseItemDepth2 = _interopRequireDefault(_increaseItemDepth);\n\nvar _decreaseItemDepth = __webpack_require__(/*! ./decreaseItemDepth */ \"./node_modules/slate-edit-list/dist/changes/decreaseItemDepth.js\");\n\nvar _decreaseItemDepth2 = _interopRequireDefault(_decreaseItemDepth);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.wrapInList = _wrapInList2.default;\nexports.unwrapList = _unwrapList2.default;\nexports.splitListItem = _splitListItem2.default;\nexports.increaseItemDepth = _increaseItemDepth2.default;\nexports.decreaseItemDepth = _decreaseItemDepth2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/changes/index.js?");
+eval("\n\nvar createTable = __webpack_require__(/*! ../createTable */ \"./node_modules/slate-deep-table/dist/createTable.js\");\n/**\n * Insert a new table\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} columns\n * @param {Number} rows\n * @return {Slate.Editor}\n */\n\n\nfunction insertTable(opts, editor) {\n  var columns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2;\n  var rows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 2;\n  var value = editor.value;\n  if (!value.selection.start.key) return false; // Create the table node\n\n  var fillWithEmptyText = function fillWithEmptyText(x, y) {\n    return '';\n  };\n\n  var table = createTable(opts, columns, rows, fillWithEmptyText);\n  var done = editor.insertBlock(table);\n  return done;\n}\n\nmodule.exports = insertTable;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/insertTable.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/changes/splitListItem.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/changes/splitListItem.js ***!
-  \********************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/moveSelection.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/moveSelection.js ***!
+  \*********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * Split a list item at the start of the current range.\n */\n\n\nfunction splitListItem(opts, change) {\n  var value = change.value;\n  var currentItem = (0, _utils.getCurrentItem)(opts, value);\n\n  if (!currentItem) {\n    return change;\n  }\n\n  var splitOffset = value.startOffset;\n  return change.splitDescendantsByKey(currentItem.key, value.startKey, splitOffset);\n}\n\nexports.default = splitListItem;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/changes/splitListItem.js?");
+eval("\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n/**\n * Move selection to {x,y}\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} x\n * @param {Number} y\n * @return {Slate.Editor}\n */\n\n\nfunction moveSelection(opts, editor, x, y) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var startOffset = value.selection.start.offset;\n\n  if (!TablePosition.isInCell(value, startBlock, opts)) {\n    throw new Error('moveSelection can only be applied in a cell');\n  }\n\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table;\n  var row = table.nodes.get(y);\n  var cell = row.nodes.get(x); // Calculate new offset\n\n  var cellTextLength = cell.text.length;\n\n  if (startOffset > cellTextLength) {\n    startOffset = cellTextLength;\n  }\n\n  return editor.moveTo(cell.getFirstText().key, startOffset);\n}\n\nmodule.exports = moveSelection;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/moveSelection.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/changes/unwrapList.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/changes/unwrapList.js ***!
-  \*****************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/moveSelectionBy.js":
+/*!***********************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/moveSelectionBy.js ***!
+  \***********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * Unwrap items at range from their list.\n */\n\n\nfunction unwrapList(opts, change) {\n  var items = (0, _utils.getItemsAtRange)(opts, change.value);\n\n  if (items.isEmpty()) {\n    return change;\n  } // Unwrap the items from their list\n\n\n  items.forEach(function (item) {\n    return change.unwrapNodeByKey(item.key, {\n      normalize: false\n    });\n  }); // Parent of the list of the items\n\n  var firstItem = items.first();\n  var parent = change.value.document.getParent(firstItem.key);\n  var index = parent.nodes.findIndex(function (node) {\n    return node.key === firstItem.key;\n  }); // Unwrap the items' children\n\n  items.forEach(function (item) {\n    item.nodes.forEach(function (node) {\n      change.moveNodeByKey(node.key, parent.key, index, {\n        normalize: false\n      });\n      index += 1;\n    });\n  }); // Finally, remove the now empty items\n\n  items.forEach(function (item) {\n    return change.removeNodeByKey(item.key, {\n      normalize: false\n    });\n  });\n  return change;\n}\n\nexports.default = unwrapList;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/changes/unwrapList.js?");
+eval("\n\nvar _slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n\nvar moveSelection = __webpack_require__(/*! ./moveSelection */ \"./node_modules/slate-deep-table/dist/changes/moveSelection.js\");\n/**\n * Move selection by a {x,y} relative movement\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} x Move horizontally by x\n * @param {Number} y Move vertically by y\n * @return {Slate.Editor}\n */\n\n\nfunction moveSelectionBy(opts, editor, x, y) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n\n  if (!TablePosition.isInCell(value, startBlock, opts)) {\n    throw new Error('moveSelectionBy can only be applied in a cell');\n  }\n\n  var pos = TablePosition.create(value, startBlock, opts);\n  var rowIndex = pos.getRowIndex();\n  var colIndex = pos.getColumnIndex();\n  var width = pos.getWidth();\n  var height = pos.getHeight();\n\n  var _normPos = normPos(x + colIndex, y + rowIndex, width, height),\n      _normPos2 = _slicedToArray(_normPos, 2),\n      absX = _normPos2[0],\n      absY = _normPos2[1];\n\n  if (absX === -1) {\n    // Out of table\n    return editor;\n  }\n\n  return moveSelection(opts, editor, absX, absY);\n}\n/**\n * Normalize position in a table. If x is out of the row, update y accordingly\n * @param {Number} x\n * @param {Number} y\n * @param {Number} width\n * @param {Number} height\n * @return {Array} [-1, -1] if the new selection is out of table\n */\n\n\nfunction normPos(x, y, width, height) {\n  if (x < 0) {\n    x = width - 1;\n    y--;\n  }\n\n  if (y < 0) {\n    return [-1, -1];\n  }\n\n  if (x >= width) {\n    x = 0;\n    y++;\n  }\n\n  if (y >= height) {\n    return [-1, -1];\n  }\n\n  return [x, y];\n}\n\nmodule.exports = moveSelectionBy;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/moveSelectionBy.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/changes/wrapInList.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/changes/wrapInList.js ***!
-  \*****************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/removeColumn.js":
+/*!********************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/removeColumn.js ***!
+  \********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * Wrap the blocks in the current selection in a new list. Selected\n * lists are merged together.\n */\n\n\nfunction wrapInList(opts, change, type, data) {\n  var selectedBlocks = getHighestSelectedBlocks(change.value);\n  type = type || opts.types[0]; // Wrap in container\n\n  change.wrapBlock({\n    type: type,\n    data: _slate.Data.create(data)\n  }, {\n    normalize: false\n  }); // Wrap in list items\n\n  selectedBlocks.forEach(function (node) {\n    if ((0, _utils.isList)(opts, node)) {\n      // Merge its items with the created list\n      node.nodes.forEach(function (_ref) {\n        var key = _ref.key;\n        return change.unwrapNodeByKey(key, {\n          normalize: false\n        });\n      });\n    } else {\n      change.wrapBlockByKey(node.key, opts.typeItem, {\n        normalize: false\n      });\n    }\n  });\n  return change.normalize();\n}\n/**\n * Returns the highest list of blocks that cover the current selection\n */\n\n\nfunction getHighestSelectedBlocks(value) {\n  var range = value.selection;\n  var document = value.document;\n  var startBlock = document.getClosestBlock(range.startKey);\n  var endBlock = document.getClosestBlock(range.endKey);\n\n  if (startBlock === endBlock) {\n    return (0, _immutable.List)([startBlock]);\n  }\n\n  var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n  var startPath = ancestor.getPath(startBlock.key);\n  var endPath = ancestor.getPath(endBlock.key);\n  return ancestor.nodes.slice(startPath[0], endPath[0] + 1);\n}\n\nexports.default = wrapInList;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/changes/wrapInList.js?");
+eval("\n\nvar Slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar Text = Slate.Text;\n\nvar _require = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\"),\n    List = _require.List;\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n/**\n * Delete current column in a table\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} at\n * @return {Slate.Editor}\n */\n\n\nfunction removeColumn(opts, editor, at) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table;\n\n  if (typeof at === 'undefined') {\n    at = pos.getColumnIndex();\n  }\n\n  var rows = table.nodes; // Remove the cell from every row\n\n  if (pos.getWidth() > 1) {\n    editor.withoutNormalizing(function () {\n      rows.forEach(function (row) {\n        var cell = row.nodes.get(at);\n        editor.removeNodeByKey(cell.key);\n      });\n    });\n  } // If last column, clear text in cells instead\n  else {\n      editor.withoutNormalizing(function () {\n        rows.forEach(function (row) {\n          row.nodes.forEach(function (cell) {\n            // remove all children of cells\n            // the schema will create an empty child content block in each cell\n            cell.nodes.forEach(function (node) {\n              editor.removeNodeByKey(node.key);\n            });\n          });\n        });\n      });\n    } // Replace the table\n\n\n  return editor;\n}\n\nmodule.exports = removeColumn;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/removeColumn.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/core.js":
-/*!***************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/core.js ***!
-  \***************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/removeRow.js":
+/*!*****************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/removeRow.js ***!
+  \*****************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _options = __webpack_require__(/*! ./options */ \"./node_modules/slate-edit-list/dist/options.js\");\n\nvar _options2 = _interopRequireDefault(_options);\n\nvar _validation = __webpack_require__(/*! ./validation */ \"./node_modules/slate-edit-list/dist/validation/index.js\");\n\nvar _changes = __webpack_require__(/*! ./changes */ \"./node_modules/slate-edit-list/dist/changes/index.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n}\n/**\n * Returns the core of the plugin, limited to the validation and normalization\n * part of `slate-edit-list`, and utils.\n *\n * Import this directly: `import EditListCore from 'slate-edit-table/lib/core'`\n * if you don't care about behavior/rendering and you\n * are only manipulating `Slate.Values` without rendering them.\n * That way you do not depend on importing `slate-react`.\n */\n\n\nfunction core() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  opts = new _options2.default(opts);\n  return {\n    schema: (0, _validation.schema)(opts),\n    validateNode: (0, _validation.validateNode)(opts),\n    utils: {\n      getCurrentItem: _utils.getCurrentItem.bind(null, opts),\n      getCurrentList: _utils.getCurrentList.bind(null, opts),\n      getItemDepth: _utils.getItemDepth.bind(null, opts),\n      getItemsAtRange: _utils.getItemsAtRange.bind(null, opts),\n      getPreviousItem: _utils.getPreviousItem.bind(null, opts),\n      isList: _utils.isList.bind(null, opts),\n      isSelectionInList: _utils.isSelectionInList.bind(null, opts)\n    },\n    changes: {\n      decreaseItemDepth: bindAndScopeChange(opts, _changes.decreaseItemDepth),\n      increaseItemDepth: bindAndScopeChange(opts, _changes.increaseItemDepth),\n      splitListItem: bindAndScopeChange(opts, _changes.splitListItem),\n      unwrapList: bindAndScopeChange(opts, _changes.unwrapList),\n      wrapInList: _changes.wrapInList.bind(null, opts)\n    }\n  };\n}\n/**\n * Bind a change to given options, and scope it to act only inside a list\n */\n\n\nfunction bindAndScopeChange(opts, fn) {\n  return function (change) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var value = change.value;\n\n    if (!(0, _utils.isSelectionInList)(opts, value)) {\n      return change;\n    } // $FlowFixMe\n\n\n    return fn.apply(undefined, _toConsumableArray([opts, change].concat(args)));\n  };\n}\n\nexports.default = core;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/core.js?");
+eval("\n\nvar Slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar Text = Slate.Text;\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n/**\n * Remove current row in a table. Clear it if last remaining row\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} at\n * @return {Slate.Editor}\n */\n\n\nfunction removeRow(opts, editor, at) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table;\n\n  if (typeof at === 'undefined') {\n    at = pos.getRowIndex();\n  }\n\n  var row = table.nodes.get(at); // Update table by removing the row\n\n  if (pos.getHeight() > 1) {\n    editor.removeNodeByKey(row.key);\n  } // If last remaining row, clear it instead\n  else {\n      editor.withoutNormalizing(function () {\n        row.nodes.forEach(function (cell) {\n          // remove all children of cells\n          // the schema will create an empty child content block in each cell\n          cell.nodes.forEach(function (node) {\n            editor.removeNodeByKey(node.key);\n          });\n        });\n      });\n    }\n\n  return editor;\n}\n\nmodule.exports = removeRow;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/removeRow.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/handlers/index.js":
-/*!*************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/handlers/index.js ***!
-  \*************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/removeTable.js":
+/*!*******************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/removeTable.js ***!
+  \*******************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.onBackspace = exports.onTab = exports.onEnter = undefined;\n\nvar _onEnter = __webpack_require__(/*! ./onEnter */ \"./node_modules/slate-edit-list/dist/handlers/onEnter.js\");\n\nvar _onEnter2 = _interopRequireDefault(_onEnter);\n\nvar _onTab = __webpack_require__(/*! ./onTab */ \"./node_modules/slate-edit-list/dist/handlers/onTab.js\");\n\nvar _onTab2 = _interopRequireDefault(_onTab);\n\nvar _onBackspace = __webpack_require__(/*! ./onBackspace */ \"./node_modules/slate-edit-list/dist/handlers/onBackspace.js\");\n\nvar _onBackspace2 = _interopRequireDefault(_onBackspace);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.onEnter = _onEnter2.default;\nexports.onTab = _onTab2.default;\nexports.onBackspace = _onBackspace2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/handlers/index.js?");
+eval("\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n/**\n * Delete the whole table\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @param {Number} at\n * @return {Slate.Editor}\n */\n\n\nfunction removeTable(opts, editor, at) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table;\n  return editor.deselect().removeNodeByKey(table.key);\n}\n\nmodule.exports = removeTable;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/removeTable.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/handlers/onBackspace.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/handlers/onBackspace.js ***!
-  \*******************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/changes/toggleHeaders.js":
+/*!*********************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/changes/toggleHeaders.js ***!
+  \*********************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-list/dist/changes/index.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * User pressed Delete in an editor\n */\n\n\nfunction onBackspace(event, change, editor, opts) {\n  var value = change.value;\n  var startOffset = value.startOffset,\n      selection = value.selection; // Only unwrap...\n  // ... with a collapsed selection\n\n  if (selection.isExpanded) {\n    return undefined;\n  } // ... when at the beginning of nodes\n\n\n  if (startOffset > 0) {\n    return undefined;\n  } // ... in a list\n\n\n  var currentItem = (0, _utils.getCurrentItem)(opts, value);\n\n  if (!currentItem) {\n    return undefined;\n  } // ... more precisely at the beginning of the current item\n\n\n  if (!selection.isAtStartOf(currentItem)) {\n    return undefined;\n  }\n\n  event.preventDefault();\n  return (0, _changes.unwrapList)(opts, change);\n}\n\nexports.default = onBackspace;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/handlers/onBackspace.js?");
+eval("\n\nvar TablePosition = __webpack_require__(/*! ../TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n/**\n * Toggles table headers on / off\n *\n * @param {Object} opts\n * @param {Slate.Editor} editor\n * @return {Slate.Editor}\n */\n\n\nfunction toggleHeaders(opts, editor) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n  var table = pos.table;\n  var currentSetting = !!table.get('data').get('headless');\n  editor.setNodeByKey(table.key, {\n    data: {\n      headless: !currentSetting\n    }\n  });\n  return editor;\n}\n\nmodule.exports = toggleHeaders;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/changes/toggleHeaders.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/handlers/onEnter.js":
-/*!***************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/handlers/onEnter.js ***!
-  \***************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/createCell.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/createCell.js ***!
+  \**********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-list/dist/changes/index.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * User pressed Enter in an editor\n *\n * Enter in a list item should split the list item\n * Enter in an empty list item should remove it\n * Shift+Enter in a list item should make a new line\n */\n\n\nfunction onEnter(event, change, editor, opts) {\n  // Pressing Shift+Enter\n  // should split block normally\n  if (event.shiftKey) {\n    return undefined;\n  }\n\n  var value = change.value;\n  var currentItem = (0, _utils.getCurrentItem)(opts, value); // Not in a list\n\n  if (!currentItem) {\n    return undefined;\n  }\n\n  event.preventDefault(); // If expanded, delete first.\n\n  if (value.isExpanded) {\n    change.delete();\n  }\n\n  if (currentItem.isEmpty) {\n    // Block is empty, we exit the list\n    if ((0, _utils.getItemDepth)(opts, value) > 1) {\n      return (0, _changes.decreaseItemDepth)(opts, change);\n    } // Exit list\n\n\n    return (0, _changes.unwrapList)(opts, change);\n  } // Split list item\n\n\n  return (0, _changes.splitListItem)(opts, change);\n}\n\nexports.default = onEnter;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/handlers/onEnter.js?");
+eval("\n\nvar Slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar Text = Slate.Text;\n/**\n * Create a new cell\n * @param {String} type\n * @param {String} text?\n * @return {Slate.Node}\n */\n\nfunction createCell(opts, text) {\n  text = text || '';\n  var typeCell = opts.typeCell,\n      typeContent = opts.typeContent;\n  return Slate.Block.create({\n    type: typeCell,\n    nodes: [Slate.Block.create({\n      type: typeContent,\n      nodes: [Text.fromJSON({\n        object: 'text',\n        text: text\n      })]\n    })]\n  });\n}\n\nmodule.exports = createCell;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/createCell.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/handlers/onTab.js":
-/*!*************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/handlers/onTab.js ***!
-  \*************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/createRow.js":
+/*!*********************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/createRow.js ***!
+  \*********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-list/dist/changes/index.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * User pressed Tab in an editor.\n * Tab       -> Increase item depth if inside a list item\n * Shift+Tab -> Decrease item depth if inside a list item\n */\n\n\nfunction onTab(event, change, editor, opts) {\n  var value = change.value;\n  var isCollapsed = value.isCollapsed;\n\n  if (!isCollapsed || !(0, _utils.getCurrentItem)(opts, value)) {\n    return undefined;\n  } // Shift+tab reduce depth\n\n\n  if (event.shiftKey) {\n    event.preventDefault();\n    return (0, _changes.decreaseItemDepth)(opts, change);\n  } // Tab increases depth\n\n\n  event.preventDefault();\n  return (0, _changes.increaseItemDepth)(opts, change);\n}\n\nexports.default = onTab;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/handlers/onTab.js?");
+eval("\n\nvar Immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar Slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar createCell = __webpack_require__(/*! ./createCell */ \"./node_modules/slate-deep-table/dist/createCell.js\");\n/**\n * Create a new row block\n *\n * @param {Object} opts\n * @param {Number} columns\n * @param {Function} textGetter\n * @return {State.Block}\n */\n\n\nfunction createRow(opts, columns, textGetter) {\n  var cellNodes = Immutable.Range(0, columns).map(function (i) {\n    return createCell(opts, textGetter ? textGetter(i) : '');\n  }).toList();\n  return Slate.Block.create({\n    type: opts.typeRow,\n    nodes: cellNodes\n  });\n}\n\nmodule.exports = createRow;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/createRow.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/index.js":
-/*!****************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/index.js ***!
-  \****************************************************/
+/***/ "./node_modules/slate-deep-table/dist/createTable.js":
+/*!***********************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/createTable.js ***!
+  \***********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _options = __webpack_require__(/*! ./options */ \"./node_modules/slate-edit-list/dist/options.js\");\n\nvar _options2 = _interopRequireDefault(_options);\n\nvar _handlers = __webpack_require__(/*! ./handlers */ \"./node_modules/slate-edit-list/dist/handlers/index.js\");\n\nvar _core = __webpack_require__(/*! ./core */ \"./node_modules/slate-edit-list/dist/core.js\");\n\nvar _core2 = _interopRequireDefault(_core);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar KEY_ENTER = 'Enter';\nvar KEY_TAB = 'Tab';\nvar KEY_BACKSPACE = 'Backspace';\n/**\n * A Slate plugin to handle keyboard events in lists.\n */\n\nfunction EditList() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  opts = new _options2.default(opts);\n  var corePlugin = (0, _core2.default)(opts);\n  return _extends({}, corePlugin, {\n    onKeyDown: onKeyDown.bind(null, opts)\n  });\n}\n/**\n * User is pressing a key in the editor\n */\n\n\nfunction onKeyDown(opts, event, change, editor) {\n  var args = [event, change, editor, opts];\n\n  switch (event.key) {\n    case KEY_ENTER:\n      return _handlers.onEnter.apply(undefined, args);\n\n    case KEY_TAB:\n      return _handlers.onTab.apply(undefined, args);\n\n    case KEY_BACKSPACE:\n      return _handlers.onBackspace.apply(undefined, args);\n\n    default:\n      return undefined;\n  }\n}\n\nexports.default = EditList;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/index.js?");
+eval("\n\nvar _require = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\"),\n    Range = _require.Range;\n\nvar Slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar createRow = __webpack_require__(/*! ./createRow */ \"./node_modules/slate-deep-table/dist/createRow.js\");\n/**\n * Create a table\n *\n * @param {Object} opts\n * @param {Number} columns\n * @param {Number} rows\n * @param {Function} textGetter\n * @return {Slate.Block}\n */\n\n\nfunction createTable(opts, columns, rows, textGetter) {\n  var rowNodes = Range(0, rows).map(function (i) {\n    return createRow(opts, columns, textGetter ? textGetter.bind(null, i) : null);\n  }).toList();\n  return Slate.Block.create({\n    type: opts.typeTable,\n    nodes: rowNodes,\n    data: {}\n  });\n}\n\nmodule.exports = createTable;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/createTable.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/options.js":
-/*!******************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/options.js ***!
-  \******************************************************/
+/***/ "./node_modules/slate-deep-table/dist/defaultRenderers.js":
+/*!****************************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/defaultRenderers.js ***!
+  \****************************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * The plugin options\n */\n\n\nvar Options = function (_Record) {\n  _inherits(Options, _Record);\n\n  function Options() {\n    _classCallCheck(this, Options);\n\n    return _possibleConstructorReturn(this, (Options.__proto__ || Object.getPrototypeOf(Options)).apply(this, arguments));\n  }\n\n  return Options;\n}((0, _immutable.Record)({\n  types: ['ul_list', 'ol_list'],\n  typeItem: 'list_item',\n  typeDefault: 'paragraph',\n  canMerge: function canMerge(a, b) {\n    return a.type === b.type;\n  }\n}));\n\nexports.default = Options;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/options.js?");
+eval("\n\nvar React = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/**\n * split rows into thead contens and body contents,\n * unless \"headless\" option is set\n */\n\n\nvar splitHeader = function splitHeader(props) {\n  var rows = props.children;\n  var header = !props.node.get('data').get('headless');\n\n  if (!header || !rows || !rows.length || rows.length === 1) {\n    return {\n      header: null,\n      rows: rows\n    };\n  }\n\n  return {\n    header: rows[0],\n    rows: rows.slice(1)\n  };\n};\n/**\n * default renderers for easier use in your own schema\n * @param {Object} opts The same opts passed into plugin instance\n */\n\n\nvar makeRenderers = function makeRenderers() {\n  var opts = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  return function (props, editor, next) {\n    switch (props.node.type) {\n      case 'paragraph':\n        return React.createElement('p', props.attributes, props.children);\n\n      case 'heading':\n        return React.createElement('h1', props.attributes, props.children);\n\n      case 'subheading':\n        return React.createElement('h2', props.attributes, props.children);\n\n      case opts.typeTable:\n        var _splitHeader = splitHeader(props),\n            header = _splitHeader.header,\n            rows = _splitHeader.rows;\n\n        return React.createElement('table', null, header && React.createElement('thead', props.attributes, header), React.createElement('tbody', props.attributes, rows));\n\n      case opts.typeRow:\n        return React.createElement('tr', props.attributes, props.children);\n\n      case opts.typeCell:\n        return React.createElement('td', props.attributes, props.children);\n\n      default:\n        return next();\n    }\n  };\n};\n\nmodule.exports = makeRenderers;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/defaultRenderers.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/utils/getCurrentItem.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/getCurrentItem.js ***!
-  \*******************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/index.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/index.js ***!
+  \*****************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/**\n * Return the current list item, from current selection or from a node.\n */\n\n\nfunction getCurrentItem(opts, value, block) {\n  var document = value.document;\n\n  if (!block) {\n    if (!value.selection.startKey) return null;\n    block = value.startBlock;\n  }\n\n  var parent = document.getParent(block.key);\n  return parent && parent.type === opts.typeItem ? parent : null;\n}\n\nexports.default = getCurrentItem;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/getCurrentItem.js?");
+eval("\n\nfunction _toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n}\n\nvar insertTable = __webpack_require__(/*! ./changes/insertTable */ \"./node_modules/slate-deep-table/dist/changes/insertTable.js\");\n\nvar insertRow = __webpack_require__(/*! ./changes/insertRow */ \"./node_modules/slate-deep-table/dist/changes/insertRow.js\");\n\nvar removeRow = __webpack_require__(/*! ./changes/removeRow */ \"./node_modules/slate-deep-table/dist/changes/removeRow.js\");\n\nvar insertColumn = __webpack_require__(/*! ./changes/insertColumn */ \"./node_modules/slate-deep-table/dist/changes/insertColumn.js\");\n\nvar removeColumn = __webpack_require__(/*! ./changes/removeColumn */ \"./node_modules/slate-deep-table/dist/changes/removeColumn.js\");\n\nvar removeTable = __webpack_require__(/*! ./changes/removeTable */ \"./node_modules/slate-deep-table/dist/changes/removeTable.js\");\n\nvar moveTableSelection = __webpack_require__(/*! ./changes/moveSelection */ \"./node_modules/slate-deep-table/dist/changes/moveSelection.js\");\n\nvar moveTableSelectionBy = __webpack_require__(/*! ./changes/moveSelectionBy */ \"./node_modules/slate-deep-table/dist/changes/moveSelectionBy.js\");\n\nvar toggleTableHeaders = __webpack_require__(/*! ./changes/toggleHeaders */ \"./node_modules/slate-deep-table/dist/changes/toggleHeaders.js\");\n\nvar TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n\nvar onTab = __webpack_require__(/*! ./onTab */ \"./node_modules/slate-deep-table/dist/onTab.js\");\n\nvar onUpDown = __webpack_require__(/*! ./onUpDown */ \"./node_modules/slate-deep-table/dist/onUpDown.js\");\n\nvar makeSchema = __webpack_require__(/*! ./makeSchema */ \"./node_modules/slate-deep-table/dist/makeSchema.js\");\n\nvar makeRenderers = __webpack_require__(/*! ./defaultRenderers */ \"./node_modules/slate-deep-table/dist/defaultRenderers.js\");\n\nvar KEY_TAB = 'Tab';\nvar KEY_DOWN = 'ArrowUp';\nvar KEY_UP = 'ArrowDown';\n/**\n * @param {String} opts.typeTable The type of table blocks\n * @param {String} opts.typeRow The type of row blocks\n * @param {String} opts.typeCell The type of cell blocks\n * @param {String} opts.typeContent The type of default content blocks\n */\n\nfunction EditTable(opts) {\n  opts = opts || {};\n  opts.typeTable = opts.typeTable || 'table';\n  opts.typeRow = opts.typeRow || 'table_row';\n  opts.typeCell = opts.typeCell || 'table_cell';\n  opts.typeContent = opts.typeContent || 'paragraph';\n  /**\n   * Is the selection in a table\n   */\n\n  function isSelectionInTable(editor) {\n    var startBlock = editor.value.startBlock;\n    if (!startBlock) return false;\n    return TablePosition.isInCell(editor.value, startBlock, opts);\n  }\n  /**\n   * Bind an editor command to our instance options as first arg\n   */\n\n\n  function bindEditor(fn) {\n    return function (editor) {\n      if (!isSelectionInTable(editor)) {\n        return editor;\n      }\n\n      for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n        args[_key - 1] = arguments[_key];\n      }\n\n      return fn.apply(undefined, _toConsumableArray([opts, editor].concat(args)));\n    };\n  }\n  /**\n   * User is pressing a key in the editor\n   */\n\n\n  function onKeyDown(event, editor, next) {\n    // Only handle events in cells\n    if (!isSelectionInTable(editor)) {\n      return next();\n    } // Build arguments list\n\n\n    var args = [event, editor, opts];\n\n    switch (event.key) {\n      case KEY_TAB:\n        return onTab.apply(undefined, args);\n\n      case KEY_DOWN:\n      case KEY_UP:\n        return onUpDown.apply(undefined, args);\n    }\n\n    return next();\n  }\n\n  var _makeSchema = makeSchema(opts),\n      schema = _makeSchema.schema,\n      normalizeNode = _makeSchema.normalizeNode;\n\n  var renderNode = makeRenderers(opts);\n  return {\n    onKeyDown: onKeyDown,\n    schema: schema,\n    normalizeNode: normalizeNode,\n    renderNode: renderNode,\n    queries: {\n      isSelectionInTable: isSelectionInTable\n    },\n    commands: {\n      insertTable: insertTable.bind(null, opts),\n      insertRow: bindEditor(insertRow),\n      removeRow: bindEditor(removeRow),\n      insertColumn: bindEditor(insertColumn),\n      removeColumn: bindEditor(removeColumn),\n      removeTable: bindEditor(removeTable),\n      moveTableSelection: bindEditor(moveTableSelection),\n      moveTableSelectionBy: bindEditor(moveTableSelectionBy),\n      toggleTableHeaders: bindEditor(toggleTableHeaders)\n    }\n  };\n}\n\nmodule.exports = EditTable;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/index.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/utils/getCurrentList.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/getCurrentList.js ***!
-  \*******************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/makeSchema.js":
+/*!**********************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/makeSchema.js ***!
+  \**********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _getCurrentItem = __webpack_require__(/*! ./getCurrentItem */ \"./node_modules/slate-edit-list/dist/utils/getCurrentItem.js\");\n\nvar _getCurrentItem2 = _interopRequireDefault(_getCurrentItem);\n\nvar _getListForItem = __webpack_require__(/*! ./getListForItem */ \"./node_modules/slate-edit-list/dist/utils/getListForItem.js\");\n\nvar _getListForItem2 = _interopRequireDefault(_getListForItem);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Return the parent list block, from current selection or from a node (paragraph in a list item).\n */\n\n\nfunction getCurrentList(opts, value, block) {\n  var item = (0, _getCurrentItem2.default)(opts, value, block);\n\n  if (!item) {\n    return null;\n  }\n\n  return (0, _getListForItem2.default)(opts, value, item);\n}\n\nexports.default = getCurrentList;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/getCurrentList.js?");
+eval("\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n\nvar Slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\"); // const { SchemaViolations } = Slate;\n\n\nvar _require = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\"),\n    Range = _require.Range,\n    List = _require.List;\n\nvar createCell = __webpack_require__(/*! ./createCell */ \"./node_modules/slate-deep-table/dist/createCell.js\");\n\nvar createRow = __webpack_require__(/*! ./createRow */ \"./node_modules/slate-deep-table/dist/createRow.js\");\n\nvar SchemaViolations = {\n  ChildRequired: 'child_required',\n  ChildObjectInvalid: 'child_object_invalid',\n  ChildTypeInvalid: 'child_type_invalid',\n  ParentTypeInvalid: 'parent_type_invalid'\n  /**\n   * convenience methods used below\n   */\n\n};\n\nvar insertChild = function insertChild(editor, error, type) {\n  return editor.insertNodeByKey(error.node.key, error.index, {\n    object: 'block',\n    type: type\n  });\n};\n\nvar removeChild = function removeChild(editor, error) {\n  return editor.removeNodeByKey(error.child.key);\n};\n\nvar wrapWithParent = function wrapWithParent(editor, error, type) {\n  return editor.wrapBlockByKey(error.node.key, type);\n};\n/**\n * Create a schema for tables\n * @param {String} opts.typeTable The type of table blocks\n * @param {String} opts.typeRow The type of row blocks\n * @param {String} opts.typeCell The type of cell blocks\n * @param {String} opts.typeContent The default type of content blocks in cells\n * @return {Object} A schema definition with rules to normalize tables\n */\n\n\nfunction makeSchema(opts) {\n  var _blocks;\n\n  var schema = {\n    blocks: (_blocks = {}, _defineProperty(_blocks, opts.typeCell, {\n      parent: {\n        type: opts.typeRow\n        /* object: block in here stops it invalidating them, why? maybe the rules are OR */\n\n      },\n      nodes: [{\n        match: {\n          object: 'block'\n        },\n        min: 1\n      }],\n      normalize: function normalize(editor, error) {\n        // reason, ctx\n        // enforce cells must contain blocks, insert or wrap if not\n        switch (error.code) {\n          case SchemaViolations.ChildRequired:\n            return editor.command(insertChild, error, opts.typeContent);\n\n          case SchemaViolations.ChildObjectInvalid:\n            // wrap non-block children with a block\n            return editor.replaceNodeByKey(error.child.key, {\n              object: 'block',\n              type: opts.typeContent,\n              nodes: error.node.mapDescendants(function (n) {\n                return n.regenerateKey();\n              }).nodes\n            });\n\n          case SchemaViolations.ParentTypeInvalid:\n            return editor.command(wrapWithParent, error, opts.typeRow);\n        }\n      }\n    }), _defineProperty(_blocks, opts.typeRow, {\n      parent: {\n        type: opts.typeTable\n      },\n      nodes: [{\n        match: {\n          object: 'block',\n          type: opts.typeCell\n        },\n        min: 1\n      }],\n      normalize: function normalize(editor, error) {\n        // enforce rows must contain cells, drop all else\n        switch (error.code) {\n          case SchemaViolations.ChildRequired:\n            return editor.command(insertChild, error, opts.typeCell);\n\n          case SchemaViolations.ChildObjectInvalid:\n            return editor.replaceNodeByKey(error.child.key, {\n              object: 'block',\n              type: opts.typeCell\n            });\n\n          case SchemaViolations.ChildTypeInvalid:\n            // i wonder why we remove it instead of converting it to a cell.\n            return editor.command(removeChild, error);\n\n          case SchemaViolations.ParentTypeInvalid:\n            return editor.command(wrapWithParent, error, opts.typeTable);\n        }\n      }\n    }), _defineProperty(_blocks, opts.typeTable, {\n      nodes: [{\n        match: {\n          object: 'block',\n          type: opts.typeRow\n        },\n        min: 1\n      }],\n      normalize: function normalize(editor, error) {\n        // enforce rows must contain cells, drop all else\n        switch (error.code) {\n          case SchemaViolations.ChildRequired:\n            return editor.command(insertChild, error, opts.typeRow);\n\n          case SchemaViolations.ChildObjectInvalid:\n            return editor.command(removeChild, error).command(insertChild, error, opts.typeRow);\n\n          case SchemaViolations.ChildTypeInvalid:\n            return editor.command(removeChild, error);\n        }\n      }\n    }), _blocks)\n  };\n\n  var isRow = function isRow(node) {\n    return node.type === opts.typeRow;\n  };\n\n  var isCell = function isCell(node) {\n    return node.type === opts.typeCell;\n  };\n\n  var countCells = function countCells(row) {\n    return row.nodes.count(isCell);\n  };\n\n  var normalizeNode = function normalizeNode(node, editor, next) {\n    if (node.object != 'block') return next();\n    if (node.type !== opts.typeTable) return next();\n    var table = node;\n    var rows = table.nodes.filter(isRow); // The number of column this table has\n\n    var columns = rows.reduce(function (count, row) {\n      return Math.max(count, countCells(row));\n    }, 1); // Min 1 column\n\n    var invalidRows = rows.map(function (row) {\n      var cells = countCells(row);\n      var invalids = row.nodes.filterNot(isCell); // Row is valid: right count of cells and no extra node\n\n      if (invalids.isEmpty() && cells === columns) {\n        return null;\n      } // Otherwise, remove the invalids and append the missing cells\n\n\n      return {\n        row: row,\n        invalids: invalids,\n        add: columns - cells\n      };\n    }).filter(Boolean);\n    if (invalidRows.size === 0) return next();\n    return function (editor) {\n      return invalidRows.reduce(function (tr, _ref) {\n        var row = _ref.row,\n            invalids = _ref.invalids,\n            add = _ref.add;\n        tr = invalids.reduce(function (t, child) {\n          return t.removeNodeByKey(child.key);\n        }, tr);\n        tr = Range(0, add).reduce(function (t) {\n          var cell = createCell(opts);\n          return t.insertNodeByKey(row.key, 0, cell);\n        }, tr);\n        return tr;\n      }, editor);\n    };\n  };\n\n  return {\n    schema: schema,\n    normalizeNode: normalizeNode\n  };\n}\n\nmodule.exports = makeSchema;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/makeSchema.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/utils/getItemDepth.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/getItemDepth.js ***!
-  \*****************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/onTab.js":
+/*!*****************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/onTab.js ***!
+  \*****************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _getCurrentItem = __webpack_require__(/*! ./getCurrentItem */ \"./node_modules/slate-edit-list/dist/utils/getCurrentItem.js\");\n\nvar _getCurrentItem2 = _interopRequireDefault(_getCurrentItem);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Get depth of current block in a document list\n */\n\n\nfunction getItemDepth(opts, value, block) {\n  var document = value.document,\n      startBlock = value.startBlock;\n  block = block || startBlock;\n  var currentItem = (0, _getCurrentItem2.default)(opts, value, block);\n\n  if (!currentItem) {\n    return 0;\n  }\n\n  var list = document.getParent(currentItem.key);\n  return 1 + getItemDepth(opts, value, list);\n}\n\nexports.default = getItemDepth;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/getItemDepth.js?");
+eval("\n\nvar TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n\nvar moveSelectionBy = __webpack_require__(/*! ./changes/moveSelectionBy */ \"./node_modules/slate-deep-table/dist/changes/moveSelectionBy.js\");\n\nvar insertRow = __webpack_require__(/*! ./changes/insertRow */ \"./node_modules/slate-deep-table/dist/changes/insertRow.js\");\n/**\n * Select all text of current block.\n * @param {Slate.Editor} editor\n * @return {Slate.Editor}\n */\n\n\nfunction selectAllText(editor) {\n  var value = editor.value;\n  var startBlock = value.startBlock;\n  return editor.moveToRangeOfNode(startBlock);\n}\n/**\n * Pressing \"Tab\" moves the cursor to the next cell\n * and select the whole text\n */\n\n\nfunction onTab(event, editor, opts) {\n  var _editor = editor,\n      value = _editor.value;\n  event.preventDefault();\n  var direction = event.shiftKey ? -1 : +1; // Create new row if needed\n\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n\n  if (pos.isFirstCell() && direction === -1) {\n    editor = insertRow(opts, editor, 0);\n  } else if (pos.isLastCell() && direction === 1) {\n    editor = insertRow(opts, editor);\n  } // Move\n\n\n  editor = moveSelectionBy(opts, editor, direction, 0); // Select all cell.\n\n  return selectAllText(editor);\n}\n\nmodule.exports = onTab;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/onTab.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/utils/getItemsAtRange.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/getItemsAtRange.js ***!
-  \********************************************************************/
+/***/ "./node_modules/slate-deep-table/dist/onUpDown.js":
+/*!********************************************************!*\
+  !*** ./node_modules/slate-deep-table/dist/onUpDown.js ***!
+  \********************************************************/
 /*! no static exports found */
 /***/ (function(module, exports, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _isList = __webpack_require__(/*! ./isList */ \"./node_modules/slate-edit-list/dist/utils/isList.js\");\n\nvar _isList2 = _interopRequireDefault(_isList);\n\nvar _getCurrentItem = __webpack_require__(/*! ./getCurrentItem */ \"./node_modules/slate-edit-list/dist/utils/getCurrentItem.js\");\n\nvar _getCurrentItem2 = _interopRequireDefault(_getCurrentItem);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Return the list of items at the given range. The returned items are\n * the highest list item blocks that cover the range.\n *\n * Returns an empty list if no list of items can cover the range\n */\n\n\nfunction getItemsAtRange(opts, value, range) {\n  range = range || value.selection;\n\n  if (!range.startKey) {\n    return (0, _immutable.List)();\n  }\n\n  var document = value.document;\n  var startBlock = document.getClosestBlock(range.startKey);\n  var endBlock = document.getClosestBlock(range.endKey);\n\n  if (startBlock === endBlock) {\n    var item = (0, _getCurrentItem2.default)(opts, value, startBlock);\n    return item ? (0, _immutable.List)([item]) : (0, _immutable.List)();\n  }\n\n  var ancestor = document.getCommonAncestor(startBlock.key, endBlock.key);\n\n  if ((0, _isList2.default)(opts, ancestor)) {\n    var startPath = ancestor.getPath(startBlock.key);\n    var endPath = ancestor.getPath(endBlock.key);\n    return ancestor.nodes.slice(startPath[0], endPath[0] + 1);\n  } else if (ancestor.type === opts.typeItem) {\n    // The ancestor is the highest list item that covers the range\n    return (0, _immutable.List)([ancestor]);\n  } // No list of items can cover the range\n\n\n  return (0, _immutable.List)();\n}\n\nexports.default = getItemsAtRange;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/getItemsAtRange.js?");
+eval("\n\nvar TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-deep-table/dist/TablePosition.js\");\n\nvar moveSelectionBy = __webpack_require__(/*! ./changes/moveSelectionBy */ \"./node_modules/slate-deep-table/dist/changes/moveSelectionBy.js\");\n\nfunction onUpDown(event, editor, opts) {\n  var _editor = editor,\n      value = _editor.value;\n  var direction = event.key === 'ArrowUp' ? -1 : +1;\n  var startBlock = value.startBlock;\n  var pos = TablePosition.create(value, startBlock, opts);\n\n  if (pos.isFirstRow() && direction === -1 || pos.isLastRow() && direction === +1) {\n    // Let the default behavior move out of the table\n    return editor;\n  } else {\n    event.preventDefault();\n    editor = moveSelectionBy(opts, editor, 0, event.key === 'ArrowUp' ? -1 : +1);\n    return editor;\n  }\n}\n\nmodule.exports = onUpDown;\n\n//# sourceURL=webpack:///./node_modules/slate-deep-table/dist/onUpDown.js?");
 
 /***/ }),
 
-/***/ "./node_modules/slate-edit-list/dist/utils/getListForItem.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/getListForItem.js ***!
-  \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
+/***/ "./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js":
+/*!****************************************************************************!*\
+  !*** ./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js ***!
+  \****************************************************************************/
+/*! exports provided: IS_CHROME, IS_OPERA, IS_FIREFOX, IS_SAFARI, IS_IE, IS_EDGE, IS_ANDROID, IS_IOS, IS_MAC, IS_WINDOWS, ANDROID_API_VERSION, HAS_INPUT_EVENTS_LEVEL_1, HAS_INPUT_EVENTS_LEVEL_2 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _isList = __webpack_require__(/*! ./isList */ \"./node_modules/slate-edit-list/dist/utils/isList.js\");\n\nvar _isList2 = _interopRequireDefault(_isList);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Return the parent list block for an item block.\n */\n\n\nfunction getListForItem(opts, value, item) {\n  var document = value.document;\n  var parent = document.getParent(item.key);\n  return parent && (0, _isList2.default)(opts, parent) ? parent : null;\n}\n\nexports.default = getListForItem;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/getListForItem.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/utils/getPreviousItem.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/getPreviousItem.js ***!
-  \********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _getCurrentItem = __webpack_require__(/*! ./getCurrentItem */ \"./node_modules/slate-edit-list/dist/utils/getCurrentItem.js\");\n\nvar _getCurrentItem2 = _interopRequireDefault(_getCurrentItem);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Return the previous item, from current selection or from a node.\n */\n\n\nfunction getPreviousItem(opts, value, block) {\n  var document = value.document,\n      startBlock = value.startBlock;\n  block = block || startBlock;\n  var currentItem = (0, _getCurrentItem2.default)(opts, value, block);\n\n  if (!currentItem) {\n    return null;\n  }\n\n  var previousSibling = document.getPreviousSibling(currentItem.key);\n\n  if (!previousSibling) {\n    return null;\n  } else if (previousSibling.type === opts.typeItem) {\n    return previousSibling;\n  }\n\n  return null;\n}\n\nexports.default = getPreviousItem;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/getPreviousItem.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/utils/index.js":
-/*!**********************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/index.js ***!
-  \**********************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.isSelectionInList = exports.isList = exports.getPreviousItem = exports.getListForItem = exports.getItemsAtRange = exports.getItemDepth = exports.getCurrentList = exports.getCurrentItem = undefined;\n\nvar _getCurrentItem = __webpack_require__(/*! ./getCurrentItem */ \"./node_modules/slate-edit-list/dist/utils/getCurrentItem.js\");\n\nvar _getCurrentItem2 = _interopRequireDefault(_getCurrentItem);\n\nvar _getCurrentList = __webpack_require__(/*! ./getCurrentList */ \"./node_modules/slate-edit-list/dist/utils/getCurrentList.js\");\n\nvar _getCurrentList2 = _interopRequireDefault(_getCurrentList);\n\nvar _getItemDepth = __webpack_require__(/*! ./getItemDepth */ \"./node_modules/slate-edit-list/dist/utils/getItemDepth.js\");\n\nvar _getItemDepth2 = _interopRequireDefault(_getItemDepth);\n\nvar _getItemsAtRange = __webpack_require__(/*! ./getItemsAtRange */ \"./node_modules/slate-edit-list/dist/utils/getItemsAtRange.js\");\n\nvar _getItemsAtRange2 = _interopRequireDefault(_getItemsAtRange);\n\nvar _getListForItem = __webpack_require__(/*! ./getListForItem */ \"./node_modules/slate-edit-list/dist/utils/getListForItem.js\");\n\nvar _getListForItem2 = _interopRequireDefault(_getListForItem);\n\nvar _getPreviousItem = __webpack_require__(/*! ./getPreviousItem */ \"./node_modules/slate-edit-list/dist/utils/getPreviousItem.js\");\n\nvar _getPreviousItem2 = _interopRequireDefault(_getPreviousItem);\n\nvar _isList = __webpack_require__(/*! ./isList */ \"./node_modules/slate-edit-list/dist/utils/isList.js\");\n\nvar _isList2 = _interopRequireDefault(_isList);\n\nvar _isSelectionInList = __webpack_require__(/*! ./isSelectionInList */ \"./node_modules/slate-edit-list/dist/utils/isSelectionInList.js\");\n\nvar _isSelectionInList2 = _interopRequireDefault(_isSelectionInList);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.getCurrentItem = _getCurrentItem2.default;\nexports.getCurrentList = _getCurrentList2.default;\nexports.getItemDepth = _getItemDepth2.default;\nexports.getItemsAtRange = _getItemsAtRange2.default;\nexports.getListForItem = _getListForItem2.default;\nexports.getPreviousItem = _getPreviousItem2.default;\nexports.isList = _isList2.default;\nexports.isSelectionInList = _isSelectionInList2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/utils/isList.js":
-/*!***********************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/isList.js ***!
-  \***********************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/**\n * True if the node is a list container\n */\n\n\nfunction isList(opts, node) {\n  return opts.types.includes(node.type);\n}\n\nexports.default = isList;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/isList.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/utils/isSelectionInList.js":
-/*!**********************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/utils/isSelectionInList.js ***!
-  \**********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _getItemsAtRange = __webpack_require__(/*! ./getItemsAtRange */ \"./node_modules/slate-edit-list/dist/utils/getItemsAtRange.js\");\n\nvar _getItemsAtRange2 = _interopRequireDefault(_getItemsAtRange);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * True if selection is inside a list (and can be unwrapped)\n */\n\n\nfunction isSelectionInList(opts, value) {\n  return !(0, _getItemsAtRange2.default)(opts, value).isEmpty();\n}\n\nexports.default = isSelectionInList;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/utils/isSelectionInList.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/validation/index.js":
-/*!***************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/validation/index.js ***!
-  \***************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.validateNode = exports.schema = undefined;\n\nvar _schema = __webpack_require__(/*! ./schema */ \"./node_modules/slate-edit-list/dist/validation/schema.js\");\n\nvar _schema2 = _interopRequireDefault(_schema);\n\nvar _validateNode = __webpack_require__(/*! ./validateNode */ \"./node_modules/slate-edit-list/dist/validation/validateNode.js\");\n\nvar _validateNode2 = _interopRequireDefault(_validateNode);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.schema = _schema2.default;\nexports.validateNode = _validateNode2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/validation/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/validation/schema.js":
-/*!****************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/validation/schema.js ***!
-  \****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n/**\n * Create a schema definition with rules to normalize lists\n */\n\n\nfunction schema(opts) {\n  var constructedSchema = {\n    blocks: _defineProperty({}, opts.typeItem, {\n      parent: {\n        types: opts.types\n      },\n      nodes: [{\n        objects: ['block']\n      }],\n      normalize: normalize({\n        parent_type_invalid: function parent_type_invalid(change, context) {\n          return change.unwrapBlockByKey(context.node.key, {\n            normalize: false\n          });\n        },\n        child_object_invalid: function child_object_invalid(change, context) {\n          return wrapChildrenInDefaultBlock(opts, change, context.node);\n        }\n      })\n    })\n  }; // validate all list types, ensure they only have list item children\n\n  opts.types.forEach(function (type) {\n    constructedSchema.blocks[type] = {\n      nodes: [{\n        types: [opts.typeItem]\n      }],\n      normalize: normalize({\n        child_type_invalid: function child_type_invalid(change, context) {\n          return change.wrapBlockByKey(context.child.key, opts.typeItem, {\n            normalize: false\n          });\n        }\n      })\n    };\n  });\n  return constructedSchema;\n}\n/*\n * Allows to define a normalize function through a keyed collection of functions\n */\n\n\nfunction normalize(reasons) {\n  return function (change, reason, context) {\n    var reasonFn = reasons[reason];\n\n    if (reasonFn) {\n      reasonFn(change, context);\n    }\n  };\n}\n/**\n * Wraps all child of a node in the default block type.\n * Returns a change, for chaining purposes\n */\n\n\nfunction wrapChildrenInDefaultBlock(opts, change, node) {\n  change.wrapBlockByKey(node.nodes.first().key, opts.typeDefault, {\n    normalize: false\n  });\n  var wrapper = change.value.document.getDescendant(node.key).nodes.first(); // Add in the remaining items\n\n  node.nodes.rest().forEach(function (child, index) {\n    return change.moveNodeByKey(child.key, wrapper.key, index + 1, {\n      normalize: false\n    });\n  });\n  return change;\n}\n\nexports.default = schema;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/validation/schema.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-list/dist/validation/validateNode.js":
-/*!**********************************************************************!*\
-  !*** ./node_modules/slate-edit-list/dist/validation/validateNode.js ***!
-  \**********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-list/dist/utils/index.js\");\n/**\n * Create a schema definition with rules to normalize lists\n */\n\n\nfunction validateNode(opts) {\n  return function (node) {\n    return joinAdjacentLists(opts, node);\n  };\n}\n/**\n * A rule that joins adjacent lists of the same type\n */\n\n\nfunction joinAdjacentLists(opts, node) {\n  if (node.object !== 'document' && node.object !== 'block') {\n    return undefined;\n  }\n\n  var invalids = node.nodes.map(function (child, i) {\n    if (!(0, _utils.isList)(opts, child)) return null;\n    var next = node.nodes.get(i + 1);\n\n    if (!next || !(0, _utils.isList)(opts, next) || !opts.canMerge(child, next)) {\n      return null;\n    }\n\n    return [child, next];\n  }).filter(Boolean);\n\n  if (invalids.isEmpty()) {\n    return undefined;\n  }\n  /**\n   * Join the list pairs\n   */\n  // We join in reverse order, so that multiple lists folds onto the first one\n\n\n  return function (change) {\n    invalids.reverse().forEach(function (pair) {\n      var _pair = _slicedToArray(pair, 2),\n          first = _pair[0],\n          second = _pair[1];\n\n      var updatedSecond = change.value.document.getDescendant(second.key);\n      updatedSecond.nodes.forEach(function (secondNode, index) {\n        change.moveNodeByKey(secondNode.key, first.key, first.nodes.size + index, {\n          normalize: false\n        });\n      });\n      change.removeNodeByKey(second.key, {\n        normalize: false\n      });\n    });\n  };\n}\n\nexports.default = validateNode;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-list/dist/validation/validateNode.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/clearCell.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/clearCell.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/**\n * Clear the content of the given cell\n */\n\n\nfunction clearCell(opts, change, cell) {\n  var newBlock = _slate.Block.create({\n    type: opts.typeContent\n  });\n\n  var nodes = cell.nodes; // Insert a new empty node\n\n  change.insertNodeByKey(cell.key, 0, newBlock, {\n    normalize: false\n  }); // Remove all previous nodes\n\n  nodes.forEach(function (node) {\n    change.removeNodeByKey(node.key);\n  });\n  change.normalizeNodeByKey(cell.key);\n  return change;\n}\n\nexports.default = clearCell;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/clearCell.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/index.js":
-/*!*************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/index.js ***!
-  \*************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.moveSelectionBy = exports.moveSelection = exports.clearCell = exports.removeTableByKey = exports.removeTable = exports.removeColumnByKey = exports.removeColumn = exports.insertColumn = exports.removeRowByKey = exports.removeRow = exports.insertRow = exports.insertTableFragmentAtRange = exports.insertTable = undefined;\n\nvar _insertTable = __webpack_require__(/*! ./insertTable */ \"./node_modules/slate-edit-table/dist/changes/insertTable.js\");\n\nvar _insertTable2 = _interopRequireDefault(_insertTable);\n\nvar _insertTableFragmentAtRange = __webpack_require__(/*! ./insertTableFragmentAtRange */ \"./node_modules/slate-edit-table/dist/changes/insertTableFragmentAtRange.js\");\n\nvar _insertTableFragmentAtRange2 = _interopRequireDefault(_insertTableFragmentAtRange);\n\nvar _insertRow = __webpack_require__(/*! ./insertRow */ \"./node_modules/slate-edit-table/dist/changes/insertRow.js\");\n\nvar _insertRow2 = _interopRequireDefault(_insertRow);\n\nvar _removeRow = __webpack_require__(/*! ./removeRow */ \"./node_modules/slate-edit-table/dist/changes/removeRow.js\");\n\nvar _removeRow2 = _interopRequireDefault(_removeRow);\n\nvar _insertColumn = __webpack_require__(/*! ./insertColumn */ \"./node_modules/slate-edit-table/dist/changes/insertColumn.js\");\n\nvar _insertColumn2 = _interopRequireDefault(_insertColumn);\n\nvar _removeColumn = __webpack_require__(/*! ./removeColumn */ \"./node_modules/slate-edit-table/dist/changes/removeColumn.js\");\n\nvar _removeColumn2 = _interopRequireDefault(_removeColumn);\n\nvar _removeTable = __webpack_require__(/*! ./removeTable */ \"./node_modules/slate-edit-table/dist/changes/removeTable.js\");\n\nvar _removeTable2 = _interopRequireDefault(_removeTable);\n\nvar _removeRowByKey = __webpack_require__(/*! ./removeRowByKey */ \"./node_modules/slate-edit-table/dist/changes/removeRowByKey.js\");\n\nvar _removeRowByKey2 = _interopRequireDefault(_removeRowByKey);\n\nvar _removeColumnByKey = __webpack_require__(/*! ./removeColumnByKey */ \"./node_modules/slate-edit-table/dist/changes/removeColumnByKey.js\");\n\nvar _removeColumnByKey2 = _interopRequireDefault(_removeColumnByKey);\n\nvar _removeTableByKey = __webpack_require__(/*! ./removeTableByKey */ \"./node_modules/slate-edit-table/dist/changes/removeTableByKey.js\");\n\nvar _removeTableByKey2 = _interopRequireDefault(_removeTableByKey);\n\nvar _clearCell = __webpack_require__(/*! ./clearCell */ \"./node_modules/slate-edit-table/dist/changes/clearCell.js\");\n\nvar _clearCell2 = _interopRequireDefault(_clearCell);\n\nvar _moveSelection = __webpack_require__(/*! ./moveSelection */ \"./node_modules/slate-edit-table/dist/changes/moveSelection.js\");\n\nvar _moveSelection2 = _interopRequireDefault(_moveSelection);\n\nvar _moveSelectionBy = __webpack_require__(/*! ./moveSelectionBy */ \"./node_modules/slate-edit-table/dist/changes/moveSelectionBy.js\");\n\nvar _moveSelectionBy2 = _interopRequireDefault(_moveSelectionBy);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.insertTable = _insertTable2.default;\nexports.insertTableFragmentAtRange = _insertTableFragmentAtRange2.default;\nexports.insertRow = _insertRow2.default;\nexports.removeRow = _removeRow2.default;\nexports.removeRowByKey = _removeRowByKey2.default;\nexports.insertColumn = _insertColumn2.default;\nexports.removeColumn = _removeColumn2.default;\nexports.removeColumnByKey = _removeColumnByKey2.default;\nexports.removeTable = _removeTable2.default;\nexports.removeTableByKey = _removeTableByKey2.default;\nexports.clearCell = _clearCell2.default;\nexports.moveSelection = _moveSelection2.default;\nexports.moveSelectionBy = _moveSelectionBy2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/insertColumn.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/insertColumn.js ***!
-  \********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _moveSelection = __webpack_require__(/*! ./moveSelection */ \"./node_modules/slate-edit-table/dist/changes/moveSelection.js\");\n\nvar _moveSelection2 = _interopRequireDefault(_moveSelection);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Insert a new column in current table\n */\n\n\nfunction insertColumn(opts, change, at, // Column index\ngetCell) {\n  var value = change.value;\n  var startKey = value.startKey;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  var table = pos.table;\n  var columnIndex = typeof at === 'undefined' ? pos.getColumnIndex() + 1 : at; // Insert the new cell\n\n  table.nodes.forEach(function (row, rowIndex) {\n    var newCell = getCell ? getCell(columnIndex, rowIndex) : (0, _utils.createCell)(opts);\n    change.insertNodeByKey(row.key, columnIndex, newCell, {\n      normalize: false\n    });\n  }); // Update the selection (not doing can break the undo)\n\n  return (0, _moveSelection2.default)(opts, change, pos.getColumnIndex() + 1, pos.getRowIndex());\n}\n\nexports.default = insertColumn;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/insertColumn.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/insertRow.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/insertRow.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Insert a new row in current table\n */\n\n\nfunction insertRow(opts, change, at, // row index\ngetRow // Generate the row yourself\n) {\n  var value = change.value;\n  var startKey = value.startKey;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  var table = pos.table; // Create a new row with the right count of cells\n\n  var columns = table.nodes.get(0).nodes.size;\n  var newRow = getRow ? getRow(columns) : (0, _utils.createRow)(opts, columns);\n\n  if (typeof at === 'undefined') {\n    at = pos.getRowIndex() + 1;\n  }\n\n  return change.insertNodeByKey(table.key, at, newRow).collapseToEndOf(newRow.nodes.get(pos.getColumnIndex()));\n}\n\nexports.default = insertRow;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/insertRow.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/insertTable.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/insertTable.js ***!
-  \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Insert a new table\n */\n\n\nfunction insertTable(opts, change) {\n  var columns = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 2;\n  var rows = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 2;\n  var getCellContent = arguments[4];\n  var value = change.value;\n  if (!value.selection.startKey) return change; // Create the table node\n\n  var table = (0, _utils.createTable)(opts, columns, rows, getCellContent);\n  return change.insertBlock(table);\n}\n\nexports.default = insertTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/insertTable.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/insertTableFragmentAtRange.js":
-/*!**********************************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/insertTableFragmentAtRange.js ***!
-  \**********************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Used when pasting a fragment of table into another one\n */\n\n\nfunction insertTableFragmentAtRange(opts, change, range, // This fragment should contain only one table,\nfragment) {\n  var insertedTable = fragment.nodes.first();\n\n  if (!(fragment.nodes.size === 1 && insertedTable && insertedTable.type === opts.typeTable)) {\n    throw new Error('Expected to insert a fragment containing one table');\n  }\n\n  var value = change.value;\n\n  var targetPosition = _utils.TablePosition.create(opts, value.document, value.selection.startKey);\n\n  var fragmentRows = insertedTable.nodes;\n  var fragmentHeight = fragmentRows.size;\n  var fragmentWidth = fragmentRows.first().nodes.size; // Insert columns and rows to accomodate the incoming pasted cells\n\n  var missingWidth = fragmentWidth + targetPosition.getColumnIndex() - targetPosition.getWidth();\n  var missingHeight = fragmentHeight + targetPosition.getRowIndex() - targetPosition.getHeight();\n\n  if (missingWidth > 0) {\n    // Add columns\n    Array(missingWidth).fill().forEach(function () {\n      (0, _changes.insertColumn)(opts, change, targetPosition.getWidth());\n    });\n  }\n\n  if (missingHeight > 0) {\n    // Add rows\n    Array(missingHeight).fill().forEach(function () {\n      (0, _changes.insertRow)(opts, change, targetPosition.getHeight());\n    });\n  } // Patch the inserted table over the target table, overwritting the cells\n\n\n  var existingTable = change.value.document.getDescendant(targetPosition.table.key);\n  fragmentRows.forEach(function (fragmentRow, fragmentRowIndex) {\n    fragmentRow.nodes.forEach(function (newCell, fragmentColumnIndex) {\n      var existingCell = existingTable.nodes.get(targetPosition.getRowIndex() + fragmentRowIndex).nodes.get(targetPosition.getColumnIndex() + fragmentColumnIndex);\n      change.replaceNodeByKey(existingCell.key, newCell, {\n        normalize: false\n      });\n    });\n  });\n  var lastPastedCell = fragmentRows.last().nodes.last();\n  return change.collapseToEndOf(lastPastedCell);\n}\n\nexports.default = insertTableFragmentAtRange;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/insertTableFragmentAtRange.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/moveSelection.js":
-/*!*********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/moveSelection.js ***!
-  \*********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Move selection to {x,y}\n */\n\n\nfunction moveSelection(opts, change, x, y) {\n  var value = change.value;\n  var startKey = value.startKey;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  if (!pos.isInCell()) {\n    throw new Error('moveSelection can only be applied from within a cell');\n  }\n\n  var table = pos.table;\n  var row = table.nodes.get(y);\n  var cell = row.nodes.get(x);\n  return change.collapseToStartOf(cell);\n}\n\nexports.default = moveSelection;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/moveSelection.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/moveSelectionBy.js":
-/*!***********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/moveSelectionBy.js ***!
-  \***********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Move selection by a {x,y} relative movement\n */\n\n\nfunction moveSelectionBy(opts, change, x, //  Move horizontally by x\ny // Move vertically by y\n) {\n  var value = change.value;\n  var startKey = value.startKey;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  if (!pos.isInCell()) {\n    throw new Error('moveSelectionBy can only be applied in a cell');\n  }\n\n  var rowIndex = pos.getRowIndex();\n  var colIndex = pos.getColumnIndex();\n  var width = pos.getWidth();\n  var height = pos.getHeight();\n\n  var _normPos = normPos(x + colIndex, y + rowIndex, width, height),\n      _normPos2 = _slicedToArray(_normPos, 2),\n      absX = _normPos2[0],\n      absY = _normPos2[1];\n\n  var isGoingUp = y < 0;\n\n  if (absX === -1) {\n    // Out of table\n    return change;\n  }\n\n  var table = pos.table;\n  var row = table.nodes.get(absY);\n  var cell = row.nodes.get(absX);\n\n  if (isGoingUp) {\n    change.collapseToEndOf(cell);\n  } else {\n    change.collapseToStartOf(cell);\n  }\n\n  return change;\n}\n/**\n * Normalize position in a table. If x is out of the row, update y accordingly.\n * Returns [-1, -1] if the new selection is out of table\n */\n\n\nfunction normPos(x, y, width, height) {\n  if (x < 0) {\n    x = width - 1;\n    y -= 1;\n  }\n\n  if (y < 0) {\n    return [-1, -1];\n  }\n\n  if (x >= width) {\n    x = 0;\n    y += 1;\n  }\n\n  if (y >= height) {\n    return [-1, -1];\n  }\n\n  return [x, y];\n}\n\nexports.default = moveSelectionBy;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/moveSelectionBy.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/removeColumn.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/removeColumn.js ***!
-  \********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _removeColumnByKey = __webpack_require__(/*! ./removeColumnByKey */ \"./node_modules/slate-edit-table/dist/changes/removeColumnByKey.js\");\n\nvar _removeColumnByKey2 = _interopRequireDefault(_removeColumnByKey);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Delete current column in a table\n */\n\n\nfunction removeColumn(opts, change, at) {\n  var value = change.value;\n  var startKey = value.startKey;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  var columnKey = void 0;\n\n  if (typeof at === 'undefined') {\n    columnKey = pos.cell.key;\n  } else {\n    columnKey = pos.row.nodes.get(at).key;\n  }\n\n  return (0, _removeColumnByKey2.default)(opts, change, columnKey);\n}\n\nexports.default = removeColumn;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/removeColumn.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/removeColumnByKey.js":
-/*!*************************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/removeColumnByKey.js ***!
-  \*************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _clearCell = __webpack_require__(/*! ./clearCell */ \"./node_modules/slate-edit-table/dist/changes/clearCell.js\");\n\nvar _clearCell2 = _interopRequireDefault(_clearCell);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Delete the column associated with the given cell key in a table\n */\n\n\nfunction removeColumnByKey(opts, change, key) {\n  var value = change.value;\n\n  var pos = _utils.TablePosition.create(opts, value.document, key);\n\n  var table = pos.table;\n  var colIndex = pos.getColumnIndex();\n  var rows = table.nodes; // Remove the cell from every row\n\n  if (pos.getWidth() > 1) {\n    rows.forEach(function (row) {\n      var cell = row.nodes.get(colIndex);\n      change.removeNodeByKey(cell.key, {\n        normalize: false\n      });\n    });\n  } else {\n    // If last column, clear text in cells instead\n    rows.forEach(function (row) {\n      row.nodes.forEach(function (cell) {\n        cell.nodes.forEach(function (node) {\n          return (0, _clearCell2.default)(opts, change, cell);\n        });\n      });\n    });\n  } // Replace the table\n\n\n  return change;\n}\n\nexports.default = removeColumnByKey;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/removeColumnByKey.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/removeRow.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/removeRow.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _removeRowByKey = __webpack_require__(/*! ./removeRowByKey */ \"./node_modules/slate-edit-table/dist/changes/removeRowByKey.js\");\n\nvar _removeRowByKey2 = _interopRequireDefault(_removeRowByKey);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Remove current row in a table. Clear it if last remaining row\n */\n\n\nfunction removeRow(opts, change, at) {\n  var value = change.value;\n  var startKey = value.startKey;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  var rowKey = void 0;\n\n  if (typeof at === 'undefined') {\n    rowKey = pos.row.key;\n  } else {\n    rowKey = pos.table.nodes.get(at).key;\n  }\n\n  return (0, _removeRowByKey2.default)(opts, change, rowKey);\n}\n\nexports.default = removeRow;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/removeRow.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/removeRowByKey.js":
-/*!**********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/removeRowByKey.js ***!
-  \**********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _clearCell = __webpack_require__(/*! ./clearCell */ \"./node_modules/slate-edit-table/dist/changes/clearCell.js\");\n\nvar _clearCell2 = _interopRequireDefault(_clearCell);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Remove the row associated to a given key in a table.\n * Clear thw row if last remaining row\n */\n\n\nfunction removeRowByKey(opts, change, key) {\n  var value = change.value;\n\n  var pos = _utils.TablePosition.create(opts, value.document, key); // Update table by removing the row\n\n\n  if (pos.getHeight() > 1) {\n    change.removeNodeByKey(key);\n  } else {\n    // If last remaining row, clear it instead\n    pos.row.nodes.forEach(function (cell) {\n      cell.nodes.forEach(function (node) {\n        return (0, _clearCell2.default)(opts, change, cell);\n      });\n    });\n  }\n\n  return change;\n}\n\nexports.default = removeRowByKey;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/removeRowByKey.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/removeTable.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/removeTable.js ***!
-  \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _removeTableByKey = __webpack_require__(/*! ./removeTableByKey */ \"./node_modules/slate-edit-table/dist/changes/removeTableByKey.js\");\n\nvar _removeTableByKey2 = _interopRequireDefault(_removeTableByKey);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Delete the whole table at position\n */\n\n\nfunction removeTable(opts, change) {\n  var value = change.value;\n  var startKey = value.startKey;\n  return (0, _removeTableByKey2.default)(opts, change, startKey);\n}\n\nexports.default = removeTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/removeTable.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/changes/removeTableByKey.js":
-/*!************************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/changes/removeTableByKey.js ***!
-  \************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Delete the whole table at the given node key\n */\n\n\nfunction removeTableByKey(opts, change, key) {\n  var value = change.value;\n\n  var pos = _utils.TablePosition.create(opts, value.document, key);\n\n  var table = pos.table;\n  var document = change.value.document;\n  var nextFocusBlock = null;\n  var shouldCollapseToEnd = false;\n  var nextBlock = change.value.document.getNextBlock(table.key);\n\n  if (nextBlock) {\n    nextFocusBlock = nextBlock;\n  } else {\n    var prevBlock = change.value.document.getPreviousBlock(table.key);\n\n    if (prevBlock) {\n      nextFocusBlock = prevBlock;\n      shouldCollapseToEnd = true;\n    } else if (opts.exitBlockType) {\n      nextFocusBlock = _slate.Block.create({\n        type: opts.exitBlockType,\n        nodes: [_slate.Text.create('')]\n      });\n      var tableParent = document.getParent(table.key);\n      var insertionIndex = tableParent.nodes.indexOf(table) + 1;\n      change.insertNodeByKey(tableParent.key, insertionIndex, nextFocusBlock);\n    }\n  }\n\n  change.removeNodeByKey(table.key);\n\n  if (!nextFocusBlock) {\n    return change;\n  }\n\n  if (shouldCollapseToEnd) {\n    change.collapseToEndOf(nextFocusBlock).focus();\n  } else {\n    change.collapseToStartOf(nextFocusBlock).focus();\n  }\n\n  return change;\n}\n\nexports.default = removeTableByKey;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/changes/removeTableByKey.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/core.js":
-/*!****************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/core.js ***!
-  \****************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _changes = __webpack_require__(/*! ./changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n\nvar _utils = __webpack_require__(/*! ./utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _validation = __webpack_require__(/*! ./validation */ \"./node_modules/slate-edit-table/dist/validation/index.js\");\n\nvar _options = __webpack_require__(/*! ./options */ \"./node_modules/slate-edit-table/dist/options.js\");\n\nvar _options2 = _interopRequireDefault(_options);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nfunction _toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n}\n/**\n * Returns the core of the plugin, limited to the validation and normalization\n * part of `slate-edit-table`, and utils.\n *\n * Import this directly: `import EditTable from 'slate-edit-table/lib/core'`\n * if you don't care about behavior/rendering and you\n * are only manipulating `Slate.Values` without rendering them.\n * That way you do not depend on `slate-react`.\n */\n\n\nfunction core(optionsParam) {\n  var opts = new _options2.default(optionsParam);\n  return {\n    schema: (0, _validation.schema)(opts),\n    validateNode: (0, _validation.validateNode)(opts),\n    utils: {\n      isSelectionInTable: _utils.isSelectionInTable.bind(null, opts),\n      isSelectionOutOfTable: _utils.isSelectionOutOfTable.bind(null, opts),\n      getPosition: _utils.getPosition.bind(null, opts),\n      getPositionByKey: _utils.getPositionByKey.bind(null, opts),\n      createCell: _utils.createCell.bind(null, opts),\n      createRow: _utils.createRow.bind(null, opts),\n      createTable: _utils.createTable.bind(null, opts),\n      forEachCells: _utils.forEachCells.bind(null, opts),\n      getCellsAtRow: _utils.getCellsAtRow.bind(null, opts),\n      getCellsAtColumn: _utils.getCellsAtColumn.bind(null, opts),\n      getCopiedFragment: _utils.getCopiedFragment.bind(null, opts)\n    },\n    changes: {\n      insertTable: _changes.insertTable.bind(null, opts),\n      insertTableFragmentAtRange: _changes.insertTableFragmentAtRange.bind(null, opts),\n      clearCell: _changes.clearCell.bind(null, opts),\n      removeRowByKey: _changes.removeRowByKey.bind(null, opts),\n      removeColumnByKey: _changes.removeColumnByKey.bind(null, opts),\n      removeTableByKey: _changes.removeTableByKey.bind(null, opts),\n      insertRow: bindAndScopeChange(opts, _changes.insertRow),\n      removeRow: bindAndScopeChange(opts, _changes.removeRow),\n      insertColumn: bindAndScopeChange(opts, _changes.insertColumn),\n      removeColumn: bindAndScopeChange(opts, _changes.removeColumn),\n      removeTable: bindAndScopeChange(opts, _changes.removeTable),\n      moveSelection: bindAndScopeChange(opts, _changes.moveSelection),\n      moveSelectionBy: bindAndScopeChange(opts, _changes.moveSelectionBy)\n    }\n  };\n}\n/**\n * Bind a change to given options, and scope it to act only inside a table\n */\n\n\nfunction bindAndScopeChange(opts, fn) {\n  return function (change) {\n    for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n      args[_key - 1] = arguments[_key];\n    }\n\n    var value = change.value;\n\n    if (!(0, _utils.isSelectionInTable)(opts, value)) {\n      return change;\n    } // $FlowFixMe\n\n\n    return fn.apply(undefined, _toConsumableArray([opts, change].concat(args)));\n  };\n}\n\nexports.default = core;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/core.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/index.js":
-/*!**************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/index.js ***!
-  \**************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.onPaste = exports.onCopy = exports.onKeyDown = exports.onUpDown = exports.onBackspace = exports.onTab = exports.onModEnter = exports.onEnter = undefined;\n\nvar _onEnter = __webpack_require__(/*! ./onEnter */ \"./node_modules/slate-edit-table/dist/handlers/onEnter.js\");\n\nvar _onEnter2 = _interopRequireDefault(_onEnter);\n\nvar _onModEnter = __webpack_require__(/*! ./onModEnter */ \"./node_modules/slate-edit-table/dist/handlers/onModEnter.js\");\n\nvar _onModEnter2 = _interopRequireDefault(_onModEnter);\n\nvar _onTab = __webpack_require__(/*! ./onTab */ \"./node_modules/slate-edit-table/dist/handlers/onTab.js\");\n\nvar _onTab2 = _interopRequireDefault(_onTab);\n\nvar _onBackspace = __webpack_require__(/*! ./onBackspace */ \"./node_modules/slate-edit-table/dist/handlers/onBackspace.js\");\n\nvar _onBackspace2 = _interopRequireDefault(_onBackspace);\n\nvar _onUpDown = __webpack_require__(/*! ./onUpDown */ \"./node_modules/slate-edit-table/dist/handlers/onUpDown.js\");\n\nvar _onUpDown2 = _interopRequireDefault(_onUpDown);\n\nvar _onKeyDown = __webpack_require__(/*! ./onKeyDown */ \"./node_modules/slate-edit-table/dist/handlers/onKeyDown.js\");\n\nvar _onKeyDown2 = _interopRequireDefault(_onKeyDown);\n\nvar _onCopy = __webpack_require__(/*! ./onCopy */ \"./node_modules/slate-edit-table/dist/handlers/onCopy.js\");\n\nvar _onCopy2 = _interopRequireDefault(_onCopy);\n\nvar _onPaste = __webpack_require__(/*! ./onPaste */ \"./node_modules/slate-edit-table/dist/handlers/onPaste.js\");\n\nvar _onPaste2 = _interopRequireDefault(_onPaste);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.onEnter = _onEnter2.default;\nexports.onModEnter = _onModEnter2.default;\nexports.onTab = _onTab2.default;\nexports.onBackspace = _onBackspace2.default;\nexports.onUpDown = _onUpDown2.default;\nexports.onKeyDown = _onKeyDown2.default;\nexports.onCopy = _onCopy2.default;\nexports.onPaste = _onPaste2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onBackspace.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onBackspace.js ***!
-  \********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n\nfunction onBackspace(event, change, editor, opts) {\n  var value = change.value;\n  var startBlock = value.startBlock,\n      startOffset = value.startOffset,\n      isCollapsed = value.isCollapsed,\n      endBlock = value.endBlock,\n      document = value.document;\n  var startCell = document.getClosest(startBlock.key, opts.isCell);\n  var endCell = document.getClosest(endBlock.key, opts.isCell);\n  var startBlockIndex = startCell.nodes.findIndex(function (block) {\n    return block.key == startBlock.key;\n  }); // If a cursor is collapsed at the start of the first block, do nothing\n\n  if (startOffset === 0 && isCollapsed && startBlockIndex === 0) {\n    if (startBlock.isVoid) {\n      // Delete the block normally if it is a void block\n      return undefined;\n    }\n\n    event.preventDefault();\n    return change;\n  } // If \"normal\" deletion, we continue\n\n\n  if (startCell === endCell) {\n    return undefined;\n  } // If cursor is between multiple blocks,\n  // we clear the content of the cells.\n\n\n  event.preventDefault();\n  var blocks = value.blocks; // Get all cells that contains the selection\n\n  var cells = blocks.map(function (node) {\n    return node.type === opts.typeCell ? node : document.getClosest(node.key, function (a) {\n      return a.type === opts.typeCell;\n    });\n  }).toSet(); // If the cursor is at the very end of the first cell, ignore it.\n  // If the cursor is at the very start of the last cell, ignore it.\n  // This behavior is to compensate hanging selection behaviors:\n  // https://github.com/ianstormtaylor/slate/pull/1605\n\n  var ignoreFirstCell = value.selection.collapseToStart().isAtEndOf(cells.first());\n  var ignoreLastCell = value.selection.collapseToEnd().isAtStartOf(cells.last());\n  var cellsToClear = cells;\n\n  if (ignoreFirstCell) {\n    cellsToClear = cellsToClear.rest();\n  }\n\n  if (ignoreLastCell) {\n    cellsToClear = cellsToClear.butLast();\n  } // Clear all the selection\n\n\n  cellsToClear.forEach(function (cell) {\n    return (0, _changes.clearCell)(opts, change, cell);\n  }); // Update the selection properly, and avoid reset of selection\n\n  var updatedStartCell = change.value.document.getDescendant(cellsToClear.first().key);\n  return change.collapseToStartOf(updatedStartCell);\n}\n\nexports.default = onBackspace;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onBackspace.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onCopy.js":
-/*!***************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onCopy.js ***!
-  \***************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slateReact = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n *  Handle copying content of tables\n */\n\n\nfunction onCopy( // The plugin options\nopts, event, change, editor) {\n  var copiedFragment = (0, _utils.getCopiedFragment)(opts, change.value);\n\n  if (!copiedFragment) {\n    // Default copy behavior\n    return null;\n  } // Override default onCopy\n\n\n  (0, _slateReact.cloneFragment)(event, change.value, copiedFragment);\n  return true;\n}\n\nexports.default = onCopy;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onCopy.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onEnter.js":
-/*!****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onEnter.js ***!
-  \****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n/**\n * Insert a new row when pressing \"Enter\"\n */\n\n\nfunction onEnter(event, change, editor, opts) {\n  event.preventDefault();\n  var _change$value = change.value,\n      selection = _change$value.selection,\n      document = _change$value.document;\n\n  var pos = _utils.TablePosition.create(opts, document, selection.startKey);\n\n  if (!selection.hasFocusAtStartOf(pos.cell) && !selection.hasFocusAtEndOf(pos.cell)) {\n    return undefined;\n  }\n\n  if (event.shiftKey) {\n    return change.splitBlock().setBlocks({\n      type: opts.typeContent,\n      data: {}\n    });\n  }\n\n  return (0, _changes.insertRow)(opts, change);\n}\n\nexports.default = onEnter;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onEnter.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onKeyDown.js":
-/*!******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onKeyDown.js ***!
-  \******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _onEnter = __webpack_require__(/*! ./onEnter */ \"./node_modules/slate-edit-table/dist/handlers/onEnter.js\");\n\nvar _onEnter2 = _interopRequireDefault(_onEnter);\n\nvar _onModEnter = __webpack_require__(/*! ./onModEnter */ \"./node_modules/slate-edit-table/dist/handlers/onModEnter.js\");\n\nvar _onModEnter2 = _interopRequireDefault(_onModEnter);\n\nvar _onTab = __webpack_require__(/*! ./onTab */ \"./node_modules/slate-edit-table/dist/handlers/onTab.js\");\n\nvar _onTab2 = _interopRequireDefault(_onTab);\n\nvar _onBackspace = __webpack_require__(/*! ./onBackspace */ \"./node_modules/slate-edit-table/dist/handlers/onBackspace.js\");\n\nvar _onBackspace2 = _interopRequireDefault(_onBackspace);\n\nvar _onUpDown = __webpack_require__(/*! ./onUpDown */ \"./node_modules/slate-edit-table/dist/handlers/onUpDown.js\");\n\nvar _onUpDown2 = _interopRequireDefault(_onUpDown);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nvar KEY_ENTER = 'Enter';\nvar KEY_TAB = 'Tab';\nvar KEY_BACKSPACE = 'Backspace';\nvar KEY_DOWN = 'ArrowDown';\nvar KEY_UP = 'ArrowUp';\n/**\n * User is pressing a key in the editor\n */\n\nfunction onKeyDown(opts, event, change, editor) {\n  // Only handle events in cells\n  if (!(0, _utils.isSelectionInTable)(opts, change.value)) {\n    return undefined;\n  } // Build arguments list\n\n\n  var args = [event, change, editor, opts];\n\n  switch (event.key) {\n    case KEY_ENTER:\n      if (event.metaKey && opts.exitBlockType) {\n        return _onModEnter2.default.apply(undefined, args);\n      }\n\n      return _onEnter2.default.apply(undefined, args);\n\n    case KEY_TAB:\n      return _onTab2.default.apply(undefined, args);\n\n    case KEY_BACKSPACE:\n      return _onBackspace2.default.apply(undefined, args);\n\n    case KEY_DOWN:\n    case KEY_UP:\n      return _onUpDown2.default.apply(undefined, args);\n\n    default:\n      return undefined;\n  }\n}\n\nexports.default = onKeyDown;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onKeyDown.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onModEnter.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onModEnter.js ***!
-  \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/**\n * Exit the current table, by inserting a default block after the table.\n */\n\n\nfunction onModEnter(event, change, editor, opts) {\n  var value = change.value;\n\n  if (!value.isCollapsed) {\n    return undefined;\n  }\n\n  event.preventDefault();\n\n  var exitBlock = _slate.Block.create({\n    type: opts.exitBlockType,\n    nodes: [_slate.Text.create('')]\n  });\n\n  var table = _utils.TablePosition.create(opts, value.document, value.startKey).table;\n\n  var tableParent = value.document.getParent(table.key);\n  var insertionIndex = tableParent.nodes.indexOf(table) + 1;\n  return change.insertNodeByKey(tableParent.key, insertionIndex, exitBlock).collapseToStartOf(exitBlock);\n}\n\nexports.default = onModEnter;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onModEnter.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onPaste.js":
-/*!****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onPaste.js ***!
-  \****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slateReact = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n/**\n *  Handle pasting inside tables\n */\n\n\nfunction onPaste( // The plugin options\nopts, event, change, editor) {\n  // Outside of tables, do not alter paste behavior\n  if (!(0, _utils.isSelectionInTable)(opts, change.value)) {\n    return undefined;\n  }\n\n  var transfer = (0, _slateReact.getEventTransfer)(event);\n  var type = transfer.type,\n      fragment = transfer.fragment;\n\n  if (type != 'fragment' || fragment.nodes.isEmpty()) {\n    return null;\n  }\n\n  if (!(0, _utils.isRangeInTable)(opts, fragment, _slate.Range.create({\n    anchorKey: fragment.getFirstText().key,\n    focusKey: fragment.getLastText().key\n  }))) {\n    return null;\n  }\n\n  return (0, _changes.insertTableFragmentAtRange)(opts, change, change.value.selection, fragment);\n}\n\nexports.default = onPaste;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onPaste.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onTab.js":
-/*!**************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onTab.js ***!
-  \**************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n/**\n * Select all text of current block.\n */\n\n\nfunction selectAllText(change) {\n  var value = change.value;\n  var startBlock = value.startBlock;\n  return change.moveOffsetsTo(0).extend(startBlock.text.length);\n}\n/**\n * Pressing \"Tab\" moves the cursor to the next cell\n * and select the whole text\n */\n\n\nfunction onTab(event, change, editor, opts) {\n  event.preventDefault();\n  var value = change.value;\n  var direction = event.shiftKey ? -1 : +1; // Create new row if needed\n\n  var startKey = value.startKey,\n      selection = value.selection;\n\n  var pos = _utils.TablePosition.create(opts, value.document, startKey);\n\n  if (pos.isFirstCell() && direction === -1) {\n    (0, _changes.insertRow)(opts, change, 0);\n  } else if (pos.isLastCell() && direction === 1) {\n    (0, _changes.insertRow)(opts, change);\n  } // Move back to initial cell (insertRow moves selection automatically).\n\n\n  change.select(selection); // Move\n\n  (0, _changes.moveSelectionBy)(opts, change, direction, 0); // Select all cell.\n\n  return selectAllText(change);\n}\n\nexports.default = onTab;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onTab.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/handlers/onUpDown.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/handlers/onUpDown.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nvar _changes = __webpack_require__(/*! ../changes */ \"./node_modules/slate-edit-table/dist/changes/index.js\");\n\nfunction onUpDown(event, change, editor, opts) {\n  var value = change.value;\n  var direction = event.key === 'ArrowUp' ? -1 : +1;\n\n  var pos = _utils.TablePosition.create(opts, value.document, value.startKey);\n\n  if (pos.isFirstRow() && direction === -1 || pos.isLastRow() && direction === +1) {\n    // Let the default behavior move out of the table\n    return undefined;\n  }\n\n  if (direction === -1 && !pos.isTopOfCell()) {\n    return undefined;\n  }\n\n  if (direction === +1 && !pos.isBottomOfCell()) {\n    return undefined;\n  }\n\n  event.preventDefault();\n  (0, _changes.moveSelectionBy)(opts, change, 0, direction);\n  return change;\n}\n\nexports.default = onUpDown;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/handlers/onUpDown.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/index.js":
-/*!*****************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/index.js ***!
-  \*****************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar _options = __webpack_require__(/*! ./options */ \"./node_modules/slate-edit-table/dist/options.js\");\n\nvar _options2 = _interopRequireDefault(_options);\n\nvar _core = __webpack_require__(/*! ./core */ \"./node_modules/slate-edit-table/dist/core.js\");\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _handlers = __webpack_require__(/*! ./handlers */ \"./node_modules/slate-edit-table/dist/handlers/index.js\");\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n *  Returns the full plugin object (behavior + rendering + schema)\n */\n\n\nfunction EditTable( // The plugin options\noptionsParam) {\n  var opts = new _options2.default(optionsParam || {});\n  var corePlugin = (0, _core2.default)(opts);\n  return _extends({}, corePlugin, {\n    onKeyDown: _handlers.onKeyDown.bind(null, opts),\n    onCopy: _handlers.onCopy.bind(null, opts),\n    onPaste: _handlers.onPaste.bind(null, opts)\n  });\n}\n\nexports.default = EditTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/options.js":
-/*!*******************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/options.js ***!
-  \*******************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n/**\n * The plugin options\n */\n\n\nvar Options = function (_Record) {\n  _inherits(Options, _Record);\n\n  function Options() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    _classCallCheck(this, Options);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = Options.__proto__ || Object.getPrototypeOf(Options)).call.apply(_ref, [this].concat(args))), _this), _this.isCell = function (node) {\n      return node.object == 'block' && node.type == _this.typeCell;\n    }, _temp), _possibleConstructorReturn(_this, _ret);\n  } // The type of table blocks\n  // The type of row blocks\n  // The type of cell blocks\n  // The default type for blocks in cells\n  // The type of block inserted when exiting\n\n  /*\n   * Return a node filter to find a cell.\n   */\n\n\n  return Options;\n}((0, _immutable.Record)({\n  typeTable: 'table',\n  typeRow: 'table_row',\n  typeCell: 'table_cell',\n  typeContent: 'paragraph',\n  exitBlockType: 'paragraph'\n}));\n\nexports.default = Options;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/options.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/TablePosition.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/TablePosition.js ***!
-  \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nfunction _classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n}\n\nfunction _possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n}\n\nfunction _inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n}\n\nvar TablePosition = function (_Record) {\n  _inherits(TablePosition, _Record);\n\n  function TablePosition() {\n    _classCallCheck(this, TablePosition);\n\n    return _possibleConstructorReturn(this, (TablePosition.__proto__ || Object.getPrototypeOf(TablePosition)).apply(this, arguments));\n  }\n\n  _createClass(TablePosition, [{\n    key: 'isInCell',\n\n    /**\n     * Check to see if this position is within a cell\n     */\n    value: function isInCell() {\n      return Boolean(this.cellBlock);\n    }\n    /**\n     * Check to see if this position is within a row\n     */\n\n  }, {\n    key: 'isInRow',\n    value: function isInRow() {\n      return Boolean(this.rowBlock);\n    }\n    /**\n     * Check to see if this position is within a table\n     */\n\n  }, {\n    key: 'isInTable',\n    value: function isInTable() {\n      return Boolean(this.tableBlock);\n    }\n    /**\n     * Check to see if this position is at the top of the cell.\n     */\n\n  }, {\n    key: 'isTopOfCell',\n    value: function isTopOfCell() {\n      var contentBlock = this.contentBlock,\n          cellBlock = this.cellBlock;\n\n      if (!contentBlock || !cellBlock) {\n        return false;\n      }\n\n      var nodes = cellBlock.nodes;\n      var index = nodes.findIndex(function (block) {\n        return block.key == contentBlock.key;\n      });\n      return index == 0;\n    }\n    /**\n     * Check to see if this position is at the bottom of the cell.\n     */\n\n  }, {\n    key: 'isBottomOfCell',\n    value: function isBottomOfCell() {\n      var contentBlock = this.contentBlock,\n          cellBlock = this.cellBlock;\n\n      if (!contentBlock || !cellBlock) {\n        return false;\n      }\n\n      var nodes = cellBlock.nodes;\n      var index = nodes.findIndex(function (block) {\n        return block.key == contentBlock.key;\n      });\n      return index == nodes.size - 1;\n    }\n    /**\n     * Get count of columns\n     */\n\n  }, {\n    key: 'getWidth',\n    value: function getWidth() {\n      var table = this.table;\n      var rows = table.nodes;\n      var cells = rows.first().nodes;\n      return cells.size;\n    }\n    /**\n     * Get count of rows\n     */\n\n  }, {\n    key: 'getHeight',\n    value: function getHeight() {\n      var table = this.table;\n      var rows = table.nodes;\n      return rows.size;\n    }\n    /**\n     * Get index of current row in the table.\n     */\n\n  }, {\n    key: 'getRowIndex',\n    value: function getRowIndex() {\n      var table = this.table,\n          row = this.row;\n      var rows = table.nodes;\n      return rows.findIndex(function (x) {\n        return x === row;\n      });\n    }\n    /**\n     * Get index of current column in the row.\n     */\n\n  }, {\n    key: 'getColumnIndex',\n    value: function getColumnIndex() {\n      var row = this.row,\n          cell = this.cell;\n      var cells = row.nodes;\n      return cells.findIndex(function (x) {\n        return x === cell;\n      });\n    }\n    /**\n     * True if on first cell of the table\n     */\n\n  }, {\n    key: 'isFirstCell',\n    value: function isFirstCell() {\n      return this.isFirstRow() && this.isFirstColumn();\n    }\n    /**\n     * True if on last cell of the table\n     */\n\n  }, {\n    key: 'isLastCell',\n    value: function isLastCell() {\n      return this.isLastRow() && this.isLastColumn();\n    }\n    /**\n     * True if on first row\n     */\n\n  }, {\n    key: 'isFirstRow',\n    value: function isFirstRow() {\n      return this.getRowIndex() === 0;\n    }\n    /**\n     * True if on last row\n     */\n\n  }, {\n    key: 'isLastRow',\n    value: function isLastRow() {\n      return this.getRowIndex() === this.getHeight() - 1;\n    }\n    /**\n     * True if on first column\n     */\n\n  }, {\n    key: 'isFirstColumn',\n    value: function isFirstColumn() {\n      return this.getColumnIndex() === 0;\n    }\n    /**\n     * True if on last column\n     */\n\n  }, {\n    key: 'isLastColumn',\n    value: function isLastColumn() {\n      return this.getColumnIndex() === this.getWidth() - 1;\n    }\n  }, {\n    key: 'table',\n    get: function get() {\n      if (!this.tableBlock) {\n        throw new Error('Not in a table');\n      }\n\n      return this.tableBlock;\n    }\n  }, {\n    key: 'row',\n    get: function get() {\n      if (!this.rowBlock) {\n        throw new Error('Not in a row');\n      }\n\n      return this.rowBlock;\n    }\n  }, {\n    key: 'cell',\n    get: function get() {\n      if (!this.cellBlock) {\n        throw new Error('Not in a cell');\n      }\n\n      return this.cellBlock;\n    }\n  }], [{\n    key: 'create',\n\n    /**\n     * Create a new instance of a TablePosition from a Slate document\n     * and a node key.\n     */\n    // Block for current cell\n    // Block container for the table\n    value: function create(opts, containerNode, key) {\n      var node = containerNode.getDescendant(key);\n      var ancestors = containerNode.getAncestors(key).push(node);\n      var tableBlock = ancestors.findLast(function (p) {\n        return p.type === opts.typeTable;\n      });\n      var rowBlock = ancestors.findLast(function (p) {\n        return p.type === opts.typeRow;\n      });\n      var cellBlock = ancestors.findLast(function (p) {\n        return p.type === opts.typeCell;\n      });\n      var contentBlock = ancestors.skipUntil(function (ancestor) {\n        return ancestor === cellBlock;\n      }).skip(1).first();\n      return new TablePosition({\n        tableBlock: tableBlock,\n        rowBlock: rowBlock,\n        cellBlock: cellBlock,\n        contentBlock: contentBlock\n      });\n    } // Current content block in the cell\n    // Block for current row\n\n  }]);\n\n  return TablePosition;\n}((0, _immutable.Record)({\n  tableBlock: null,\n  rowBlock: null,\n  cellBlock: null,\n  contentBlock: null\n}));\n\nexports.default = TablePosition;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/TablePosition.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/createCell.js":
-/*!****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/createCell.js ***!
-  \****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/**\n * Create a new cell\n */\n\n\nfunction createCell(opts, nodes) {\n  return _slate.Block.create({\n    type: opts.typeCell,\n    nodes: nodes || [createEmptyContent(opts)]\n  });\n}\n/**\n * Create a new default content block\n */\n\n\nfunction createEmptyContent(opts) {\n  return _slate.Block.create({\n    type: opts.typeContent,\n    nodes: [_slate.Text.create()]\n  });\n}\n\nexports.default = createCell;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/createCell.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/createRow.js":
-/*!***************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/createRow.js ***!
-  \***************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _createCell = __webpack_require__(/*! ./createCell */ \"./node_modules/slate-edit-table/dist/utils/createCell.js\");\n\nvar _createCell2 = _interopRequireDefault(_createCell);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Create a new row block\n */\n\n\nfunction createRow(opts, columns, getCellContent) {\n  var cellNodes = (0, _immutable.Range)(0, columns).map(function (i) {\n    return (0, _createCell2.default)(opts, getCellContent ? getCellContent(i) : undefined);\n  }).toList();\n  return _slate.Block.create({\n    type: opts.typeRow,\n    nodes: cellNodes\n  });\n}\n\nexports.default = createRow;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/createRow.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/createTable.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/createTable.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _createRow = __webpack_require__(/*! ./createRow */ \"./node_modules/slate-edit-table/dist/utils/createRow.js\");\n\nvar _createRow2 = _interopRequireDefault(_createRow);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Create a table\n */\n\n\nfunction createTable(opts, columns, rows, getCellContent) {\n  var rowNodes = (0, _immutable.Range)(0, rows).map(function (i) {\n    return (0, _createRow2.default)(opts, columns, getCellContent ? getCellContent.bind(null, i) : undefined);\n  }).toList();\n  return _slate.Block.create({\n    type: opts.typeTable,\n    nodes: rowNodes\n  });\n}\n\nexports.default = createTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/createTable.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/forEachCells.js":
-/*!******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/forEachCells.js ***!
-  \******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/**\n * Run the given function against each cells of the table\n */\n\n\nfunction forEachCells(opts, // The table\ntable, fn) {\n  return table.nodes.forEach(function (row, rowIndex) {\n    return row.nodes.forEach(function (cell, columnIndex) {\n      return fn(cell, rowIndex, columnIndex);\n    });\n  });\n}\n\nexports.default = forEachCells;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/forEachCells.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js":
-/*!**********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js ***!
-  \**********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\n__webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/**\n * Returns the list of cells at the given column index\n */\n\n\nfunction getCellsAtColumn(opts, // The table\ntable, columnIndex) {\n  return table.nodes.map(function (row) {\n    return row.nodes.get(columnIndex);\n  });\n}\n\nexports.default = getCellsAtColumn;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/getCellsAtRow.js":
-/*!*******************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/getCellsAtRow.js ***!
-  \*******************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\n__webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/**\n * Returns the list of cells at the given row index\n */\n\n\nfunction getCellsAtRow(opts, // The table\ntable, rowIndex) {\n  return table.nodes.get(rowIndex).nodes;\n}\n\nexports.default = getCellsAtRow;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/getCellsAtRow.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/getCopiedFragment.js":
-/*!***********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/getCopiedFragment.js ***!
-  \***********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _immutable = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/*\n * Alters what is copied to the clipboard when copying a fragment of a table:\n * - Copying the content of a single cell: just copy the content of the cell\n * - Copying multiple cells: normalize the selection to copy a valid table\n */\n\n\nfunction getCopiedFragment(opts, value) {\n  // Outside of tables, do not alter copy behavior\n  if (!(0, _utils.isSelectionInTable)(opts, value)) {\n    return undefined;\n  } // else the selection is a fragment of one table\n\n\n  var selection = value.selection,\n      document = value.document;\n\n  var startPosition = _utils.TablePosition.create(opts, document, selection.startKey);\n\n  var endPosition = _utils.TablePosition.create(opts, document, selection.endKey); // Fragment as it would be copied by Slate\n\n\n  var baseFragment = value.fragment;\n\n  if (endPosition.cell === startPosition.cell) {\n    // The selection is inside a single cell. Only copy the content of that cell\n    var copiedCell = baseFragment.getAncestors(baseFragment.getFirstText().key).findLast(function (n) {\n      return n.type === opts.typeCell;\n    });\n    return baseFragment.merge({\n      nodes: copiedCell.nodes\n    });\n  } // We want to pad with empty cells to put a valid table into the clipboard\n\n\n  var table = baseFragment.nodes.first();\n  var firstRow = table.nodes.first();\n  var endRow = table.nodes.last();\n  var startPadding = (0, _immutable.List)(Array(startPosition.getColumnIndex()).fill()).map(function () {\n    return (0, _utils.createCell)(opts);\n  });\n  var endPadding = (0, _immutable.List)(Array(endPosition.getWidth() - (endPosition.getColumnIndex() + 1)).fill()).map(function () {\n    return (0, _utils.createCell)(opts);\n  });\n  return baseFragment.mapDescendants(function (node) {\n    if (node === firstRow) {\n      return firstRow.merge({\n        nodes: startPadding.concat(firstRow.nodes)\n      });\n    }\n\n    if (node === endRow) {\n      return endRow.merge({\n        nodes: endRow.nodes.concat(endPadding)\n      });\n    }\n\n    return node;\n  });\n}\n\nexports.default = getCopiedFragment;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/getCopiedFragment.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/getPosition.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/getPosition.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-edit-table/dist/utils/TablePosition.js\");\n\nvar _TablePosition2 = _interopRequireDefault(_TablePosition);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * The position of the selection start block, in the current table\n */\n\n\nfunction getPosition(opts, // The current value\nvalue) {\n  return _TablePosition2.default.create(opts, value.document, value.startKey);\n}\n\nexports.default = getPosition;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/getPosition.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/getPositionByKey.js":
-/*!**********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/getPositionByKey.js ***!
-  \**********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\n__webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-edit-table/dist/utils/TablePosition.js\");\n\nvar _TablePosition2 = _interopRequireDefault(_TablePosition);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/*\n * The position of a particular node, in the current table\n */\n\n\nfunction getPositionByKey(opts, // The current value\ncontainerNode, // Key of the node in desired position\nkey) {\n  return _TablePosition2.default.create(opts, containerNode, key);\n}\n\nexports.default = getPositionByKey;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/getPositionByKey.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/index.js":
-/*!***********************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/index.js ***!
-  \***********************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.getCopiedFragment = exports.createTable = exports.createRow = exports.createCell = exports.TablePosition = exports.isSelectionOutOfTable = exports.isSelectionInTable = exports.isRangeInTable = exports.getCellsAtColumn = exports.getCellsAtRow = exports.forEachCells = exports.getPositionByKey = exports.getPosition = undefined;\n\nvar _createCell = __webpack_require__(/*! ./createCell */ \"./node_modules/slate-edit-table/dist/utils/createCell.js\");\n\nvar _createCell2 = _interopRequireDefault(_createCell);\n\nvar _createRow = __webpack_require__(/*! ./createRow */ \"./node_modules/slate-edit-table/dist/utils/createRow.js\");\n\nvar _createRow2 = _interopRequireDefault(_createRow);\n\nvar _createTable = __webpack_require__(/*! ./createTable */ \"./node_modules/slate-edit-table/dist/utils/createTable.js\");\n\nvar _createTable2 = _interopRequireDefault(_createTable);\n\nvar _getPosition = __webpack_require__(/*! ./getPosition */ \"./node_modules/slate-edit-table/dist/utils/getPosition.js\");\n\nvar _getPosition2 = _interopRequireDefault(_getPosition);\n\nvar _getPositionByKey = __webpack_require__(/*! ./getPositionByKey */ \"./node_modules/slate-edit-table/dist/utils/getPositionByKey.js\");\n\nvar _getPositionByKey2 = _interopRequireDefault(_getPositionByKey);\n\nvar _isRangeInTable = __webpack_require__(/*! ./isRangeInTable */ \"./node_modules/slate-edit-table/dist/utils/isRangeInTable.js\");\n\nvar _isRangeInTable2 = _interopRequireDefault(_isRangeInTable);\n\nvar _isSelectionInTable = __webpack_require__(/*! ./isSelectionInTable */ \"./node_modules/slate-edit-table/dist/utils/isSelectionInTable.js\");\n\nvar _isSelectionInTable2 = _interopRequireDefault(_isSelectionInTable);\n\nvar _isSelectionOutOfTable = __webpack_require__(/*! ./isSelectionOutOfTable */ \"./node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js\");\n\nvar _isSelectionOutOfTable2 = _interopRequireDefault(_isSelectionOutOfTable);\n\nvar _TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-edit-table/dist/utils/TablePosition.js\");\n\nvar _TablePosition2 = _interopRequireDefault(_TablePosition);\n\nvar _forEachCells = __webpack_require__(/*! ./forEachCells */ \"./node_modules/slate-edit-table/dist/utils/forEachCells.js\");\n\nvar _forEachCells2 = _interopRequireDefault(_forEachCells);\n\nvar _getCellsAtRow = __webpack_require__(/*! ./getCellsAtRow */ \"./node_modules/slate-edit-table/dist/utils/getCellsAtRow.js\");\n\nvar _getCellsAtRow2 = _interopRequireDefault(_getCellsAtRow);\n\nvar _getCellsAtColumn = __webpack_require__(/*! ./getCellsAtColumn */ \"./node_modules/slate-edit-table/dist/utils/getCellsAtColumn.js\");\n\nvar _getCellsAtColumn2 = _interopRequireDefault(_getCellsAtColumn);\n\nvar _getCopiedFragment = __webpack_require__(/*! ./getCopiedFragment */ \"./node_modules/slate-edit-table/dist/utils/getCopiedFragment.js\");\n\nvar _getCopiedFragment2 = _interopRequireDefault(_getCopiedFragment);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.getPosition = _getPosition2.default;\nexports.getPositionByKey = _getPositionByKey2.default;\nexports.forEachCells = _forEachCells2.default;\nexports.getCellsAtRow = _getCellsAtRow2.default;\nexports.getCellsAtColumn = _getCellsAtColumn2.default;\nexports.isRangeInTable = _isRangeInTable2.default;\nexports.isSelectionInTable = _isSelectionInTable2.default;\nexports.isSelectionOutOfTable = _isSelectionOutOfTable2.default;\nexports.TablePosition = _TablePosition2.default;\nexports.createCell = _createCell2.default;\nexports.createRow = _createRow2.default;\nexports.createTable = _createTable2.default;\nexports.getCopiedFragment = _getCopiedFragment2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/isRangeInTable.js":
-/*!********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/isRangeInTable.js ***!
-  \********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-edit-table/dist/utils/TablePosition.js\");\n\nvar _TablePosition2 = _interopRequireDefault(_TablePosition);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * True if the given range is inside one table\n */\n\n\nfunction isRangeInTable(opts, node, range) {\n  var startKey = range.startKey,\n      endKey = range.endKey;\n\n  var startPosition = _TablePosition2.default.create(opts, node, startKey);\n\n  var endPosition = _TablePosition2.default.create(opts, node, endKey); // Only handle events in tables\n\n\n  if (!startPosition.isInTable() || !endPosition.isInTable()) {\n    return false;\n  } // Inside the same table\n\n\n  return startPosition.table === endPosition.table;\n}\n\nexports.default = isRangeInTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/isRangeInTable.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/isSelectionInTable.js":
-/*!************************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/isSelectionInTable.js ***!
-  \************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _isRangeInTable = __webpack_require__(/*! ./isRangeInTable */ \"./node_modules/slate-edit-table/dist/utils/isRangeInTable.js\");\n\nvar _isRangeInTable2 = _interopRequireDefault(_isRangeInTable);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Is the selection in a table\n */\n\n\nfunction isSelectionInTable(opts, value) {\n  if (!value.selection.startKey) return false;\n  return (0, _isRangeInTable2.default)(opts, value.document, value.selection);\n}\n\nexports.default = isSelectionInTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/isSelectionInTable.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js":
-/*!***************************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js ***!
-  \***************************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _TablePosition = __webpack_require__(/*! ./TablePosition */ \"./node_modules/slate-edit-table/dist/utils/TablePosition.js\");\n\nvar _TablePosition2 = _interopRequireDefault(_TablePosition);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n/**\n * Are the selection start and end outside a table.\n */\n\n\nfunction isSelectionOutOfTable(opts, value) {\n  if (!value.selection.startKey) return false;\n  var startKey = value.startKey,\n      endKey = value.endKey;\n\n  var startPosition = _TablePosition2.default.create(opts, value.document, startKey);\n\n  var endPosition = _TablePosition2.default.create(opts, value.document, endKey); // Only handle events in tables\n\n\n  return !startPosition.isInTable() && !endPosition.isInTable();\n}\n\nexports.default = isSelectionOutOfTable;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/utils/isSelectionOutOfTable.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/validation/index.js":
-/*!****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/validation/index.js ***!
-  \****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\nexports.validateNode = exports.schema = undefined;\n\nvar _schema = __webpack_require__(/*! ./schema */ \"./node_modules/slate-edit-table/dist/validation/schema.js\");\n\nvar _schema2 = _interopRequireDefault(_schema);\n\nvar _validateNode = __webpack_require__(/*! ./validateNode */ \"./node_modules/slate-edit-table/dist/validation/validateNode.js\");\n\nvar _validateNode2 = _interopRequireDefault(_validateNode);\n\nfunction _interopRequireDefault(obj) {\n  return obj && obj.__esModule ? obj : {\n    default: obj\n  };\n}\n\nexports.schema = _schema2.default;\nexports.validateNode = _validateNode2.default;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/validation/index.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/validation/schema.js":
-/*!*****************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/validation/schema.js ***!
-  \*****************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _slate = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\nvar _slateSchemaViolations = __webpack_require__(/*! slate-schema-violations */ \"./node_modules/slate-schema-violations/lib/slate-schema-violations.es.js\");\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n\nfunction _defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n}\n/*\n * Returns a schema definition for the plugin\n */\n\n\nfunction schema(opts) {\n  var _blocks;\n\n  return {\n    blocks: (_blocks = {}, _defineProperty(_blocks, opts.typeTable, {\n      nodes: [{\n        types: [opts.typeRow]\n      }]\n    }), _defineProperty(_blocks, opts.typeRow, {\n      nodes: [{\n        types: [opts.typeCell]\n      }],\n      parent: {\n        types: [opts.typeTable]\n      },\n      normalize: function normalize(change, violation, context) {\n        switch (violation) {\n          case _slateSchemaViolations.CHILD_TYPE_INVALID:\n            return onlyCellsInRow(opts, change, context);\n\n          case _slateSchemaViolations.PARENT_TYPE_INVALID:\n            return rowOnlyInTable(opts, change, context);\n\n          default:\n            return undefined;\n        }\n      }\n    }), _defineProperty(_blocks, opts.typeCell, {\n      nodes: [{\n        objects: ['block']\n      }],\n      parent: {\n        types: [opts.typeRow]\n      },\n      normalize: function normalize(change, violation, context) {\n        switch (violation) {\n          case _slateSchemaViolations.CHILD_OBJECT_INVALID:\n            return onlyBlocksInCell(opts, change, context);\n\n          case _slateSchemaViolations.PARENT_TYPE_INVALID:\n            return cellOnlyInRow(opts, change, context);\n\n          default:\n            return undefined;\n        }\n      }\n    }), _blocks)\n  };\n}\n/*\n * A row's children must be cells.\n * If they're not then we wrap them within a cell.\n */\n\n\nfunction onlyCellsInRow(opts, change, context) {\n  var cell = (0, _utils.createCell)(opts, []);\n  var index = context.node.nodes.findIndex(function (child) {\n    return child.key === context.child.key;\n  });\n  change.insertNodeByKey(context.node.key, index, cell, {\n    normalize: false\n  });\n  change.moveNodeByKey(context.child.key, cell.key, 0, {\n    normalize: false\n  });\n}\n/*\n * Rows can't live outside a table, if one is found then we wrap it within a table.\n */\n\n\nfunction rowOnlyInTable(opts, change, context) {\n  return change.wrapBlockByKey(context.node.key, opts.typeTable);\n}\n/*\n * A cell's children must be \"block\"s.\n * If they're not then we wrap them within a block with a type of opts.typeContent\n */\n\n\nfunction onlyBlocksInCell(opts, change, context) {\n  var block = _slate.Block.create({\n    type: opts.typeContent\n  });\n\n  change.insertNodeByKey(context.node.key, 0, block, {\n    normalize: false\n  });\n  var inlines = context.node.nodes.filter(function (node) {\n    return node.object !== 'block';\n  });\n  inlines.forEach(function (inline, index) {\n    change.moveNodeByKey(inline.key, block.key, index, {\n      normalize: false\n    });\n  });\n}\n/*\n * Cells can't live outside a row, if one is found then we wrap it within a row.\n */\n\n\nfunction cellOnlyInRow(opts, change, context) {\n  return change.wrapBlockByKey(context.node.key, opts.typeRow);\n}\n\nexports.default = schema;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/validation/schema.js?");
-
-/***/ }),
-
-/***/ "./node_modules/slate-edit-table/dist/validation/validateNode.js":
-/*!***********************************************************************!*\
-  !*** ./node_modules/slate-edit-table/dist/validation/validateNode.js ***!
-  \***********************************************************************/
-/*! no static exports found */
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n\nvar _utils = __webpack_require__(/*! ../utils */ \"./node_modules/slate-edit-table/dist/utils/index.js\");\n/*\n * Ensure each row has the same number of columns.\n */\n\n\nfunction validateNode(opts) {\n  var isRow = function isRow(node) {\n    return node.type === opts.typeRow;\n  };\n\n  var isCell = function isCell(node) {\n    return node.type === opts.typeCell;\n  };\n\n  var countCells = function countCells(row) {\n    return row.nodes.count(isCell);\n  };\n\n  return function (node) {\n    if (node.type !== opts.typeTable) {\n      return undefined;\n    }\n\n    var rows = node.nodes.filter(isRow);\n    var maxColumns = Math.max( // Minimum 1 column\n    1, rows.map(countCells).max());\n    var rowsMissingColumns = rows.filter(function (row) {\n      return countCells(row) < maxColumns;\n    });\n\n    if (rowsMissingColumns.isEmpty()) {\n      return undefined;\n    }\n\n    return function (change) {\n      rowsMissingColumns.forEach(function (row) {\n        var numberOfCellsToAdd = maxColumns - row.nodes.size;\n        var cells = Array.from({\n          length: numberOfCellsToAdd\n        }).map(function () {\n          return (0, _utils.createCell)(opts);\n        });\n        cells.forEach(function (cell) {\n          return change.insertNodeByKey(row.key, row.nodes.size, cell, {\n            normalize: false\n          });\n        });\n      });\n    };\n  };\n}\n\nexports.default = validateNode;\n\n//# sourceURL=webpack:///./node_modules/slate-edit-table/dist/validation/validateNode.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_CHROME\", function() { return IS_CHROME; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_OPERA\", function() { return IS_OPERA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_FIREFOX\", function() { return IS_FIREFOX; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_SAFARI\", function() { return IS_SAFARI; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_IE\", function() { return IS_IE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_EDGE\", function() { return IS_EDGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_ANDROID\", function() { return IS_ANDROID; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_IOS\", function() { return IS_IOS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_MAC\", function() { return IS_MAC; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"IS_WINDOWS\", function() { return IS_WINDOWS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ANDROID_API_VERSION\", function() { return ANDROID_API_VERSION; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HAS_INPUT_EVENTS_LEVEL_1\", function() { return HAS_INPUT_EVENTS_LEVEL_1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HAS_INPUT_EVENTS_LEVEL_2\", function() { return HAS_INPUT_EVENTS_LEVEL_2; });\n/* harmony import */ var is_in_browser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-in-browser */ \"./node_modules/is-in-browser/dist/module.js\");\n\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n/**\n * Browser matching rules.\n *\n * @type {Array}\n */\n\n\nvar BROWSER_RULES = [['edge', /Edge\\/([0-9\\._]+)/], ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/], ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/], ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)$/], ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+)\\).*Gecko$/], ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/], ['ie', /MSIE\\s(7\\.0)/], ['android', /Android\\s([0-9\\.]+)/], ['safari', /Version\\/([0-9\\._]+).*Safari/]];\nvar browser = void 0;\n\nif (is_in_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n  var _iteratorNormalCompletion = true;\n  var _didIteratorError = false;\n  var _iteratorError = undefined;\n\n  try {\n    for (var _iterator = BROWSER_RULES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n      var _ref = _step.value;\n\n      var _ref2 = slicedToArray(_ref, 2);\n\n      var name = _ref2[0];\n      var regexp = _ref2[1];\n\n      if (regexp.test(window.navigator.userAgent)) {\n        browser = name;\n        break;\n      }\n    }\n  } catch (err) {\n    _didIteratorError = true;\n    _iteratorError = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion && _iterator.return) {\n        _iterator.return();\n      }\n    } finally {\n      if (_didIteratorError) {\n        throw _iteratorError;\n      }\n    }\n  }\n}\n/**\n * Operating system matching rules.\n *\n * @type {Array}\n */\n\n\nvar OS_RULES = [['ios', /os ([\\.\\_\\d]+) like mac os/i], // must be before the macos rule\n['macos', /mac os x/i], ['android', /android/i], ['firefoxos', /mozilla\\/[a-z\\.\\_\\d]+ \\((?:mobile)|(?:tablet)/i], ['windows', /windows\\s*(?:nt)?\\s*([\\.\\_\\d]+)/i]];\nvar os = void 0;\n\nif (is_in_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n  var _iteratorNormalCompletion2 = true;\n  var _didIteratorError2 = false;\n  var _iteratorError2 = undefined;\n\n  try {\n    for (var _iterator2 = OS_RULES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n      var _ref3 = _step2.value;\n\n      var _ref4 = slicedToArray(_ref3, 2);\n\n      var _name = _ref4[0];\n      var _regexp = _ref4[1];\n\n      if (_regexp.test(window.navigator.userAgent)) {\n        os = _name;\n        break;\n      }\n    }\n  } catch (err) {\n    _didIteratorError2 = true;\n    _iteratorError2 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion2 && _iterator2.return) {\n        _iterator2.return();\n      }\n    } finally {\n      if (_didIteratorError2) {\n        throw _iteratorError2;\n      }\n    }\n  }\n}\n/**\n * Feature matching rules.\n *\n * @type {Array}\n */\n\n\nvar FEATURE_RULES = [['inputeventslevel1', function (window) {\n  var event = window.InputEvent ? new window.InputEvent('input') : {};\n  var support = 'inputType' in event;\n  return support;\n}], ['inputeventslevel2', function (window) {\n  var element = window.document.createElement('div');\n  element.contentEditable = true;\n  var support = 'onbeforeinput' in element;\n  return support;\n}]];\nvar features = [];\n\nif (is_in_browser__WEBPACK_IMPORTED_MODULE_0__[\"default\"]) {\n  var _iteratorNormalCompletion3 = true;\n  var _didIteratorError3 = false;\n  var _iteratorError3 = undefined;\n\n  try {\n    for (var _iterator3 = FEATURE_RULES[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n      var _ref5 = _step3.value;\n\n      var _ref6 = slicedToArray(_ref5, 2);\n\n      var _name2 = _ref6[0];\n      var test = _ref6[1];\n\n      if (test(window)) {\n        features.push(_name2);\n      }\n    }\n  } catch (err) {\n    _didIteratorError3 = true;\n    _iteratorError3 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion3 && _iterator3.return) {\n        _iterator3.return();\n      }\n    } finally {\n      if (_didIteratorError3) {\n        throw _iteratorError3;\n      }\n    }\n  }\n}\n/**\n * Array of regular expression matchers and their API version\n *\n * @type {Array}\n */\n\n\nvar ANDROID_API_VERSIONS = [[/^9([.]0|)/, 28], [/^8[.]1/, 27], [/^8([.]0|)/, 26], [/^7[.]1/, 25], [/^7([.]0|)/, 24], [/^6([.]0|)/, 23], [/^5[.]1/, 22], [/^5([.]0|)/, 21], [/^4[.]4/, 20]];\n/**\n * get the Android API version from the userAgent\n *\n * @return {number} version\n */\n\nfunction getAndroidApiVersion() {\n  if (os !== 'android') return null;\n  var userAgent = window.navigator.userAgent;\n  var matchData = userAgent.match(/Android\\s([0-9\\.]+)/);\n  if (matchData == null) return null;\n  var versionString = matchData[1];\n  var _iteratorNormalCompletion4 = true;\n  var _didIteratorError4 = false;\n  var _iteratorError4 = undefined;\n\n  try {\n    for (var _iterator4 = ANDROID_API_VERSIONS[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n      var _ref7 = _step4.value;\n\n      var _ref8 = slicedToArray(_ref7, 2);\n\n      var regex = _ref8[0];\n      var version = _ref8[1];\n      if (versionString.match(regex)) return version;\n    }\n  } catch (err) {\n    _didIteratorError4 = true;\n    _iteratorError4 = err;\n  } finally {\n    try {\n      if (!_iteratorNormalCompletion4 && _iterator4.return) {\n        _iterator4.return();\n      }\n    } finally {\n      if (_didIteratorError4) {\n        throw _iteratorError4;\n      }\n    }\n  }\n\n  return null;\n}\n/**\n * Export.\n *\n * @type {Boolean}\n */\n\n\nvar IS_CHROME = browser === 'chrome';\nvar IS_OPERA = browser === 'opera';\nvar IS_FIREFOX = browser === 'firefox';\nvar IS_SAFARI = browser === 'safari';\nvar IS_IE = browser === 'ie';\nvar IS_EDGE = browser === 'edge';\nvar IS_ANDROID = os === 'android';\nvar IS_IOS = os === 'ios';\nvar IS_MAC = os === 'macos';\nvar IS_WINDOWS = os === 'windows';\nvar ANDROID_API_VERSION = getAndroidApiVersion();\nvar HAS_INPUT_EVENTS_LEVEL_1 = features.includes('inputeventslevel1');\nvar HAS_INPUT_EVENTS_LEVEL_2 = features.includes('inputeventslevel2') || IS_ANDROID && (ANDROID_API_VERSION === 28 || ANDROID_API_VERSION === null);\n\n\n//# sourceURL=webpack:///./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js?");
 
 /***/ }),
 
@@ -19523,7 +19056,7 @@ eval("\n\nObject.defineProperty(exports, \"__esModule\", {\n  value: true\n});\n
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var is_hotkey__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-hotkey */ \"./node_modules/is-hotkey/lib/index.js\");\n/* harmony import */ var is_hotkey__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_hotkey__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var slate_dev_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate-dev-environment */ \"./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js\");\n\n\n/**\n * Is Apple?\n *\n * @type {Boolean}\n */\n\nvar IS_APPLE = slate_dev_environment__WEBPACK_IMPORTED_MODULE_1__[\"IS_IOS\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_1__[\"IS_MAC\"];\n/**\n * Hotkeys.\n *\n * @type {Function}\n */\n\nvar isBold = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('mod+b');\nvar isItalic = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('mod+i');\nvar isEnter = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('enter');\nvar isShiftEnter = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+enter');\n\nvar isSplitBlock = function isSplitBlock(e) {\n  return isEnter(e) || isShiftEnter(e);\n};\n\nvar isBackspace = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('backspace');\nvar isShiftBackspace = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+backspace');\nvar isDelete = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('delete');\nvar isShiftDelete = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+delete');\n\nvar isDeleteBackward = function isDeleteBackward(e) {\n  return isBackspace(e) || isShiftBackspace(e);\n};\n\nvar isDeleteForward = function isDeleteForward(e) {\n  return isDelete(e) || isShiftDelete(e);\n};\n\nvar isDeleteCharBackwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('ctrl+h');\nvar isDeleteCharForwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('ctrl+d');\n\nvar isDeleteCharBackward = function isDeleteCharBackward(e) {\n  return isDeleteBackward(e) || IS_APPLE && isDeleteCharBackwardMac(e);\n};\n\nvar isDeleteCharForward = function isDeleteCharForward(e) {\n  return isDeleteForward(e) || IS_APPLE && isDeleteCharForwardMac(e);\n};\n\nvar isDeleteLineBackwardMac = function isDeleteLineBackwardMac(e) {\n  return Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('cmd+shift+backspace', e) || Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('cmd+backspace', e);\n};\n\nvar isDeleteLineForwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('ctrl+k');\n\nvar isDeleteLineBackward = function isDeleteLineBackward(e) {\n  return IS_APPLE && isDeleteLineBackwardMac(e);\n};\n\nvar isDeleteLineForward = function isDeleteLineForward(e) {\n  return IS_APPLE && isDeleteLineForwardMac(e);\n};\n\nvar isDeleteWordBackwardMac = function isDeleteWordBackwardMac(e) {\n  return Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+option+backspace', e) || Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('option+backspace', e);\n};\n\nvar isDeleteWordBackwardPC = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('ctrl+backspace');\n\nvar isDeleteWordForwardMac = function isDeleteWordForwardMac(e) {\n  return Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+option+delete', e) || Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('option+delete', e);\n};\n\nvar isDeleteWordForwardPC = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('ctrl+delete');\n\nvar isDeleteWordBackward = function isDeleteWordBackward(e) {\n  return IS_APPLE ? isDeleteWordBackwardMac(e) : isDeleteWordBackwardPC(e);\n};\n\nvar isDeleteWordForward = function isDeleteWordForward(e) {\n  return IS_APPLE ? isDeleteWordForwardMac(e) : isDeleteWordForwardPC(e);\n};\n\nvar isExtendCharForward = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+right');\nvar isExtendCharBackward = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('shift+left');\nvar isRightArrow = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('right');\nvar isLeftArrow = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('left');\n\nvar isCollapseCharForward = function isCollapseCharForward(e) {\n  return isRightArrow(e) && !isExtendCharForward(e);\n};\n\nvar isCollapseCharBackward = function isCollapseCharBackward(e) {\n  return isLeftArrow(e) && !isExtendCharBackward(e);\n};\n\nvar isCollapseLineBackwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('option+up');\nvar isCollapseLineForwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('option+down');\n\nvar isCollapseLineBackward = function isCollapseLineBackward(e) {\n  return IS_APPLE && isCollapseLineBackwardMac(e);\n};\n\nvar isCollapseLineForward = function isCollapseLineForward(e) {\n  return IS_APPLE && isCollapseLineForwardMac(e);\n};\n\nvar isExtendLineBackwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('option+shift+up');\nvar isExtendLineForwardMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('option+shift+down');\n\nvar isExtendLineBackward = function isExtendLineBackward(e) {\n  return IS_APPLE && isExtendLineBackwardMac(e);\n};\n\nvar isExtendLineForward = function isExtendLineForward(e) {\n  return IS_APPLE && isExtendLineForwardMac(e);\n};\n\nvar isUndo = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('mod+z');\nvar isRedoMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('mod+shift+z');\nvar isRedoPC = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('mod+y');\n\nvar isRedo = function isRedo(e) {\n  return IS_APPLE ? isRedoMac(e) : isRedoPC(e);\n};\n\nvar isTransposeCharacterMac = Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])('ctrl+t');\n\nvar isTransposeCharacter = function isTransposeCharacter(e) {\n  return IS_APPLE && isTransposeCharacterMac(e);\n};\n\nvar isContentEditable = function isContentEditable(e) {\n  return isBold(e) || isDeleteCharBackward(e) || isDeleteCharForward(e) || isDeleteLineBackward(e) || isDeleteLineForward(e) || isDeleteWordBackward(e) || isDeleteWordForward(e) || isItalic(e) || isRedo(e) || isSplitBlock(e) || isTransposeCharacter(e) || isUndo(e);\n};\n\nvar isComposing = function isComposing(e) {\n  return e.key == 'ArrowDown' || e.key == 'ArrowLeft' || e.key == 'ArrowRight' || e.key == 'ArrowUp' || e.key == 'Backspace' || e.key == 'Enter';\n};\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar index = {\n  isBold: isBold,\n  isCollapseCharBackward: isCollapseCharBackward,\n  isCollapseCharForward: isCollapseCharForward,\n  isCollapseLineBackward: isCollapseLineBackward,\n  isCollapseLineForward: isCollapseLineForward,\n  isComposing: isComposing,\n  isContentEditable: isContentEditable,\n  isDeleteCharBackward: isDeleteCharBackward,\n  isDeleteCharForward: isDeleteCharForward,\n  isDeleteLineBackward: isDeleteLineBackward,\n  isDeleteLineForward: isDeleteLineForward,\n  isDeleteWordBackward: isDeleteWordBackward,\n  isDeleteWordForward: isDeleteWordForward,\n  isExtendCharBackward: isExtendCharBackward,\n  isExtendCharForward: isExtendCharForward,\n  isExtendLineBackward: isExtendLineBackward,\n  isExtendLineForward: isExtendLineForward,\n  isItalic: isItalic,\n  isRedo: isRedo,\n  isSplitBlock: isSplitBlock,\n  isUndo: isUndo\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/slate-hotkeys/lib/slate-hotkeys.es.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var is_hotkey__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-hotkey */ \"./node_modules/is-hotkey/lib/index.js\");\n/* harmony import */ var is_hotkey__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_hotkey__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var slate_dev_environment__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate-dev-environment */ \"./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js\");\n\n\n/**\n * Hotkey mappings for each platform.\n *\n * @type {Object}\n */\n\nvar HOTKEYS = {\n  bold: 'mod+b',\n  compose: ['down', 'left', 'right', 'up', 'backspace', 'enter'],\n  moveBackward: 'left',\n  moveForward: 'right',\n  moveWordBackward: 'ctrl+left',\n  moveWordForward: 'ctrl+right',\n  deleteBackward: 'shift?+backspace',\n  deleteForward: 'shift?+delete',\n  extendBackward: 'shift+left',\n  extendForward: 'shift+right',\n  italic: 'mod+i',\n  splitBlock: 'shift?+enter',\n  undo: 'mod+z'\n};\nvar APPLE_HOTKEYS = {\n  moveLineBackward: 'opt+up',\n  moveLineForward: 'opt+down',\n  moveWordBackward: 'opt+left',\n  moveWordForward: 'opt+right',\n  deleteBackward: ['ctrl+backspace', 'ctrl+h'],\n  deleteForward: ['ctrl+delete', 'ctrl+d'],\n  deleteLineBackward: 'cmd+shift?+backspace',\n  deleteLineForward: ['cmd+shift?+delete', 'ctrl+k'],\n  deleteWordBackward: 'opt+shift?+backspace',\n  deleteWordForward: 'opt+shift?+delete',\n  extendLineBackward: 'opt+shift+up',\n  extendLineForward: 'opt+shift+down',\n  redo: 'cmd+shift+z',\n  transposeCharacter: 'ctrl+t'\n};\nvar WINDOWS_HOTKEYS = {\n  deleteWordBackward: 'ctrl+shift?+backspace',\n  deleteWordForward: 'ctrl+shift?+delete',\n  redo: 'ctrl+y'\n  /**\n   * Hotkeys.\n   *\n   * @type {Object}\n   */\n\n};\nvar Hotkeys = {};\nvar IS_APPLE = slate_dev_environment__WEBPACK_IMPORTED_MODULE_1__[\"IS_IOS\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_1__[\"IS_MAC\"];\nvar IS_WINDOWS = !IS_APPLE;\nvar KEYS = [].concat(Object.keys(HOTKEYS)).concat(Object.keys(APPLE_HOTKEYS)).concat(Object.keys(WINDOWS_HOTKEYS));\nKEYS.forEach(function (key) {\n  var method = 'is' + key[0].toUpperCase() + key.slice(1);\n  if (Hotkeys[method]) return;\n  var generic = HOTKEYS[key];\n  var apple = APPLE_HOTKEYS[key];\n  var windows = WINDOWS_HOTKEYS[key];\n  var isGeneric = generic && Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])(generic);\n  var isApple = apple && Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])(apple);\n  var isWindows = windows && Object(is_hotkey__WEBPACK_IMPORTED_MODULE_0__[\"isKeyHotkey\"])(windows);\n\n  Hotkeys[method] = function (event) {\n    if (isGeneric && isGeneric(event)) return true;\n    if (IS_APPLE && isApple && isApple(event)) return true;\n    if (IS_WINDOWS && isWindows && isWindows(event)) return true;\n    return false;\n  };\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (Hotkeys);\n\n//# sourceURL=webpack:///./node_modules/slate-hotkeys/lib/slate-hotkeys.es.js?");
 
 /***/ }),
 
@@ -19535,7 +19068,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var is_h
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/server */ \"./node_modules/react-dom/server.browser.js\");\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom_server__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var type_of__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! type-of */ \"./node_modules/type-of/index.js\");\n/* harmony import */ var type_of__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(type_of__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar toConsumableArray = function toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n/**\n * String.\n *\n * @type {String}\n */\n\n\nvar String = new immutable__WEBPACK_IMPORTED_MODULE_4__[\"Record\"]({\n  object: 'string',\n  text: ''\n});\n/**\n * A rule to (de)serialize text nodes. This is automatically added to the HTML\n * serializer so that users don't have to worry about text-level serialization.\n *\n * @type {Object}\n */\n\nvar TEXT_RULE = {\n  deserialize: function deserialize(el) {\n    if (el.tagName && el.tagName.toLowerCase() === 'br') {\n      return {\n        object: 'text',\n        leaves: [{\n          object: 'leaf',\n          text: '\\n'\n        }]\n      };\n    }\n\n    if (el.nodeName == '#text') {\n      if (el.nodeValue && el.nodeValue.match(//)) return;\n      return {\n        object: 'text',\n        leaves: [{\n          object: 'leaf',\n          text: el.nodeValue\n        }]\n      };\n    }\n  },\n  serialize: function serialize(obj, children) {\n    if (obj.object === 'string') {\n      return children.split('\\n').reduce(function (array, text, i) {\n        if (i != 0) array.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement('br', {\n          key: i\n        }));\n        array.push(text);\n        return array;\n      }, []);\n    }\n  }\n};\n/**\n * A default `parseHtml` function that returns the `` using `DOMParser`.\n *\n * @param {String} html\n * @return {Object}\n */\n\nfunction defaultParseHtml(html) {\n  if (typeof DOMParser === 'undefined') {\n    throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');\n  }\n\n  var parsed = new DOMParser().parseFromString(html, 'text/html');\n  var body = parsed.body; // COMPAT: in IE 11 body is null if html is an empty string\n\n  return body || window.document.createElement('body');\n}\n/**\n * HTML serializer.\n *\n * @type {Html}\n */\n\n\nvar Html =\n/**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n *   @property {Array} rules\n *   @property {String|Object|Block} defaultBlock\n *   @property {Function} parseHtml\n */\nfunction Html() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  classCallCheck(this, Html);\n\n  _initialiseProps.call(this);\n\n  var _options$defaultBlock = options.defaultBlock,\n      defaultBlock = _options$defaultBlock === undefined ? 'paragraph' : _options$defaultBlock,\n      _options$parseHtml = options.parseHtml,\n      parseHtml = _options$parseHtml === undefined ? defaultParseHtml : _options$parseHtml,\n      _options$rules = options.rules,\n      rules = _options$rules === undefined ? [] : _options$rules;\n  defaultBlock = slate__WEBPACK_IMPORTED_MODULE_3__[\"Node\"].createProperties(defaultBlock);\n  this.rules = [].concat(toConsumableArray(rules), [TEXT_RULE]);\n  this.defaultBlock = defaultBlock;\n  this.parseHtml = parseHtml;\n};\n/**\n * Add a unique key to a React `element`.\n *\n * @param {Element} element\n * @return {Element}\n */\n\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this = this;\n\n  this.deserialize = function (html) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var _options$toJSON = options.toJSON,\n        toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n    var defaultBlock = _this.defaultBlock,\n        parseHtml = _this.parseHtml;\n    var fragment = parseHtml(html);\n    var children = Array.from(fragment.childNodes);\n\n    var nodes = _this.deserializeElements(children); // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n\n\n    nodes = nodes.reduce(function (memo, node, i, original) {\n      if (node.object == 'block') {\n        memo.push(node);\n        return memo;\n      }\n\n      if (i > 0 && original[i - 1].object != 'block') {\n        var _block = memo[memo.length - 1];\n\n        _block.nodes.push(node);\n\n        return memo;\n      }\n\n      var block = _extends({\n        object: 'block',\n        data: {},\n        isVoid: false\n      }, defaultBlock, {\n        nodes: [node]\n      });\n\n      memo.push(block);\n      return memo;\n    }, []); // TODO: pretty sure this is no longer needed.\n\n    if (nodes.length == 0) {\n      nodes = [_extends({\n        object: 'block',\n        data: {},\n        isVoid: false\n      }, defaultBlock, {\n        nodes: [{\n          object: 'text',\n          leaves: [{\n            object: 'leaf',\n            text: '',\n            marks: []\n          }]\n        }]\n      })];\n    }\n\n    var json = {\n      object: 'value',\n      document: {\n        object: 'document',\n        data: {},\n        nodes: nodes\n      }\n    };\n    var ret = toJSON ? json : slate__WEBPACK_IMPORTED_MODULE_3__[\"Value\"].fromJSON(json);\n    return ret;\n  };\n\n  this.deserializeElements = function () {\n    var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var nodes = [];\n    elements.filter(_this.cruftNewline).forEach(function (element) {\n      var node = _this.deserializeElement(element);\n\n      switch (type_of__WEBPACK_IMPORTED_MODULE_2___default()(node)) {\n        case 'array':\n          nodes = nodes.concat(node);\n          break;\n\n        case 'object':\n          nodes.push(node);\n          break;\n      }\n    });\n    return nodes;\n  };\n\n  this.deserializeElement = function (element) {\n    var node = void 0;\n\n    if (!element.tagName) {\n      element.tagName = '';\n    }\n\n    var next = function next(elements) {\n      if (Object.prototype.toString.call(elements) == '[object NodeList]') {\n        elements = Array.from(elements);\n      }\n\n      switch (type_of__WEBPACK_IMPORTED_MODULE_2___default()(elements)) {\n        case 'array':\n          return _this.deserializeElements(elements);\n\n        case 'object':\n          return _this.deserializeElement(elements);\n\n        case 'null':\n        case 'undefined':\n          return;\n\n        default:\n          throw new Error('The `next` argument was called with invalid children: \"' + elements + '\".');\n      }\n    };\n\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = _this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var rule = _step.value;\n        if (!rule.deserialize) continue;\n        var ret = rule.deserialize(element, next);\n        var type = type_of__WEBPACK_IMPORTED_MODULE_2___default()(ret);\n\n        if (type != 'array' && type != 'object' && type != 'null' && type != 'undefined') {\n          throw new Error('A rule returned an invalid deserialized representation: \"' + node + '\".');\n        }\n\n        if (ret === undefined) {\n          continue;\n        } else if (ret === null) {\n          return null;\n        } else if (ret.object == 'mark') {\n          node = _this.deserializeMark(ret);\n        } else {\n          node = ret;\n        }\n\n        break;\n      }\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    return node || next(element.childNodes);\n  };\n\n  this.deserializeMark = function (mark) {\n    var type = mark.type,\n        data = mark.data;\n\n    var applyMark = function applyMark(node) {\n      if (node.object == 'mark') {\n        return _this.deserializeMark(node);\n      } else if (node.object == 'text') {\n        node.leaves = node.leaves.map(function (leaf) {\n          leaf.marks = leaf.marks || [];\n          leaf.marks.push({\n            type: type,\n            data: data\n          });\n          return leaf;\n        });\n      } else if (node.nodes) {\n        node.nodes = node.nodes.map(applyMark);\n      }\n\n      return node;\n    };\n\n    return mark.nodes.reduce(function (nodes, node) {\n      var ret = applyMark(node);\n      if (Array.isArray(ret)) return nodes.concat(ret);\n      nodes.push(ret);\n      return nodes;\n    }, []);\n  };\n\n  this.serialize = function (value) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var document = value.document;\n    var elements = document.nodes.map(_this.serializeNode).filter(function (el) {\n      return el;\n    });\n    if (options.render === false) return elements;\n    var html = Object(react_dom_server__WEBPACK_IMPORTED_MODULE_1__[\"renderToStaticMarkup\"])(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement('body', null, elements));\n    var inner = html.slice(6, -7);\n    return inner;\n  };\n\n  this.serializeNode = function (node) {\n    if (node.object === 'text') {\n      var leaves = node.getLeaves();\n      return leaves.map(_this.serializeLeaf);\n    }\n\n    var children = node.nodes.map(_this.serializeNode);\n    var _iteratorNormalCompletion2 = true;\n    var _didIteratorError2 = false;\n    var _iteratorError2 = undefined;\n\n    try {\n      for (var _iterator2 = _this.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n        var rule = _step2.value;\n        if (!rule.serialize) continue;\n        var ret = rule.serialize(node, children);\n        if (ret === null) return;\n        if (ret) return addKey(ret);\n      }\n    } catch (err) {\n      _didIteratorError2 = true;\n      _iteratorError2 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion2 && _iterator2.return) {\n          _iterator2.return();\n        }\n      } finally {\n        if (_didIteratorError2) {\n          throw _iteratorError2;\n        }\n      }\n    }\n\n    throw new Error('No serializer defined for node of type \"' + node.type + '\".');\n  };\n\n  this.serializeLeaf = function (leaf) {\n    var string = new String({\n      text: leaf.text\n    });\n\n    var text = _this.serializeString(string);\n\n    return leaf.marks.reduce(function (children, mark) {\n      var _iteratorNormalCompletion3 = true;\n      var _didIteratorError3 = false;\n      var _iteratorError3 = undefined;\n\n      try {\n        for (var _iterator3 = _this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n          var rule = _step3.value;\n          if (!rule.serialize) continue;\n          var ret = rule.serialize(mark, children);\n          if (ret === null) return;\n          if (ret) return addKey(ret);\n        }\n      } catch (err) {\n        _didIteratorError3 = true;\n        _iteratorError3 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion3 && _iterator3.return) {\n            _iterator3.return();\n          }\n        } finally {\n          if (_didIteratorError3) {\n            throw _iteratorError3;\n          }\n        }\n      }\n\n      throw new Error('No serializer defined for mark of type \"' + mark.type + '\".');\n    }, text);\n  };\n\n  this.serializeString = function (string) {\n    var _iteratorNormalCompletion4 = true;\n    var _didIteratorError4 = false;\n    var _iteratorError4 = undefined;\n\n    try {\n      for (var _iterator4 = _this.rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n        var rule = _step4.value;\n        if (!rule.serialize) continue;\n        var ret = rule.serialize(string, string.text);\n        if (ret) return ret;\n      }\n    } catch (err) {\n      _didIteratorError4 = true;\n      _iteratorError4 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion4 && _iterator4.return) {\n          _iterator4.return();\n        }\n      } finally {\n        if (_didIteratorError4) {\n          throw _iteratorError4;\n        }\n      }\n    }\n  };\n\n  this.cruftNewline = function (element) {\n    return !(element.nodeName === '#text' && element.nodeValue == '\\n');\n  };\n};\n\nvar key = 0;\n\nfunction addKey(element) {\n  return react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(element, {\n    key: key++\n  });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Html);\n\n//# sourceURL=webpack:///./node_modules/slate-html-serializer/lib/slate-html-serializer.es.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-dom/server */ \"./node_modules/react-dom/server.browser.js\");\n/* harmony import */ var react_dom_server__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom_server__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var type_of__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! type-of */ \"./node_modules/type-of/index.js\");\n/* harmony import */ var type_of__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(type_of__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar toConsumableArray = function toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n/**\n * String.\n *\n * @type {String}\n */\n\n\nvar String = new immutable__WEBPACK_IMPORTED_MODULE_4__[\"Record\"]({\n  object: 'string',\n  text: ''\n});\n/**\n * A rule to (de)serialize text nodes. This is automatically added to the HTML\n * serializer so that users don't have to worry about text-level serialization.\n *\n * @type {Object}\n */\n\nvar TEXT_RULE = {\n  deserialize: function deserialize(el) {\n    if (el.tagName && el.tagName.toLowerCase() === 'br') {\n      return {\n        object: 'text',\n        leaves: [{\n          object: 'leaf',\n          text: '\\n'\n        }]\n      };\n    }\n\n    if (el.nodeName === '#text') {\n      if (el.nodeValue && el.nodeValue.match(//)) return;\n      return {\n        object: 'text',\n        leaves: [{\n          object: 'leaf',\n          text: el.nodeValue\n        }]\n      };\n    }\n  },\n  serialize: function serialize(obj, children) {\n    if (obj.object === 'string') {\n      return children.split('\\n').reduce(function (array, text, i) {\n        if (i !== 0) array.push(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement('br', {\n          key: i\n        }));\n        array.push(text);\n        return array;\n      }, []);\n    }\n  }\n};\n/**\n * A default `parseHtml` function that returns the `` using `DOMParser`.\n *\n * @param {String} html\n * @return {Object}\n */\n\nfunction defaultParseHtml(html) {\n  if (typeof DOMParser == 'undefined') {\n    throw new Error('The native `DOMParser` global which the `Html` serializer uses by default is not present in this environment. You must supply the `options.parseHtml` function instead.');\n  }\n\n  var parsed = new DOMParser().parseFromString(html, 'text/html');\n  var body = parsed.body; // COMPAT: in IE 11 body is null if html is an empty string\n\n  return body || window.document.createElement('body');\n}\n/**\n * HTML serializer.\n *\n * @type {Html}\n */\n\n\nvar Html =\n/**\n * Create a new serializer with `rules`.\n *\n * @param {Object} options\n *   @property {Array} rules\n *   @property {String|Object|Block} defaultBlock\n *   @property {Function} parseHtml\n */\nfunction Html() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  classCallCheck(this, Html);\n\n  _initialiseProps.call(this);\n\n  var _options$defaultBlock = options.defaultBlock,\n      defaultBlock = _options$defaultBlock === undefined ? 'paragraph' : _options$defaultBlock,\n      _options$parseHtml = options.parseHtml,\n      parseHtml = _options$parseHtml === undefined ? defaultParseHtml : _options$parseHtml,\n      _options$rules = options.rules,\n      rules = _options$rules === undefined ? [] : _options$rules;\n  defaultBlock = slate__WEBPACK_IMPORTED_MODULE_3__[\"Node\"].createProperties(defaultBlock);\n  this.rules = [].concat(toConsumableArray(rules), [TEXT_RULE]);\n  this.defaultBlock = defaultBlock;\n  this.parseHtml = parseHtml;\n};\n/**\n * Add a unique key to a React `element`.\n *\n * @param {Element} element\n * @return {Element}\n */\n\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this = this;\n\n  this.deserialize = function (html) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var _options$toJSON = options.toJSON,\n        toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n    var defaultBlock = _this.defaultBlock,\n        parseHtml = _this.parseHtml;\n    var fragment = parseHtml(html);\n    var children = Array.from(fragment.childNodes);\n\n    var nodes = _this.deserializeElements(children); // COMPAT: ensure that all top-level inline nodes are wrapped into a block.\n\n\n    nodes = nodes.reduce(function (memo, node, i, original) {\n      if (node.object === 'block') {\n        memo.push(node);\n        return memo;\n      }\n\n      if (i > 0 && original[i - 1].object !== 'block') {\n        var _block = memo[memo.length - 1];\n\n        _block.nodes.push(node);\n\n        return memo;\n      }\n\n      var block = _extends({\n        object: 'block',\n        data: {}\n      }, defaultBlock, {\n        nodes: [node]\n      });\n\n      memo.push(block);\n      return memo;\n    }, []); // TODO: pretty sure this is no longer needed.\n\n    if (nodes.length === 0) {\n      nodes = [_extends({\n        object: 'block',\n        data: {}\n      }, defaultBlock, {\n        nodes: [{\n          object: 'text',\n          leaves: [{\n            object: 'leaf',\n            text: '',\n            marks: []\n          }]\n        }]\n      })];\n    }\n\n    var json = {\n      object: 'value',\n      document: {\n        object: 'document',\n        data: {},\n        nodes: nodes\n      }\n    };\n    var ret = toJSON ? json : slate__WEBPACK_IMPORTED_MODULE_3__[\"Value\"].fromJSON(json);\n    return ret;\n  };\n\n  this.deserializeElements = function () {\n    var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n    var nodes = [];\n    elements.filter(_this.cruftNewline).forEach(function (element) {\n      var node = _this.deserializeElement(element);\n\n      switch (type_of__WEBPACK_IMPORTED_MODULE_2___default()(node)) {\n        case 'array':\n          nodes = nodes.concat(node);\n          break;\n\n        case 'object':\n          nodes.push(node);\n          break;\n      }\n    });\n    return nodes;\n  };\n\n  this.deserializeElement = function (element) {\n    var node = void 0;\n\n    if (!element.tagName) {\n      element.tagName = '';\n    }\n\n    var next = function next(elements) {\n      if (Object.prototype.toString.call(elements) === '[object NodeList]') {\n        elements = Array.from(elements);\n      }\n\n      switch (type_of__WEBPACK_IMPORTED_MODULE_2___default()(elements)) {\n        case 'array':\n          return _this.deserializeElements(elements);\n\n        case 'object':\n          return _this.deserializeElement(elements);\n\n        case 'null':\n        case 'undefined':\n          return;\n\n        default:\n          throw new Error('The `next` argument was called with invalid children: \"' + elements + '\".');\n      }\n    };\n\n    var _iteratorNormalCompletion = true;\n    var _didIteratorError = false;\n    var _iteratorError = undefined;\n\n    try {\n      for (var _iterator = _this.rules[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n        var rule = _step.value;\n        if (!rule.deserialize) continue;\n        var ret = rule.deserialize(element, next);\n        var type = type_of__WEBPACK_IMPORTED_MODULE_2___default()(ret);\n\n        if (type !== 'array' && type !== 'object' && type !== 'null' && type !== 'undefined') {\n          throw new Error('A rule returned an invalid deserialized representation: \"' + node + '\".');\n        }\n\n        if (ret === undefined) {\n          continue;\n        } else if (ret === null) {\n          return null;\n        } else if (ret.object === 'mark') {\n          node = _this.deserializeMark(ret);\n        } else {\n          node = ret;\n        }\n\n        break;\n      }\n    } catch (err) {\n      _didIteratorError = true;\n      _iteratorError = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion && _iterator.return) {\n          _iterator.return();\n        }\n      } finally {\n        if (_didIteratorError) {\n          throw _iteratorError;\n        }\n      }\n    }\n\n    return node || next(element.childNodes);\n  };\n\n  this.deserializeMark = function (mark) {\n    var type = mark.type,\n        data = mark.data;\n\n    var applyMark = function applyMark(node) {\n      if (node.object === 'mark') {\n        return _this.deserializeMark(node);\n      } else if (node.object === 'text') {\n        node.leaves = node.leaves.map(function (leaf) {\n          leaf.marks = leaf.marks || [];\n          leaf.marks.push({\n            type: type,\n            data: data\n          });\n          return leaf;\n        });\n      } else if (node.nodes) {\n        node.nodes = node.nodes.map(applyMark);\n      }\n\n      return node;\n    };\n\n    return mark.nodes.reduce(function (nodes, node) {\n      var ret = applyMark(node);\n      if (Array.isArray(ret)) return nodes.concat(ret);\n      nodes.push(ret);\n      return nodes;\n    }, []);\n  };\n\n  this.serialize = function (value) {\n    var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n    var document = value.document;\n    var elements = document.nodes.map(_this.serializeNode).filter(function (el) {\n      return el;\n    });\n    if (options.render === false) return elements;\n    var html = Object(react_dom_server__WEBPACK_IMPORTED_MODULE_1__[\"renderToStaticMarkup\"])(react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement('body', null, elements));\n    var inner = html.slice(6, -7);\n    return inner;\n  };\n\n  this.serializeNode = function (node) {\n    if (node.object === 'text') {\n      var leaves = node.getLeaves();\n      return leaves.map(_this.serializeLeaf);\n    }\n\n    var children = node.nodes.map(_this.serializeNode);\n    var _iteratorNormalCompletion2 = true;\n    var _didIteratorError2 = false;\n    var _iteratorError2 = undefined;\n\n    try {\n      for (var _iterator2 = _this.rules[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n        var rule = _step2.value;\n        if (!rule.serialize) continue;\n        var ret = rule.serialize(node, children);\n        if (ret === null) return;\n        if (ret) return addKey(ret);\n      }\n    } catch (err) {\n      _didIteratorError2 = true;\n      _iteratorError2 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion2 && _iterator2.return) {\n          _iterator2.return();\n        }\n      } finally {\n        if (_didIteratorError2) {\n          throw _iteratorError2;\n        }\n      }\n    }\n\n    throw new Error('No serializer defined for node of type \"' + node.type + '\".');\n  };\n\n  this.serializeLeaf = function (leaf) {\n    var string = new String({\n      text: leaf.text\n    });\n\n    var text = _this.serializeString(string);\n\n    return leaf.marks.reduce(function (children, mark) {\n      var _iteratorNormalCompletion3 = true;\n      var _didIteratorError3 = false;\n      var _iteratorError3 = undefined;\n\n      try {\n        for (var _iterator3 = _this.rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n          var rule = _step3.value;\n          if (!rule.serialize) continue;\n          var ret = rule.serialize(mark, children);\n          if (ret === null) return;\n          if (ret) return addKey(ret);\n        }\n      } catch (err) {\n        _didIteratorError3 = true;\n        _iteratorError3 = err;\n      } finally {\n        try {\n          if (!_iteratorNormalCompletion3 && _iterator3.return) {\n            _iterator3.return();\n          }\n        } finally {\n          if (_didIteratorError3) {\n            throw _iteratorError3;\n          }\n        }\n      }\n\n      throw new Error('No serializer defined for mark of type \"' + mark.type + '\".');\n    }, text);\n  };\n\n  this.serializeString = function (string) {\n    var _iteratorNormalCompletion4 = true;\n    var _didIteratorError4 = false;\n    var _iteratorError4 = undefined;\n\n    try {\n      for (var _iterator4 = _this.rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n        var rule = _step4.value;\n        if (!rule.serialize) continue;\n        var ret = rule.serialize(string, string.text);\n        if (ret) return ret;\n      }\n    } catch (err) {\n      _didIteratorError4 = true;\n      _iteratorError4 = err;\n    } finally {\n      try {\n        if (!_iteratorNormalCompletion4 && _iterator4.return) {\n          _iterator4.return();\n        }\n      } finally {\n        if (_didIteratorError4) {\n          throw _iteratorError4;\n        }\n      }\n    }\n  };\n\n  this.cruftNewline = function (element) {\n    return !(element.nodeName === '#text' && element.nodeValue === '\\n');\n  };\n};\n\nvar key = 0;\n\nfunction addKey(element) {\n  return react__WEBPACK_IMPORTED_MODULE_0___default.a.cloneElement(element, {\n    key: key++\n  });\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Html);\n\n//# sourceURL=webpack:///./node_modules/slate-html-serializer/lib/slate-html-serializer.es.js?");
 
 /***/ }),
 
@@ -19547,7 +19080,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n/**\n * Deserialize a plain text `string` to a Slate value.\n *\n * @param {String} string\n * @param {Object} options\n *   @property {Boolean} toJSON\n *   @property {String|Object|Block} defaultBlock\n *   @property {Array|Set} defaultMarks\n * @return {Value}\n */\n\n\nfunction deserialize(string) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$defaultBlock = options.defaultBlock,\n      defaultBlock = _options$defaultBlock === undefined ? 'line' : _options$defaultBlock,\n      _options$defaultMarks = options.defaultMarks,\n      defaultMarks = _options$defaultMarks === undefined ? [] : _options$defaultMarks,\n      _options$toJSON = options.toJSON,\n      toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n\n  if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"].isSet(defaultMarks)) {\n    defaultMarks = defaultMarks.toArray();\n  }\n\n  defaultBlock = slate__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].createProperties(defaultBlock);\n  defaultMarks = defaultMarks.map(slate__WEBPACK_IMPORTED_MODULE_0__[\"Mark\"].createProperties);\n  var json = {\n    object: 'value',\n    document: {\n      object: 'document',\n      data: {},\n      nodes: string.split('\\n').map(function (line) {\n        return _extends({}, defaultBlock, {\n          object: 'block',\n          isVoid: false,\n          data: {},\n          nodes: [{\n            object: 'text',\n            leaves: [{\n              object: 'leaf',\n              text: line,\n              marks: defaultMarks\n            }]\n          }]\n        });\n      })\n    }\n  };\n  var ret = toJSON ? json : slate__WEBPACK_IMPORTED_MODULE_0__[\"Value\"].fromJSON(json);\n  return ret;\n}\n/**\n * Serialize a Slate `value` to a plain text string.\n *\n * @param {Value} value\n * @return {String}\n */\n\n\nfunction serialize(value) {\n  return serializeNode(value.document);\n}\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n\n\nfunction serializeNode(node) {\n  if (node.object == 'document' || node.object == 'block' && slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].isBlockList(node.nodes)) {\n    return node.nodes.map(serializeNode).join('\\n');\n  } else {\n    return node.text;\n  }\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar index = {\n  deserialize: deserialize,\n  serialize: serialize\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_1__);\n\n\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n/**\n * Deserialize a plain text `string` to a Slate value.\n *\n * @param {String} string\n * @param {Object} options\n *   @property {Boolean} toJSON\n *   @property {String|Object|Block} defaultBlock\n *   @property {Array|Set} defaultMarks\n * @return {Value}\n */\n\n\nfunction deserialize(string) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$defaultBlock = options.defaultBlock,\n      defaultBlock = _options$defaultBlock === undefined ? 'line' : _options$defaultBlock,\n      _options$defaultMarks = options.defaultMarks,\n      defaultMarks = _options$defaultMarks === undefined ? [] : _options$defaultMarks,\n      _options$delimiter = options.delimiter,\n      delimiter = _options$delimiter === undefined ? '\\n' : _options$delimiter,\n      _options$toJSON = options.toJSON,\n      toJSON = _options$toJSON === undefined ? false : _options$toJSON;\n\n  if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"].isSet(defaultMarks)) {\n    defaultMarks = defaultMarks.toArray();\n  }\n\n  defaultBlock = slate__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].createProperties(defaultBlock);\n  defaultMarks = defaultMarks.map(slate__WEBPACK_IMPORTED_MODULE_0__[\"Mark\"].createProperties);\n  var json = {\n    object: 'value',\n    document: {\n      object: 'document',\n      data: {},\n      nodes: string.split(delimiter).map(function (line) {\n        return _extends({}, defaultBlock, {\n          object: 'block',\n          data: {},\n          nodes: [{\n            object: 'text',\n            leaves: [{\n              object: 'leaf',\n              text: line,\n              marks: defaultMarks\n            }]\n          }]\n        });\n      })\n    }\n  };\n  var ret = toJSON ? json : slate__WEBPACK_IMPORTED_MODULE_0__[\"Value\"].fromJSON(json);\n  return ret;\n}\n/**\n * Serialize a Slate `value` to a plain text string.\n *\n * @param {Value} value\n * @return {String}\n */\n\n\nfunction serialize(value) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  return serializeNode(value.document, options);\n}\n/**\n * Serialize a `node` to plain text.\n *\n * @param {Node} node\n * @return {String}\n */\n\n\nfunction serializeNode(node) {\n  var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n  var _options$delimiter2 = options.delimiter,\n      delimiter = _options$delimiter2 === undefined ? '\\n' : _options$delimiter2;\n\n  if (node.object === 'document' || node.object === 'block' && slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].isBlockList(node.nodes)) {\n    return node.nodes.map(serializeNode).join(delimiter);\n  } else {\n    return node.text;\n  }\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar index = {\n  deserialize: deserialize,\n  serialize: serialize\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js?");
 
 /***/ }),
 
@@ -19559,7 +19092,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slat
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\n/**\n * Create a prop type checker for Slate objects with `name` and `validate`.\n *\n * @param {String} name\n * @param {Function} validate\n * @return {Function}\n */\n\nfunction create(name, validate) {\n  function check(isRequired, props, propName, componentName, location) {\n    var value = props[propName];\n    if (value == null && !isRequired) return null;\n    if (value == null && isRequired) return new Error('The ' + location + ' `' + propName + '` is marked as required in `' + componentName + '`, but it was not supplied.');\n    if (validate(value)) return null;\n    return new Error('Invalid ' + location + ' `' + propName + '` supplied to `' + componentName + '`, expected a Slate `' + name + '` but received: ' + value);\n  }\n\n  function propType() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return check.apply(undefined, [false].concat(args));\n  }\n\n  propType.isRequired = function () {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return check.apply(undefined, [true].concat(args));\n  };\n\n  return propType;\n}\n/**\n * Prop type checkers.\n *\n * @type {Object}\n */\n\n\nvar Types = {\n  block: create('Block', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].isBlock(v);\n  }),\n  blocks: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].isBlockList(v);\n  }),\n  change: create('Change', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Change\"].isChange(v);\n  }),\n  data: create('Data', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Data\"].isData(v);\n  }),\n  document: create('Document', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Document\"].isDocument(v);\n  }),\n  history: create('History', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"History\"].isHistory(v);\n  }),\n  inline: create('Inline', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Inline\"].isInline(v);\n  }),\n  inlines: create('Inline', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Inline\"].isInlineList(v);\n  }),\n  leaf: create('Leaf', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Leaf\"].isLeaf(v);\n  }),\n  leaves: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Leaf\"].isLeafList(v);\n  }),\n  mark: create('Mark', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Mark\"].isMark(v);\n  }),\n  marks: create('Set', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Mark\"].isMarkSet(v);\n  }),\n  node: create('Node', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].isNode(v);\n  }),\n  nodes: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].isNodeList(v);\n  }),\n  range: create('Range', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Range\"].isRange(v);\n  }),\n  ranges: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Range\"].isRangeList(v);\n  }),\n  schema: create('Schema', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Schema\"].isSchema(v);\n  }),\n  stack: create('Stack', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Stack\"].isStack(v);\n  }),\n  value: create('Value', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Value\"].isValue(v);\n  }),\n  text: create('Text', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Text\"].isText(v);\n  }),\n  texts: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Text\"].isTextList(v);\n  })\n  /**\n   * Export.\n   *\n   * @type {Object}\n   */\n\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Types);\n\n//# sourceURL=webpack:///./node_modules/slate-prop-types/lib/slate-prop-types.es.js?");
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\n/**\n * Create a prop type checker for Slate objects with `name` and `validate`.\n *\n * @param {String} name\n * @param {Function} validate\n * @return {Function}\n */\n\nfunction create(name, validate) {\n  function check(isRequired, props, propName, componentName, location) {\n    var value = props[propName];\n\n    if (value == null && !isRequired) {\n      return null;\n    }\n\n    if (value == null && isRequired) {\n      return new Error('The ' + location + ' `' + propName + '` is marked as required in `' + componentName + '`, but it was not supplied.');\n    }\n\n    if (validate(value)) {\n      return null;\n    }\n\n    return new Error('Invalid ' + location + ' `' + propName + '` supplied to `' + componentName + '`, expected a Slate `' + name + '` but received: ' + value);\n  }\n\n  function propType() {\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return check.apply(undefined, [false].concat(args));\n  }\n\n  propType.isRequired = function () {\n    for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n      args[_key2] = arguments[_key2];\n    }\n\n    return check.apply(undefined, [true].concat(args));\n  };\n\n  return propType;\n}\n/**\n * Prop type checkers.\n *\n * @type {Object}\n */\n\n\nvar Types = {\n  block: create('Block', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].isBlock(v);\n  }),\n  blocks: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Block\"].isBlockList(v);\n  }),\n  change: create('Change', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Change\"].isChange(v);\n  }),\n  data: create('Data', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Data\"].isData(v);\n  }),\n  document: create('Document', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Document\"].isDocument(v);\n  }),\n  inline: create('Inline', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Inline\"].isInline(v);\n  }),\n  inlines: create('Inline', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Inline\"].isInlineList(v);\n  }),\n  leaf: create('Leaf', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Leaf\"].isLeaf(v);\n  }),\n  leaves: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Leaf\"].isLeafList(v);\n  }),\n  mark: create('Mark', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Mark\"].isMark(v);\n  }),\n  marks: create('Set', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Mark\"].isMarkSet(v);\n  }),\n  node: create('Node', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].isNode(v);\n  }),\n  nodes: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Node\"].isNodeList(v);\n  }),\n  range: create('Range', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Range\"].isRange(v);\n  }),\n  ranges: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Range\"].isRangeList(v);\n  }),\n  selection: create('Selection', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Selection\"].isSelection(v);\n  }),\n  value: create('Value', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Value\"].isValue(v);\n  }),\n  text: create('Text', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Text\"].isText(v);\n  }),\n  texts: create('List', function (v) {\n    return slate__WEBPACK_IMPORTED_MODULE_0__[\"Text\"].isTextList(v);\n  })\n  /**\n   * Export.\n   *\n   * @type {Object}\n   */\n\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Types);\n\n//# sourceURL=webpack:///./node_modules/slate-prop-types/lib/slate-prop-types.es.js?");
+
+/***/ }),
+
+/***/ "./node_modules/slate-react-placeholder/lib/slate-react-placeholder.es.js":
+/*!********************************************************************************!*\
+  !*** ./node_modules/slate-react-placeholder/lib/slate-react-placeholder.es.js ***!
+  \********************************************************************************/
+/*! exports provided: default */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n\nvar isProduction = \"development\" === 'production';\nvar prefix = 'Invariant failed';\n\nvar index = function index(condition, message) {\n  if (condition) {\n    return;\n  }\n\n  if (isProduction) {\n    throw new Error(prefix);\n  } else {\n    throw new Error(prefix + \": \" + (message || ''));\n  }\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar toConsumableArray = function toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n/*\n * Instance counter to enable unique marks for multiple Placeholder instances.\n */\n\n\nvar instanceCounter = 0;\n/**\n * A plugin that renders a React placeholder for a given Slate node.\n *\n * @param {Object} options\n * @return {Object}\n */\n\nfunction SlateReactPlaceholder() {\n  var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n  var instanceId = instanceCounter++;\n  var placeholderMark = {\n    type: 'placeholder',\n    data: {\n      key: instanceId\n    }\n  };\n  var placeholder = options.placeholder,\n      when = options.when,\n      _options$style = options.style,\n      style = _options$style === undefined ? {} : _options$style;\n  index(placeholder, 'You must pass `SlateReactPlaceholder` an `options.placeholder` string.');\n  index(when, 'You must pass `SlateReactPlaceholder` an `options.when` query.');\n  /**\n   * Decorate a match node with a placeholder mark when it fits the query.\n   *\n   * @param {Node} node\n   * @param {Editor} editor\n   * @param {Function} next\n   * @return {Array}\n   */\n\n  function decorateNode(node, editor, next) {\n    if (!editor.query(when, node)) {\n      return next();\n    }\n\n    var others = next();\n    var document = editor.value.document;\n    var first = node.getFirstText();\n    var last = node.getLastText();\n    var decoration = {\n      anchor: {\n        key: first.key,\n        offset: 0,\n        path: document.getPath(first.key)\n      },\n      focus: {\n        key: last.key,\n        offset: last.text.length,\n        path: document.getPath(last.key)\n      },\n      mark: placeholderMark\n    };\n    return [].concat(toConsumableArray(others), [decoration]);\n  }\n  /**\n   * Render an inline placeholder for the placeholder mark.\n   *\n   * @param {Object} props\n   * @param {Editor} editor\n   * @param {Function} next\n   * @return {Element}\n   */\n\n\n  function renderMark(props, editor, next) {\n    var children = props.children,\n        mark = props.mark;\n\n    if (mark.type === 'placeholder' && mark.data.get('key') === instanceId) {\n      var placeHolderStyle = _extends({\n        pointerEvents: 'none',\n        display: 'inline-block',\n        width: '0',\n        maxWidth: '100%',\n        whiteSpace: 'nowrap',\n        opacity: '0.333'\n      }, style);\n\n      return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement('span', null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement('span', {\n        contentEditable: false,\n        style: placeHolderStyle\n      }, placeholder), children);\n    }\n\n    return next();\n  }\n  /**\n   * Return the plugin.\n   *\n   * @return {Object}\n   */\n\n\n  return {\n    decorateNode: decorateNode,\n    renderMark: renderMark\n  };\n}\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (SlateReactPlaceholder);\n\n//# sourceURL=webpack:///./node_modules/slate-react-placeholder/lib/slate-react-placeholder.es.js?");
 
 /***/ }),
 
@@ -19567,11 +19112,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slat
 /*!********************************************************!*\
   !*** ./node_modules/slate-react/lib/slate-react.es.js ***!
   \********************************************************/
-/*! exports provided: default, Editor, cloneFragment, findDOMNode, findDOMRange, findNode, findRange, getEventRange, getEventTransfer, setEventTransfer, AfterPlugin, BeforePlugin */
+/*! exports provided: default, Editor, cloneFragment, findDOMNode, findDOMRange, findNode, findRange, getEventRange, getEventTransfer, setEventTransfer, ReactPlugin */
 /***/ (function(module, __webpack_exports__, __webpack_require__) {
 
 "use strict";
-eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Editor\", function() { return Editor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneFragment\", function() { return cloneFragment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDOMNode\", function() { return findDOMNode$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDOMRange\", function() { return findDOMRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findNode\", function() { return findNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findRange\", function() { return findRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEventRange\", function() { return getEventRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEventTransfer\", function() { return getEventTransfer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setEventTransfer\", function() { return setEventTransfer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AfterPlugin\", function() { return AfterPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BeforePlugin\", function() { return BeforePlugin; });\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! debug */ \"./node_modules/slate-react/node_modules/debug/src/browser.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var slate_prop_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! slate-prop-types */ \"./node_modules/slate-prop-types/lib/slate-prop-types.es.js\");\n/* harmony import */ var react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-immutable-proptypes */ \"./node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js\");\n/* harmony import */ var react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var slate_dev_logger__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! slate-dev-logger */ \"./node_modules/slate-dev-logger/lib/slate-dev-logger.es.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var get_window__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! get-window */ \"./node_modules/get-window/index.js\");\n/* harmony import */ var get_window__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(get_window__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var selection_is_backward__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! selection-is-backward */ \"./node_modules/selection-is-backward/index.js\");\n/* harmony import */ var selection_is_backward__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(selection_is_backward__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! slate-dev-environment */ \"./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! lodash/throttle */ \"./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var slate_base64_serializer__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! slate-base64-serializer */ \"./node_modules/slate-base64-serializer/lib/slate-base64-serializer.es.js\");\n/* harmony import */ var slate_plain_serializer__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! slate-plain-serializer */ \"./node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js\");\n/* harmony import */ var slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! slate-hotkeys */ \"./node_modules/slate-hotkeys/lib/slate-hotkeys.es.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_15__);\n/* harmony import */ var react_portal__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-portal */ \"./node_modules/react-portal/build/portal.js\");\n/* harmony import */ var react_portal__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(react_portal__WEBPACK_IMPORTED_MODULE_16__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Event handlers used by Slate plugins.\n *\n * @type {Array}\n */\n\nvar EVENT_HANDLERS = ['onBeforeInput', 'onBlur', 'onClick', 'onContextMenu', 'onCompositionEnd', 'onCompositionStart', 'onCopy', 'onCut', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onInput', 'onFocus', 'onKeyDown', 'onKeyUp', 'onPaste', 'onSelect'];\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n  if (!(instance instanceof Constructor)) {\n    throw new TypeError(\"Cannot call a class as a function\");\n  }\n};\n\nvar createClass = function () {\n  function defineProperties(target, props) {\n    for (var i = 0; i < props.length; i++) {\n      var descriptor = props[i];\n      descriptor.enumerable = descriptor.enumerable || false;\n      descriptor.configurable = true;\n      if (\"value\" in descriptor) descriptor.writable = true;\n      Object.defineProperty(target, descriptor.key, descriptor);\n    }\n  }\n\n  return function (Constructor, protoProps, staticProps) {\n    if (protoProps) defineProperties(Constructor.prototype, protoProps);\n    if (staticProps) defineProperties(Constructor, staticProps);\n    return Constructor;\n  };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n  if (key in obj) {\n    Object.defineProperty(obj, key, {\n      value: value,\n      enumerable: true,\n      configurable: true,\n      writable: true\n    });\n  } else {\n    obj[key] = value;\n  }\n\n  return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n  for (var i = 1; i < arguments.length; i++) {\n    var source = arguments[i];\n\n    for (var key in source) {\n      if (Object.prototype.hasOwnProperty.call(source, key)) {\n        target[key] = source[key];\n      }\n    }\n  }\n\n  return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n  if (typeof superClass !== \"function\" && superClass !== null) {\n    throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n  }\n\n  subClass.prototype = Object.create(superClass && superClass.prototype, {\n    constructor: {\n      value: subClass,\n      enumerable: false,\n      writable: true,\n      configurable: true\n    }\n  });\n  if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n  if (!self) {\n    throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n  }\n\n  return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n  function sliceIterator(arr, i) {\n    var _arr = [];\n    var _n = true;\n    var _d = false;\n    var _e = undefined;\n\n    try {\n      for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n        _arr.push(_s.value);\n\n        if (i && _arr.length === i) break;\n      }\n    } catch (err) {\n      _d = true;\n      _e = err;\n    } finally {\n      try {\n        if (!_n && _i[\"return\"]) _i[\"return\"]();\n      } finally {\n        if (_d) throw _e;\n      }\n    }\n\n    return _arr;\n  }\n\n  return function (arr, i) {\n    if (Array.isArray(arr)) {\n      return arr;\n    } else if (Symbol.iterator in Object(arr)) {\n      return sliceIterator(arr, i);\n    } else {\n      throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n    }\n  };\n}();\n\nvar toConsumableArray = function toConsumableArray(arr) {\n  if (Array.isArray(arr)) {\n    for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n      arr2[i] = arr[i];\n    }\n\n    return arr2;\n  } else {\n    return Array.from(arr);\n  }\n};\n/**\n * Props that can be defined by plugins.\n *\n * @type {Array}\n */\n\n\nvar PLUGIN_PROPS = [].concat(toConsumableArray(EVENT_HANDLERS), ['decorateNode', 'onChange', 'renderEditor', 'renderMark', 'renderNode', 'renderPlaceholder', 'renderPortal', 'schema', 'validateNode']);\n/**\n * Offset key parser regex.\n *\n * @type {RegExp}\n */\n\nvar PARSER = /^([\\w-]+)(?::(\\d+))?$/;\n/**\n * Parse an offset key `string`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction parse(string) {\n  var matches = PARSER.exec(string);\n\n  if (!matches) {\n    throw new Error(\"Invalid offset key string \\\"\" + string + \"\\\".\");\n  }\n\n  var _matches = slicedToArray(matches, 3),\n      original = _matches[0],\n      key = _matches[1],\n      index = _matches[2]; // eslint-disable-line no-unused-vars\n\n\n  return {\n    key: key,\n    index: parseInt(index, 10)\n  };\n}\n/**\n * Stringify an offset key `object`.\n *\n * @param {Object} object\n *   @property {String} key\n *   @property {Number} index\n * @return {String}\n */\n\n\nfunction stringify(object) {\n  return object.key + \":\" + object.index;\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar OffsetKey = {\n  parse: parse,\n  stringify: stringify\n};\n/**\n * Debugger.\n *\n * @type {Function}\n */\n\nvar debug = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:leaves');\n/**\n * Leaf.\n *\n * @type {Component}\n */\n\nvar Leaf = function (_React$Component) {\n  inherits(Leaf, _React$Component);\n\n  function Leaf() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, Leaf);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Leaf.__proto__ || Object.getPrototypeOf(Leaf)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n  }\n  /**\n   * Property types.\n   *\n   * @type {Object}\n   */\n\n  /**\n   * Debug.\n   *\n   * @param {String} message\n   * @param {Mixed} ...args\n   */\n\n\n  createClass(Leaf, [{\n    key: 'shouldComponentUpdate',\n\n    /**\n     * Should component update?\n     *\n     * @param {Object} props\n     * @return {Boolean}\n     */\n    value: function shouldComponentUpdate(props) {\n      // If any of the regular properties have changed, re-render.\n      if (props.index != this.props.index || props.marks != this.props.marks || props.text != this.props.text || props.parent != this.props.parent) {\n        return true;\n      } // Otherwise, don't update.\n\n\n      return false;\n    }\n    /**\n     * Render the leaf.\n     *\n     * @return {Element}\n     */\n\n  }, {\n    key: 'render',\n    value: function render() {\n      this.debug('render', this);\n      var _props = this.props,\n          node = _props.node,\n          index = _props.index;\n      var offsetKey = OffsetKey.stringify({\n        key: node.key,\n        index: index\n      });\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n        'data-offset-key': offsetKey\n      }, this.renderMarks());\n    }\n    /**\n     * Render all of the leaf's mark components.\n     *\n     * @return {Element}\n     */\n\n  }, {\n    key: 'renderMarks',\n    value: function renderMarks() {\n      var _props2 = this.props,\n          marks = _props2.marks,\n          node = _props2.node,\n          offset = _props2.offset,\n          text = _props2.text,\n          editor = _props2.editor;\n      var stack = editor.stack;\n      var leaf = this.renderText();\n      var attributes = {\n        'data-slate-leaf': true\n      };\n      return marks.reduce(function (children, mark) {\n        var props = {\n          editor: editor,\n          mark: mark,\n          marks: marks,\n          node: node,\n          offset: offset,\n          text: text,\n          children: children,\n          attributes: attributes\n        };\n        var element = stack.find('renderMark', props);\n        return element || children;\n      }, leaf);\n    }\n    /**\n     * Render the text content of the leaf, accounting for browsers.\n     *\n     * @return {Element}\n     */\n\n  }, {\n    key: 'renderText',\n    value: function renderText() {\n      var _props3 = this.props,\n          block = _props3.block,\n          node = _props3.node,\n          parent = _props3.parent,\n          text = _props3.text,\n          index = _props3.index,\n          leaves = _props3.leaves; // COMPAT: Render text inside void nodes with a zero-width space.\n      // So the node can contain selection but the text is not visible.\n\n      if (parent.isVoid) {\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n          'data-slate-zero-width': 'z'\n        }, \"\\u200B\");\n      } // COMPAT: If this is the last text node in an empty block, render a zero-\n      // width space that will convert into a line break when copying and pasting\n      // to support expected plain text.\n\n\n      if (text === '' && parent.object === 'block' && parent.text === '' && parent.nodes.size === 1) {\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n          'data-slate-zero-width': 'n'\n        }, \"\\u200B\");\n      } // COMPAT: If the text is empty, it's because it's on the edge of an inline\n      // void node, so we render a zero-width space so that the selection can be\n      // inserted next to it still.\n\n\n      if (text === '') {\n        return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n          'data-slate-zero-width': 'z'\n        }, \"\\u200B\");\n      } // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n      // so we need to add an extra trailing new lines to prevent that.\n\n\n      var lastText = block.getLastText();\n      var lastChar = text.charAt(text.length - 1);\n      var isLastText = node === lastText;\n      var isLastLeaf = index === leaves.size - 1;\n      if (isLastText && isLastLeaf && lastChar === '\\n') return text + '\\n'; // Otherwise, just return the text.\n\n      return text;\n    }\n  }]);\n  return Leaf;\n}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nLeaf.propTypes = {\n  block: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].block.isRequired,\n  editor: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  index: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n  leaves: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].leaves.isRequired,\n  marks: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].marks.isRequired,\n  node: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  offset: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number.isRequired,\n  parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  text: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string.isRequired\n};\n\nvar _initialiseProps = function _initialiseProps() {\n  var _this2 = this;\n\n  this.debug = function (message) {\n    for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    debug.apply(undefined, [message, _this2.props.node.key + '-' + _this2.props.index].concat(args));\n  };\n};\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$1 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:node');\n/**\n * Text.\n *\n * @type {Component}\n */\n\nvar Text$1 = function (_React$Component) {\n  inherits(Text$$1, _React$Component);\n\n  function Text$$1() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, Text$$1);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Text$$1.__proto__ || Object.getPrototypeOf(Text$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$1.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n  }\n  /**\n   * Property types.\n   *\n   * @type {Object}\n   */\n\n  /**\n   * Default prop types.\n   *\n   * @type {Object}\n   */\n\n  /**\n   * Debug.\n   *\n   * @param {String} message\n   * @param {Mixed} ...args\n   */\n\n  /**\n   * Should the node update?\n   *\n   * @param {Object} nextProps\n   * @param {Object} value\n   * @return {Boolean}\n   */\n\n\n  createClass(Text$$1, [{\n    key: 'render',\n\n    /**\n     * Render.\n     *\n     * @return {Element}\n     */\n    value: function render() {\n      var _this2 = this;\n\n      this.debug('render', this);\n      var _props = this.props,\n          decorations = _props.decorations,\n          editor = _props.editor,\n          node = _props.node,\n          style = _props.style;\n      var value = editor.value;\n      var document = value.document;\n      var key = node.key;\n      var decs = decorations.filter(function (d) {\n        var startKey = d.startKey,\n            endKey = d.endKey;\n        if (startKey == key || endKey == key) return true;\n        if (startKey === endKey) return false;\n        var startsBefore = document.areDescendantsSorted(startKey, key);\n        if (!startsBefore) return false;\n        var endsAfter = document.areDescendantsSorted(key, endKey);\n        return endsAfter;\n      }); // PERF: Take advantage of cache by avoiding arguments\n\n      var leaves = decs.size === 0 ? node.getLeaves() : node.getLeaves(decs);\n      var offset = 0;\n      var children = leaves.map(function (leaf, i) {\n        var child = _this2.renderLeaf(leaves, leaf, i, offset);\n\n        offset += leaf.text.length;\n        return child;\n      });\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n        'data-key': key,\n        style: style\n      }, children);\n    }\n    /**\n     * Render a single leaf given a `leaf` and `offset`.\n     *\n     * @param {List} leaves\n     * @param {Leaf} leaf\n     * @param {Number} index\n     * @param {Number} offset\n     * @return {Element} leaf\n     */\n\n  }]);\n  return Text$$1;\n}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nText$1.propTypes = {\n  block: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].block,\n  decorations: react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_4___default.a.list.isRequired,\n  editor: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  node: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  style: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object\n};\nText$1.defaultProps = {\n  style: null\n};\n\nvar _initialiseProps$1 = function _initialiseProps() {\n  var _this3 = this;\n\n  this.debug = function (message) {\n    for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    var node = _this3.props.node;\n    var key = node.key;\n    debug$1.apply(undefined, [message, key + ' (text)'].concat(args));\n  };\n\n  this.shouldComponentUpdate = function (nextProps) {\n    var props = _this3.props;\n    var n = nextProps;\n    var p = props; // If the node has changed, update. PERF: There are cases where it will have\n    // changed, but it's properties will be exactly the same (eg. copy-paste)\n    // which this won't catch. But that's rare and not a drag on performance, so\n    // for simplicity we just let them through.\n\n    if (n.node != p.node) return true; // If the node parent is a block node, and it was the last child of the\n    // block, re-render to cleanup extra `\\n`.\n\n    if (n.parent.object == 'block') {\n      var pLast = p.parent.nodes.last();\n      var nLast = n.parent.nodes.last();\n      if (p.node == pLast && n.node != nLast) return true;\n    } // Re-render if the current decorations have changed.\n\n\n    if (!n.decorations.equals(p.decorations)) return true; // Otherwise, don't update.\n\n    return false;\n  };\n\n  this.renderLeaf = function (leaves, leaf, index, offset) {\n    var _props2 = _this3.props,\n        block = _props2.block,\n        node = _props2.node,\n        parent = _props2.parent,\n        editor = _props2.editor;\n    var text = leaf.text,\n        marks = leaf.marks;\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Leaf, {\n      key: node.key + '-' + index,\n      block: block,\n      editor: editor,\n      index: index,\n      marks: marks,\n      node: node,\n      offset: offset,\n      parent: parent,\n      leaves: leaves,\n      text: text\n    });\n  };\n};\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$2 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:void');\n/**\n * Void.\n *\n * @type {Component}\n */\n\nvar Void = function (_React$Component) {\n  inherits(Void, _React$Component);\n\n  function Void() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, Void);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Void.__proto__ || Object.getPrototypeOf(Void)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$2.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n  }\n  /**\n   * Property types.\n   *\n   * @type {Object}\n   */\n\n  /**\n   * Debug.\n   *\n   * @param {String} message\n   * @param {Mixed} ...args\n   */\n\n\n  createClass(Void, [{\n    key: 'render',\n\n    /**\n     * Render.\n     *\n     * @return {Element}\n     */\n    value: function render() {\n      var props = this.props;\n      var children = props.children,\n          node = props.node,\n          readOnly = props.readOnly;\n      var Tag = node.object == 'block' ? 'div' : 'span';\n      var style = {\n        height: '0',\n        color: 'transparent',\n        outline: 'none',\n        position: 'absolute'\n      };\n      var spacer = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Tag, {\n        'data-slate-spacer': true,\n        style: style\n      }, this.renderText());\n      var content = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Tag, {\n        contentEditable: readOnly ? null : false\n      }, children);\n      this.debug('render', {\n        props: props\n      });\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Tag, {\n        'data-slate-void': true,\n        'data-key': node.key,\n        contentEditable: readOnly || node.object == 'block' ? null : false\n      }, readOnly ? null : spacer, content);\n    }\n    /**\n     * Render the void node's text node, which will catch the cursor when it the\n     * void node is navigated to with the arrow keys.\n     *\n     * Having this text node there means the browser continues to manage the\n     * selection natively, so it keeps track of the right offset when moving\n     * across the block.\n     *\n     * @return {Element}\n     */\n\n  }]);\n  return Void;\n}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nVoid.propTypes = {\n  block: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].block,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.any.isRequired,\n  editor: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  node: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  readOnly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired\n};\n\nvar _initialiseProps$2 = function _initialiseProps() {\n  var _this2 = this;\n\n  this.debug = function (message) {\n    for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    var node = _this2.props.node;\n    var key = node.key,\n        type = node.type;\n    var id = key + ' (' + type + ')';\n    debug$2.apply(undefined, [message, '' + id].concat(args));\n  };\n\n  this.renderText = function () {\n    var _props = _this2.props,\n        block = _props.block,\n        decorations = _props.decorations,\n        node = _props.node,\n        readOnly = _props.readOnly,\n        editor = _props.editor;\n    var child = node.getFirstText();\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Text$1, {\n      block: node.object == 'block' ? node : block,\n      decorations: decorations,\n      editor: editor,\n      key: child.key,\n      node: child,\n      parent: node,\n      readOnly: readOnly\n    });\n  };\n};\n/**\n * Split the decorations in lists of relevant decorations for each child.\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array>}\n */\n\n\nfunction getChildrenDecorations(node, decorations) {\n  var activeDecorations = Object(immutable__WEBPACK_IMPORTED_MODULE_5__[\"Set\"])().asMutable();\n  var childrenDecorations = [];\n  orderChildDecorations(node, decorations).forEach(function (item) {\n    if (item.isRangeStart) {\n      // Item is a decoration start\n      activeDecorations.add(item.decoration);\n    } else if (item.isRangeEnd) {\n      // item is a decoration end\n      activeDecorations.remove(item.decoration);\n    } else {\n      // Item is a child node\n      childrenDecorations.push(activeDecorations.toList());\n    }\n  });\n  return childrenDecorations;\n}\n/**\n * Orders the children of provided node and its decoration endpoints (start, end)\n * so that decorations can be passed only to relevant children (see use in Node.render())\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array}\n *\n * where type Item =\n * {\n *   child: Node,\n *   // Index of the child in its parent\n *   index: number\n * }\n * or {\n *   // True if this represents the start of the given decoration\n *   isRangeStart: boolean,\n *   // True if this represents the end of the given decoration\n *   isRangeEnd: boolean,\n *   decoration: Range\n * }\n */\n\n\nfunction orderChildDecorations(node, decorations) {\n  if (decorations.isEmpty()) {\n    return node.nodes.toArray().map(function (child, index) {\n      return {\n        child: child,\n        index: index\n      };\n    });\n  } // Map each key to its global order\n\n\n  var keyOrders = defineProperty({}, node.key, 0);\n  var globalOrder = 1;\n  node.forEachDescendant(function (child) {\n    keyOrders[child.key] = globalOrder;\n    globalOrder = globalOrder + 1;\n  });\n  var childNodes = node.nodes.toArray();\n  var endPoints = childNodes.map(function (child, index) {\n    return {\n      child: child,\n      index: index,\n      order: keyOrders[child.key]\n    };\n  });\n  decorations.forEach(function (decoration) {\n    // Range start.\n    // A rangeStart should be before the child containing its startKey, in order\n    // to consider it active before going down the child.\n    var startKeyOrder = keyOrders[decoration.startKey];\n    var containingChildOrder = startKeyOrder === undefined ? 0 : getContainingChildOrder(childNodes, keyOrders, startKeyOrder);\n    endPoints.push({\n      isRangeStart: true,\n      order: containingChildOrder - 0.5,\n      decoration: decoration\n    }); // Range end.\n\n    var endKeyOrder = (keyOrders[decoration.endKey] || globalOrder) + 0.5;\n    endPoints.push({\n      isRangeEnd: true,\n      order: endKeyOrder,\n      decoration: decoration\n    });\n  });\n  return endPoints.sort(function (a, b) {\n    return a.order > b.order ? 1 : -1;\n  });\n}\n/*\n * Returns the key order of the child right before the given order.\n */\n\n\nfunction getContainingChildOrder(children, keyOrders, order) {\n  // Find the first child that is after the given key\n  var nextChildIndex = children.findIndex(function (child) {\n    return order < keyOrders[child.key];\n  });\n\n  if (nextChildIndex <= 0) {\n    return 0;\n  }\n\n  var containingChild = children[nextChildIndex - 1];\n  return keyOrders[containingChild.key];\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$3 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:node');\n/**\n * Node.\n *\n * @type {Component}\n */\n\nvar Node$1 = function (_React$Component) {\n  inherits(Node$$1, _React$Component);\n\n  function Node$$1() {\n    var _ref;\n\n    var _temp, _this, _ret;\n\n    classCallCheck(this, Node$$1);\n\n    for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n      args[_key] = arguments[_key];\n    }\n\n    return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Node$$1.__proto__ || Object.getPrototypeOf(Node$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$3.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n  }\n  /**\n   * Property types.\n   *\n   * @type {Object}\n   */\n\n  /**\n   * Debug.\n   *\n   * @param {String} message\n   * @param {Mixed} ...args\n   */\n\n  /**\n   * Should the node update?\n   *\n   * @param {Object} nextProps\n   * @param {Object} value\n   * @return {Boolean}\n   */\n\n\n  createClass(Node$$1, [{\n    key: 'render',\n\n    /**\n     * Render.\n     *\n     * @return {Element}\n     */\n    value: function render() {\n      var _this2 = this;\n\n      this.debug('render', this);\n      var _props = this.props,\n          editor = _props.editor,\n          isSelected = _props.isSelected,\n          isFocused = _props.isFocused,\n          node = _props.node,\n          decorations = _props.decorations,\n          parent = _props.parent,\n          readOnly = _props.readOnly;\n      var value = editor.value;\n      var selection = value.selection;\n      var stack = editor.stack;\n      var indexes = node.getSelectionIndexes(selection, isSelected);\n      var decs = decorations.concat(node.getDecorations(stack));\n      var childrenDecorations = getChildrenDecorations(node, decs);\n      var children = [];\n      node.nodes.forEach(function (child, i) {\n        var isChildSelected = !!indexes && indexes.start <= i && i < indexes.end;\n        children.push(_this2.renderNode(child, isChildSelected, childrenDecorations[i]));\n      }); // Attributes that the developer must mix into the element in their\n      // custom node renderer component.\n\n      var attributes = {\n        'data-key': node.key // If it's a block node with inline children, add the proper `dir` attribute\n        // for text direction.\n\n      };\n\n      if (node.object == 'block' && node.nodes.first().object != 'block') {\n        var direction = node.getTextDirection();\n        if (direction == 'rtl') attributes.dir = 'rtl';\n      }\n\n      var props = {\n        key: node.key,\n        editor: editor,\n        isFocused: isFocused,\n        isSelected: isSelected,\n        node: node,\n        parent: parent,\n        readOnly: readOnly\n      };\n      var placeholder = stack.find('renderPlaceholder', props);\n\n      if (placeholder) {\n        placeholder = react__WEBPACK_IMPORTED_MODULE_1___default.a.cloneElement(placeholder, {\n          key: node.key + '-placeholder'\n        });\n        children = [placeholder].concat(toConsumableArray(children));\n      }\n\n      var element = stack.find('renderNode', _extends({}, props, {\n        attributes: attributes,\n        children: children\n      }));\n      return node.isVoid ? react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Void, this.props, element) : element;\n    }\n    /**\n     * Render a `child` node.\n     *\n     * @param {Node} child\n     * @param {Boolean} isSelected\n     * @param {Array} decorations\n     * @return {Element}\n     */\n\n  }]);\n  return Node$$1;\n}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nNode$1.propTypes = {\n  block: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].block,\n  decorations: react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_4___default.a.list.isRequired,\n  editor: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  isFocused: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired,\n  isSelected: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired,\n  node: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].node.isRequired,\n  readOnly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired\n};\n\nvar _initialiseProps$3 = function _initialiseProps() {\n  var _this3 = this;\n\n  this.debug = function (message) {\n    for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n      args[_key2 - 1] = arguments[_key2];\n    }\n\n    var node = _this3.props.node;\n    var key = node.key,\n        type = node.type;\n    debug$3.apply(undefined, [message, key + ' (' + type + ')'].concat(args));\n  };\n\n  this.shouldComponentUpdate = function (nextProps) {\n    var props = _this3.props;\n    var stack = props.editor.stack;\n    var shouldUpdate = stack.find('shouldNodeComponentUpdate', props, nextProps);\n    var n = nextProps;\n    var p = props; // If the `Component` has a custom logic to determine whether the component\n    // needs to be updated or not, return true if it returns true. If it returns\n    // false, we need to ignore it, because it shouldn't be allowed it.\n\n    if (shouldUpdate != null) {\n      if (shouldUpdate) {\n        return true;\n      }\n\n      if (shouldUpdate === false) {\n        slate_dev_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].warn(\"Returning false in `shouldNodeComponentUpdate` does not disable Slate's internal `shouldComponentUpdate` logic. If you want to prevent updates, use React's `shouldComponentUpdate` instead.\");\n      }\n    } // If the `readOnly` status has changed, re-render in case there is any\n    // user-land logic that depends on it, like nested editable contents.\n\n\n    if (n.readOnly != p.readOnly) return true; // If the node has changed, update. PERF: There are cases where it will have\n    // changed, but it's properties will be exactly the same (eg. copy-paste)\n    // which this won't catch. But that's rare and not a drag on performance, so\n    // for simplicity we just let them through.\n\n    if (n.node != p.node) return true; // If the selection value of the node or of some of its children has changed,\n    // re-render in case there is any user-land logic depends on it to render.\n    // if the node is selected update it, even if it was already selected: the\n    // selection value of some of its children could have been changed and they\n    // need to be rendered again.\n\n    if (n.isSelected || p.isSelected) return true;\n    if (n.isFocused || p.isFocused) return true; // If the decorations have changed, update.\n\n    if (!n.decorations.equals(p.decorations)) return true; // Otherwise, don't update.\n\n    return false;\n  };\n\n  this.renderNode = function (child, isSelected, decorations) {\n    var _props2 = _this3.props,\n        block = _props2.block,\n        editor = _props2.editor,\n        node = _props2.node,\n        readOnly = _props2.readOnly,\n        isFocused = _props2.isFocused;\n    var Component = child.object == 'text' ? Text$1 : Node$1;\n    return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Component, {\n      block: node.object == 'block' ? node : block,\n      decorations: decorations,\n      editor: editor,\n      isSelected: isSelected,\n      isFocused: isFocused && isSelected,\n      key: child.key,\n      node: child,\n      parent: node,\n      readOnly: readOnly\n    });\n  };\n};\n/**\n * Find the DOM node for a `key`.\n *\n * @param {String|Node} key\n * @param {Window} win (optional)\n * @return {Element}\n */\n\n\nfunction findDOMNode$1(key) {\n  var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n  if (slate__WEBPACK_IMPORTED_MODULE_7__[\"Node\"].isNode(key)) {\n    key = key.key;\n  }\n\n  var el = win.document.querySelector('[data-key=\"' + key + '\"]');\n\n  if (!el) {\n    throw new Error('Unable to find a DOM node for \"' + key + '\". This is often because of forgetting to add `props.attributes` to a custom component.');\n  }\n\n  return el;\n}\n/**\n * Find a native DOM selection point from a Slate `key` and `offset`.\n *\n * @param {String} key\n * @param {Number} offset\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\n\nfunction findDOMPoint(key, offset) {\n  var win = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;\n  var el = findDOMNode$1(key, win);\n  var start = 0;\n  var n = void 0; // COMPAT: In IE, this method's arguments are not optional, so we have to\n  // pass in all four even though the last two are defaults. (2017/10/25)\n\n  var iterator = win.document.createNodeIterator(el, NodeFilter.SHOW_TEXT, function () {\n    return NodeFilter.FILTER_ACCEPT;\n  }, false);\n\n  while (n = iterator.nextNode()) {\n    var length = n.textContent.length;\n    var end = start + length;\n\n    if (offset <= end) {\n      var o = offset - start;\n      return {\n        node: n,\n        offset: o >= 0 ? o : 0\n      };\n    }\n\n    start = end;\n  }\n\n  return null;\n}\n/**\n * Find a native DOM range Slate `range`.\n *\n * @param {Range} range\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\n\nfunction findDOMRange(range) {\n  var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n  var anchorKey = range.anchorKey,\n      anchorOffset = range.anchorOffset,\n      focusKey = range.focusKey,\n      focusOffset = range.focusOffset,\n      isBackward$$1 = range.isBackward,\n      isCollapsed = range.isCollapsed;\n  var anchor = findDOMPoint(anchorKey, anchorOffset, win);\n  var focus = isCollapsed ? anchor : findDOMPoint(focusKey, focusOffset, win);\n  if (!anchor || !focus) return null;\n  var r = win.document.createRange();\n  var start = isBackward$$1 ? focus : anchor;\n  var end = isBackward$$1 ? anchor : focus;\n  r.setStart(start.node, start.offset);\n  r.setEnd(end.node, end.offset);\n  return r;\n}\n/**\n * Constants.\n *\n * @type {String}\n */\n\n\nvar ZERO_WIDTH_ATTRIBUTE = 'data-slate-zero-width';\nvar ZERO_WIDTH_SELECTOR = '[' + ZERO_WIDTH_ATTRIBUTE + ']';\nvar OFFSET_KEY_ATTRIBUTE = 'data-offset-key';\nvar RANGE_SELECTOR = '[' + OFFSET_KEY_ATTRIBUTE + ']';\nvar TEXT_SELECTOR = '[data-key]';\nvar VOID_SELECTOR = '[data-slate-void]';\n/**\n * Find a Slate point from a DOM selection's `nativeNode` and `nativeOffset`.\n *\n * @param {Element} nativeNode\n * @param {Number} nativeOffset\n * @param {Value} value\n * @return {Object}\n */\n\nfunction findPoint(nativeNode, nativeOffset, value) {\n  var _normalizeNodeAndOffs = normalizeNodeAndOffset(nativeNode, nativeOffset),\n      nearestNode = _normalizeNodeAndOffs.node,\n      nearestOffset = _normalizeNodeAndOffs.offset;\n\n  var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(nativeNode);\n  var parentNode = nearestNode.parentNode;\n  var rangeNode = parentNode.closest(RANGE_SELECTOR);\n  var offset = void 0;\n  var node = void 0; // Calculate how far into the text node the `nearestNode` is, so that we can\n  // determine what the offset relative to the text node is.\n\n  if (rangeNode) {\n    var range = window.document.createRange();\n    var textNode = rangeNode.closest(TEXT_SELECTOR);\n    range.setStart(textNode, 0);\n    range.setEnd(nearestNode, nearestOffset);\n    node = textNode;\n    offset = range.toString().length;\n  } else {\n    // For void nodes, the element with the offset key will be a cousin, not an\n    // ancestor, so find it by going down from the nearest void parent.\n    var voidNode = parentNode.closest(VOID_SELECTOR);\n    if (!voidNode) return null;\n    rangeNode = voidNode.querySelector(RANGE_SELECTOR);\n    if (!rangeNode) return null;\n    node = rangeNode;\n    offset = node.textContent.length;\n  } // COMPAT: If the parent node is a Slate zero-width space, this is because the\n  // text node should have no characters. However, during IME composition the\n  // ASCII characters will be prepended to the zero-width space, so subtract 1\n  // from the offset to account for the zero-width space character.\n\n\n  if (offset == node.textContent.length && parentNode.hasAttribute(ZERO_WIDTH_ATTRIBUTE)) {\n    offset--;\n  } // Get the string value of the offset key attribute.\n\n\n  var offsetKey = rangeNode.getAttribute(OFFSET_KEY_ATTRIBUTE);\n  if (!offsetKey) return null;\n\n  var _OffsetKey$parse = OffsetKey.parse(offsetKey),\n      key = _OffsetKey$parse.key; // COMPAT: If someone is clicking from one Slate editor into another, the\n  // select event fires twice, once for the old editor's `element` first, and\n  // then afterwards for the correct `element`. (2017/03/03)\n\n\n  if (!value.document.hasDescendant(key)) return null;\n  return {\n    key: key,\n    offset: offset\n  };\n}\n/**\n * From a DOM selection's `node` and `offset`, normalize so that it always\n * refers to a text node.\n *\n * @param {Element} node\n * @param {Number} offset\n * @return {Object}\n */\n\n\nfunction normalizeNodeAndOffset(node, offset) {\n  // If it's an element node, its offset refers to the index of its children\n  // including comment nodes, so try to find the right text child node.\n  if (node.nodeType == 1 && node.childNodes.length) {\n    var isLast = offset == node.childNodes.length;\n    var direction = isLast ? 'backward' : 'forward';\n    var index = isLast ? offset - 1 : offset;\n    node = getEditableChild(node, index, direction); // If the node has children, traverse until we have a leaf node. Leaf nodes\n    // can be either text nodes, or other void DOM nodes.\n\n    while (node.nodeType == 1 && node.childNodes.length) {\n      var i = isLast ? node.childNodes.length - 1 : 0;\n      node = getEditableChild(node, i, direction);\n    } // Determine the new offset inside the text node.\n\n\n    offset = isLast ? node.textContent.length : 0;\n  } // Return the node and offset.\n\n\n  return {\n    node: node,\n    offset: offset\n  };\n}\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n *\n * @param {Element} parent\n * @param {Number} index\n * @param {String} direction ('forward' or 'backward')\n * @return {Element|Null}\n */\n\n\nfunction getEditableChild(parent, index, direction) {\n  var childNodes = parent.childNodes;\n  var child = childNodes[index];\n  var i = index;\n  var triedForward = false;\n  var triedBackward = false; // While the child is a comment node, or an element node with no children,\n  // keep iterating to find a sibling non-void, non-comment node.\n\n  while (child.nodeType == 8 || child.nodeType == 1 && child.childNodes.length == 0 || child.nodeType == 1 && child.getAttribute('contenteditable') == 'false') {\n    if (triedForward && triedBackward) break;\n\n    if (i >= childNodes.length) {\n      triedForward = true;\n      i = index - 1;\n      direction = 'backward';\n      continue;\n    }\n\n    if (i < 0) {\n      triedBackward = true;\n      i = index + 1;\n      direction = 'forward';\n      continue;\n    }\n\n    child = childNodes[i];\n    if (direction == 'forward') i++;\n    if (direction == 'backward') i--;\n  }\n\n  return child || null;\n}\n/**\n * Find a Slate range from a DOM `native` selection.\n *\n * @param {Selection} native\n * @param {Value} value\n * @return {Range}\n */\n\n\nfunction findRange(native, value) {\n  var el = native.anchorNode || native.startContainer;\n  if (!el) return null;\n  var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(el); // If the `native` object is a DOM `Range` or `StaticRange` object, change it\n  // into something that looks like a DOM `Selection` instead.\n\n  if (native instanceof window.Range || window.StaticRange && native instanceof window.StaticRange) {\n    native = {\n      anchorNode: native.startContainer,\n      anchorOffset: native.startOffset,\n      focusNode: native.endContainer,\n      focusOffset: native.endOffset\n    };\n  }\n\n  var _native = native,\n      anchorNode = _native.anchorNode,\n      anchorOffset = _native.anchorOffset,\n      focusNode = _native.focusNode,\n      focusOffset = _native.focusOffset,\n      isCollapsed = _native.isCollapsed;\n  var anchor = findPoint(anchorNode, anchorOffset, value);\n  var focus = isCollapsed ? anchor : findPoint(focusNode, focusOffset, value);\n  if (!anchor || !focus) return null; // COMPAT: ??? The Edge browser seems to have a case where if you select the\n  // last word of a span, it sets the endContainer to the containing span.\n  // `selection-is-backward` doesn't handle this case.\n\n  if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IE\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_EDGE\"]) {\n    var domAnchor = findDOMPoint(anchor.key, anchor.offset);\n    var domFocus = findDOMPoint(focus.key, focus.offset);\n    native = {\n      anchorNode: domAnchor.node,\n      anchorOffset: domAnchor.offset,\n      focusNode: domFocus.node,\n      focusOffset: domFocus.offset\n    };\n  }\n\n  var range = slate__WEBPACK_IMPORTED_MODULE_7__[\"Range\"].create({\n    anchorKey: anchor.key,\n    anchorOffset: anchor.offset,\n    focusKey: focus.key,\n    focusOffset: focus.offset,\n    isBackward: isCollapsed ? false : selection_is_backward__WEBPACK_IMPORTED_MODULE_9___default()(native),\n    isFocused: true\n  });\n  return range;\n}\n/**\n * CSS overflow values that would cause scrolling.\n *\n * @type {Array}\n */\n\n\nvar OVERFLOWS = ['auto', 'overlay', 'scroll'];\n/**\n * Detect whether we are running IOS version 11\n */\n\nvar IS_IOS_11 = slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"] && !!window.navigator.userAgent.match(/os 11_/i);\n/**\n * Find the nearest parent with scrolling, or window.\n *\n * @param {el} Element\n */\n\nfunction findScrollContainer(el, window) {\n  var parent = el.parentNode;\n  var scroller = void 0;\n\n  while (!scroller) {\n    if (!parent.parentNode) break;\n    var style = window.getComputedStyle(parent);\n    var overflowY = style.overflowY;\n\n    if (OVERFLOWS.includes(overflowY)) {\n      scroller = parent;\n      break;\n    }\n\n    parent = parent.parentNode;\n  } // COMPAT: Because Chrome does not allow doucment.body.scrollTop, we're\n  // assuming that window.scrollTo() should be used if the scrollable element\n  // turns out to be document.body or document.documentElement. This will work\n  // unless body is intentionally set to scrollable by restricting its height\n  // (e.g. height: 100vh).\n\n\n  if (!scroller) {\n    return window.document.body;\n  }\n\n  return scroller;\n}\n/**\n * Scroll the current selection's focus point into view if needed.\n *\n * @param {Selection} selection\n */\n\n\nfunction scrollToSelection(selection) {\n  if (IS_IOS_11) return;\n  if (!selection.anchorNode) return;\n  var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(selection.anchorNode);\n  var scroller = findScrollContainer(selection.anchorNode, window);\n  var isWindow = scroller == window.document.body || scroller == window.document.documentElement;\n  var backward = selection_is_backward__WEBPACK_IMPORTED_MODULE_9___default()(selection);\n  var range = selection.getRangeAt(0).cloneRange();\n  range.collapse(backward);\n  var cursorRect = range.getBoundingClientRect(); // COMPAT: range.getBoundingClientRect() returns 0s in Safari when range is\n  // collapsed. Expanding the range by 1 is a relatively effective workaround\n  // for vertical scroll, although horizontal may be off by 1 character.\n  // https://bugs.webkit.org/show_bug.cgi?id=138949\n  // https://bugs.chromium.org/p/chromium/issues/detail?id=435438\n\n  if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_SAFARI\"]) {\n    if (range.collapsed && cursorRect.top == 0 && cursorRect.height == 0) {\n      if (range.startOffset == 0) {\n        range.setEnd(range.endContainer, 1);\n      } else {\n        range.setStart(range.startContainer, range.startOffset - 1);\n      }\n\n      cursorRect = range.getBoundingClientRect();\n\n      if (cursorRect.top == 0 && cursorRect.height == 0) {\n        if (range.getClientRects().length) {\n          cursorRect = range.getClientRects()[0];\n        }\n      }\n    }\n  }\n\n  var width = void 0;\n  var height = void 0;\n  var yOffset = void 0;\n  var xOffset = void 0;\n  var scrollerTop = 0;\n  var scrollerLeft = 0;\n  var scrollerBordersY = 0;\n  var scrollerBordersX = 0;\n  var scrollerPaddingTop = 0;\n  var scrollerPaddingBottom = 0;\n  var scrollerPaddingLeft = 0;\n  var scrollerPaddingRight = 0;\n\n  if (isWindow) {\n    var innerWidth = window.innerWidth,\n        innerHeight = window.innerHeight,\n        pageYOffset = window.pageYOffset,\n        pageXOffset = window.pageXOffset;\n    width = innerWidth;\n    height = innerHeight;\n    yOffset = pageYOffset;\n    xOffset = pageXOffset;\n  } else {\n    var offsetWidth = scroller.offsetWidth,\n        offsetHeight = scroller.offsetHeight,\n        scrollTop = scroller.scrollTop,\n        scrollLeft = scroller.scrollLeft;\n\n    var _window$getComputedSt = window.getComputedStyle(scroller),\n        borderTopWidth = _window$getComputedSt.borderTopWidth,\n        borderBottomWidth = _window$getComputedSt.borderBottomWidth,\n        borderLeftWidth = _window$getComputedSt.borderLeftWidth,\n        borderRightWidth = _window$getComputedSt.borderRightWidth,\n        paddingTop = _window$getComputedSt.paddingTop,\n        paddingBottom = _window$getComputedSt.paddingBottom,\n        paddingLeft = _window$getComputedSt.paddingLeft,\n        paddingRight = _window$getComputedSt.paddingRight;\n\n    var scrollerRect = scroller.getBoundingClientRect();\n    width = offsetWidth;\n    height = offsetHeight;\n    scrollerTop = scrollerRect.top + parseInt(borderTopWidth, 10);\n    scrollerLeft = scrollerRect.left + parseInt(borderLeftWidth, 10);\n    scrollerBordersY = parseInt(borderTopWidth, 10) + parseInt(borderBottomWidth, 10);\n    scrollerBordersX = parseInt(borderLeftWidth, 10) + parseInt(borderRightWidth, 10);\n    scrollerPaddingTop = parseInt(paddingTop, 10);\n    scrollerPaddingBottom = parseInt(paddingBottom, 10);\n    scrollerPaddingLeft = parseInt(paddingLeft, 10);\n    scrollerPaddingRight = parseInt(paddingRight, 10);\n    yOffset = scrollTop;\n    xOffset = scrollLeft;\n  }\n\n  var cursorTop = cursorRect.top + yOffset - scrollerTop;\n  var cursorLeft = cursorRect.left + xOffset - scrollerLeft;\n  var x = xOffset;\n  var y = yOffset;\n\n  if (cursorLeft < xOffset) {\n    // selection to the left of viewport\n    x = cursorLeft - scrollerPaddingLeft;\n  } else if (cursorLeft + cursorRect.width + scrollerBordersX > xOffset + width) {\n    // selection to the right of viewport\n    x = cursorLeft + scrollerBordersX + scrollerPaddingRight - width;\n  }\n\n  if (cursorTop < yOffset) {\n    // selection above viewport\n    y = cursorTop - scrollerPaddingTop;\n  } else if (cursorTop + cursorRect.height + scrollerBordersY > yOffset + height) {\n    // selection below viewport\n    y = cursorTop + scrollerBordersY + scrollerPaddingBottom + cursorRect.height - height;\n  }\n\n  if (isWindow) {\n    window.scrollTo(x, y);\n  } else {\n    scroller.scrollTop = y;\n    scroller.scrollLeft = x;\n  }\n}\n/**\n * COMPAT: if we are in <= IE11 and the selection contains\n * tables, `removeAllRanges()` will throw\n * \"unable to complete the operation due to error 800a025e\"\n *\n * @param {Selection} selection document selection\n */\n\n\nfunction removeAllRanges(selection) {\n  var doc = window.document;\n\n  if (doc && doc.body.createTextRange) {\n    // All IE but Edge\n    var range = doc.body.createTextRange();\n    range.collapse();\n    range.select();\n  } else {\n    selection.removeAllRanges();\n  }\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$4 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:content');\n/**\n * Content.\n *\n * @type {Component}\n */\n\nvar Content = function (_React$Component) {\n  inherits(Content, _React$Component);\n  /**\n   * Constructor.\n   *\n   * @param {Object} props\n   */\n\n  /**\n   * Property types.\n   *\n   * @type {Object}\n   */\n\n  function Content(props) {\n    classCallCheck(this, Content);\n\n    var _this = possibleConstructorReturn(this, (Content.__proto__ || Object.getPrototypeOf(Content)).call(this, props));\n\n    _this.componentDidMount = function () {\n      var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(_this.element);\n      window.document.addEventListener('selectionchange', _this.onNativeSelectionChange); // COMPAT: Restrict scope of `beforeinput` to mobile.\n\n      if ((slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_ANDROID\"]) && slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"SUPPORTED_EVENTS\"].beforeinput) {\n        _this.element.addEventListener('beforeinput', _this.onNativeBeforeInput);\n      }\n\n      _this.updateSelection();\n    };\n\n    _this.componentDidUpdate = function () {\n      _this.updateSelection();\n    };\n\n    _this.updateSelection = function () {\n      var editor = _this.props.editor;\n      var value = editor.value;\n      var selection = value.selection;\n      var isBackward$$1 = selection.isBackward;\n      var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(_this.element);\n      var native = window.getSelection();\n      var rangeCount = native.rangeCount,\n          anchorNode = native.anchorNode; // If both selections are blurred, do nothing.\n\n      if (!rangeCount && selection.isBlurred) return; // If the selection has been blurred, but is still inside the editor in the\n      // DOM, blur it manually.\n\n      if (selection.isBlurred) {\n        if (!_this.isInEditor(anchorNode)) return;\n        removeAllRanges(native);\n\n        _this.element.blur();\n\n        debug$4('updateSelection', {\n          selection: selection,\n          native: native\n        });\n        return;\n      } // If the selection isn't set, do nothing.\n\n\n      if (selection.isUnset) return; // Otherwise, figure out which DOM nodes should be selected...\n\n      var current = !!rangeCount && native.getRangeAt(0);\n      var range = findDOMRange(selection, window);\n\n      if (!range) {\n        slate_dev_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].error('Unable to find a native DOM range from the current selection.', {\n          selection: selection\n        });\n        return;\n      }\n\n      var startContainer = range.startContainer,\n          startOffset = range.startOffset,\n          endContainer = range.endContainer,\n          endOffset = range.endOffset; // If the new range matches the current selection, there is nothing to fix.\n      // COMPAT: The native `Range` object always has it's \"start\" first and \"end\"\n      // last in the DOM. It has no concept of \"backwards/forwards\", so we have\n      // to check both orientations here. (2017/10/31)\n\n      if (current) {\n        if (startContainer == current.startContainer && startOffset == current.startOffset && endContainer == current.endContainer && endOffset == current.endOffset || startContainer == current.endContainer && startOffset == current.endOffset && endContainer == current.startContainer && endOffset == current.startOffset) {\n          return;\n        }\n      } // Otherwise, set the `isUpdatingSelection` flag and update the selection.\n\n\n      _this.tmp.isUpdatingSelection = true;\n      removeAllRanges(native); // COMPAT: IE 11 does not support Selection.setBaseAndExtent\n\n      if (native.setBaseAndExtent) {\n        // COMPAT: Since the DOM range has no concept of backwards/forwards\n        // we need to check and do the right thing here.\n        if (isBackward$$1) {\n          native.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);\n        } else {\n          native.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);\n        }\n      } else {\n        // COMPAT: IE 11 does not support Selection.extend, fallback to addRange\n        native.addRange(range);\n      } // Scroll to the selection, in case it's out of view.\n\n\n      scrollToSelection(native); // Then unset the `isUpdatingSelection` flag after a delay.\n\n      setTimeout(function () {\n        // COMPAT: In Firefox, it's not enough to create a range, you also need to\n        // focus the contenteditable element too. (2016/11/16)\n        if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_FIREFOX\"] && _this.element) _this.element.focus();\n        _this.tmp.isUpdatingSelection = false;\n      });\n      debug$4('updateSelection', {\n        selection: selection,\n        native: native\n      });\n    };\n\n    _this.ref = function (element) {\n      _this.element = element;\n    };\n\n    _this.isInEditor = function (target) {\n      var element = _this.element; // COMPAT: Text nodes don't have `isContentEditable` property. So, when\n      // `target` is a text node use its parent node for check.\n\n      var el = target.nodeType === 3 ? target.parentNode : target;\n      return el.isContentEditable && (el === element || el.closest('[data-slate-editor]') === element);\n    };\n\n    _this.onNativeBeforeInput = function (event) {\n      if (_this.props.readOnly) return;\n      if (!_this.isInEditor(event.target)) return;\n\n      var _event$getTargetRange = event.getTargetRanges(),\n          _event$getTargetRange2 = slicedToArray(_event$getTargetRange, 1),\n          targetRange = _event$getTargetRange2[0];\n\n      if (!targetRange) return;\n      var editor = _this.props.editor;\n\n      switch (event.inputType) {\n        case 'deleteContentBackward':\n          {\n            event.preventDefault();\n            var range = findRange(targetRange, editor.value);\n            editor.change(function (change) {\n              return change.deleteAtRange(range);\n            });\n            break;\n          }\n\n        case 'insertLineBreak': // intentional fallthru\n\n        case 'insertParagraph':\n          {\n            event.preventDefault();\n\n            var _range = findRange(targetRange, editor.value);\n\n            editor.change(function (change) {\n              if (change.value.isInVoid) {\n                change.collapseToStartOfNextText();\n              } else {\n                change.splitBlockAtRange(_range);\n              }\n            });\n            break;\n          }\n\n        case 'insertReplacementText': // intentional fallthru\n\n        case 'insertText':\n          {\n            // `data` should have the text for the `insertText` input type and\n            // `dataTransfer` should have the text for the `insertReplacementText`\n            // input type, but Safari uses `insertText` for spell check replacements\n            // and sets `data` to `null`.\n            var text = event.data == null ? event.dataTransfer.getData('text/plain') : event.data;\n            if (text == null) return;\n            event.preventDefault();\n            var value = editor.value;\n            var selection = value.selection;\n\n            var _range2 = findRange(targetRange, value);\n\n            editor.change(function (change) {\n              change.insertTextAtRange(_range2, text, selection.marks); // If the text was successfully inserted, and the selection had marks\n              // on it, unset the selection's marks.\n\n              if (selection.marks && value.document != change.value.document) {\n                change.select({\n                  marks: null\n                });\n              }\n            });\n            break;\n          }\n      }\n    };\n\n    _this.onNativeSelectionChange = lodash_throttle__WEBPACK_IMPORTED_MODULE_11___default()(function (event) {\n      if (_this.props.readOnly) return;\n      var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n      var activeElement = window.document.activeElement;\n      if (activeElement !== _this.element) return;\n\n      _this.props.onSelect(event);\n    }, 100);\n\n    _this.renderNode = function (child, isSelected, decorations) {\n      var _this$props = _this.props,\n          editor = _this$props.editor,\n          readOnly = _this$props.readOnly;\n      var value = editor.value;\n      var document = value.document,\n          isFocused = value.isFocused;\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Node$1, {\n        block: null,\n        editor: editor,\n        decorations: decorations,\n        isSelected: isSelected,\n        isFocused: isFocused && isSelected,\n        key: child.key,\n        node: child,\n        parent: document,\n        readOnly: readOnly\n      });\n    };\n\n    _this.tmp = {};\n    _this.tmp.isUpdatingSelection = false;\n    EVENT_HANDLERS.forEach(function (handler) {\n      _this[handler] = function (event) {\n        _this.onEvent(handler, event);\n      };\n    });\n    return _this;\n  }\n  /**\n   * When the editor first mounts in the DOM we need to:\n   *\n   *   - Add native DOM event listeners.\n   *   - Update the selection, in case it starts focused.\n   */\n\n  /**\n   * Default properties.\n   *\n   * @type {Object}\n   */\n\n\n  createClass(Content, [{\n    key: 'componentWillUnmount',\n\n    /**\n     * When unmounting, remove DOM event listeners.\n     */\n    value: function componentWillUnmount() {\n      var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(this.element);\n\n      if (window) {\n        window.document.removeEventListener('selectionchange', this.onNativeSelectionChange);\n      } // COMPAT: Restrict scope of `beforeinput` to mobile.\n\n\n      if ((slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_ANDROID\"]) && slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"SUPPORTED_EVENTS\"].beforeinput) {\n        this.element.removeEventListener('beforeinput', this.onNativeBeforeInput);\n      }\n    }\n    /**\n     * On update, update the selection.\n     */\n\n    /**\n     * Update the native DOM selection to reflect the internal model.\n     */\n\n    /**\n     * The React ref method to set the root content element locally.\n     *\n     * @param {Element} element\n     */\n\n    /**\n     * Check if an event `target` is fired from within the contenteditable\n     * element. This should be false for edits happening in non-contenteditable\n     * children, such as void nodes and other nested Slate editors.\n     *\n     * @param {Element} target\n     * @return {Boolean}\n     */\n\n  }, {\n    key: 'onEvent',\n\n    /**\n     * On `event` with `handler`.\n     *\n     * @param {String} handler\n     * @param {Event} event\n     */\n    value: function onEvent(handler, event) {\n      debug$4('onEvent', handler); // Ignore `onBlur`, `onFocus` and `onSelect` events generated\n      // programmatically while updating selection.\n\n      if (this.tmp.isUpdatingSelection && (handler == 'onSelect' || handler == 'onBlur' || handler == 'onFocus')) {\n        return;\n      } // COMPAT: There are situations where a select event will fire with a new\n      // native selection that resolves to the same internal position. In those\n      // cases we don't need to trigger any changes, since our internal model is\n      // already up to date, but we do want to update the native selection again\n      // to make sure it is in sync. (2017/10/16)\n\n\n      if (handler == 'onSelect') {\n        var editor = this.props.editor;\n        var value = editor.value;\n        var selection = value.selection;\n        var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n        var native = window.getSelection();\n        var range = findRange(native, value);\n\n        if (range && range.equals(selection)) {\n          this.updateSelection();\n          return;\n        }\n      } // Don't handle drag and drop events coming from embedded editors.\n\n\n      if (handler == 'onDragEnd' || handler == 'onDragEnter' || handler == 'onDragExit' || handler == 'onDragLeave' || handler == 'onDragOver' || handler == 'onDragStart' || handler == 'onDrop') {\n        var target = event.target;\n        var targetEditorNode = target.closest('[data-slate-editor]');\n        if (targetEditorNode !== this.element) return;\n      } // Some events require being in editable in the editor, so if the event\n      // target isn't, ignore them.\n\n\n      if (handler == 'onBeforeInput' || handler == 'onBlur' || handler == 'onCompositionEnd' || handler == 'onCompositionStart' || handler == 'onCopy' || handler == 'onCut' || handler == 'onFocus' || handler == 'onInput' || handler == 'onKeyDown' || handler == 'onKeyUp' || handler == 'onPaste' || handler == 'onSelect') {\n        if (!this.isInEditor(event.target)) return;\n      }\n\n      this.props[handler](event);\n    }\n    /**\n     * On a native `beforeinput` event, use the additional range information\n     * provided by the event to manipulate text exactly as the browser would.\n     *\n     * This is currently only used on iOS and Android.\n     *\n     * @param {InputEvent} event\n     */\n\n    /**\n     * On native `selectionchange` event, trigger the `onSelect` handler. This is\n     * needed to account for React's `onSelect` being non-standard and not firing\n     * until after a selection has been released. This causes issues in situations\n     * where another change happens while a selection is being made.\n     *\n     * @param {Event} event\n     */\n\n  }, {\n    key: 'render',\n\n    /**\n     * Render the editor content.\n     *\n     * @return {Element}\n     */\n    value: function render() {\n      var _this2 = this;\n\n      var props = this.props;\n      var className = props.className,\n          readOnly = props.readOnly,\n          editor = props.editor,\n          tabIndex = props.tabIndex,\n          role = props.role,\n          tagName = props.tagName,\n          spellCheck = props.spellCheck;\n      var value = editor.value,\n          stack = editor.stack;\n      var Container = tagName;\n      var document = value.document,\n          selection = value.selection,\n          decorations = value.decorations;\n      var indexes = document.getSelectionIndexes(selection);\n      var decs = document.getDecorations(stack).concat(decorations || []);\n      var childrenDecorations = getChildrenDecorations(document, decs);\n      var children = document.nodes.toArray().map(function (child, i) {\n        var isSelected = !!indexes && indexes.start <= i && i < indexes.end;\n        return _this2.renderNode(child, isSelected, childrenDecorations[i]);\n      });\n      var handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n        obj[handler] = _this2[handler];\n        return obj;\n      }, {});\n\n      var style = _extends({\n        // Prevent the default outline styles.\n        outline: 'none',\n        // Preserve adjacent whitespace and new lines.\n        whiteSpace: 'pre-wrap',\n        // Allow words to break if they are too long.\n        wordWrap: 'break-word'\n      }, readOnly ? {} : {\n        WebkitUserModify: 'read-write-plaintext-only'\n      }, props.style);\n\n      debug$4('render', {\n        props: props\n      });\n      return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Container, _extends({}, handlers, {\n        'data-slate-editor': true,\n        ref: this.ref,\n        'data-key': document.key,\n        contentEditable: readOnly ? null : true,\n        suppressContentEditableWarning: true,\n        className: className,\n        onBlur: this.onBlur,\n        onFocus: this.onFocus,\n        onCompositionEnd: this.onCompositionEnd,\n        onCompositionStart: this.onCompositionStart,\n        onCopy: this.onCopy,\n        onCut: this.onCut,\n        onDragEnd: this.onDragEnd,\n        onDragOver: this.onDragOver,\n        onDragStart: this.onDragStart,\n        onDrop: this.onDrop,\n        onInput: this.onInput,\n        onKeyDown: this.onKeyDown,\n        onKeyUp: this.onKeyUp,\n        onPaste: this.onPaste,\n        onSelect: this.onSelect,\n        autoCorrect: props.autoCorrect ? 'on' : 'off',\n        spellCheck: spellCheck,\n        style: style,\n        role: readOnly ? null : role || 'textbox',\n        tabIndex: tabIndex // COMPAT: The Grammarly Chrome extension works by changing the DOM out\n        // from under `contenteditable` elements, which leads to weird behaviors\n        // so we have to disable it like this. (2017/04/24)\n        ,\n        'data-gramm': false\n      }), children, this.props.children);\n    }\n    /**\n     * Render a `child` node of the document.\n     *\n     * @param {Node} child\n     * @param {Boolean} isSelected\n     * @return {Element}\n     */\n\n  }]);\n  return Content;\n}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component);\n/**\n * Mix in handler prop types.\n */\n\n\nContent.propTypes = {\n  autoCorrect: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired,\n  children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.any.isRequired,\n  className: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n  editor: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object.isRequired,\n  readOnly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired,\n  role: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n  spellCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool.isRequired,\n  style: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n  tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n  tagName: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string\n};\nContent.defaultProps = {\n  style: {},\n  tagName: 'div'\n};\nEVENT_HANDLERS.forEach(function (handler) {\n  Content.propTypes[handler] = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func.isRequired;\n});\n/**\n * The transfer types that Slate recognizes.\n *\n * @type {Object}\n */\n\nvar TRANSFER_TYPES = {\n  FRAGMENT: 'application/x-slate-fragment',\n  HTML: 'text/html',\n  NODE: 'application/x-slate-node',\n  RICH: 'text/rtf',\n  TEXT: 'text/plain'\n  /**\n   * Export.\n   *\n   * @type {Object}\n   */\n\n};\nvar FRAGMENT = TRANSFER_TYPES.FRAGMENT;\nvar HTML = TRANSFER_TYPES.HTML;\nvar TEXT = TRANSFER_TYPES.TEXT;\n/**\n * Prepares a Slate document fragment to be copied to the clipboard.\n *\n * @param {Event} event\n * @param {Value} value\n * @param {Document} [fragment]\n */\n\nfunction cloneFragment(event, value) {\n  var fragment = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : value.fragment;\n  var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n  var native = window.getSelection();\n  var startKey = value.startKey,\n      endKey = value.endKey;\n  var startVoid = value.document.getClosestVoid(startKey);\n  var endVoid = value.document.getClosestVoid(endKey); // If the selection is collapsed, and it isn't inside a void node, abort.\n\n  if (native.isCollapsed && !startVoid) return; // Create a fake selection so that we can add a Base64-encoded copy of the\n  // fragment to the HTML, to decode on future pastes.\n\n  var encoded = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].serializeNode(fragment);\n  var range = native.getRangeAt(0);\n  var contents = range.cloneContents();\n  var attach = contents.childNodes[0]; // Make sure attach is a non-empty node, since empty nodes will not get copied\n\n  contents.childNodes.forEach(function (node) {\n    if (node.textContent && node.textContent.trim() !== '') {\n      attach = node;\n    }\n  }); // COMPAT: If the end node is a void node, we need to move the end of the\n  // range from the void node's spacer span, to the end of the void node's\n  // content, since the spacer is before void's content in the DOM.\n\n  if (endVoid) {\n    var r = range.cloneRange();\n    var node = findDOMNode$1(endVoid, window);\n    r.setEndAfter(node);\n    contents = r.cloneContents();\n  } // COMPAT: If the start node is a void node, we need to attach the encoded\n  // fragment to the void node's content node instead of the spacer, because\n  // attaching it to empty `
/` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n\n\n if (startVoid) {\n attach = contents.childNodes[0].childNodes[1].firstChild;\n } // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n\n\n [].slice.call(contents.querySelectorAll(ZERO_WIDTH_SELECTOR)).forEach(function (zw) {\n var isNewline = zw.getAttribute(ZERO_WIDTH_ATTRIBUTE) === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n }); // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `` so we have something to set an attribute on.\n\n if (attach.nodeType == 3) {\n var span = window.document.createElement('span'); // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n\n span.style.whiteSpace = 'pre';\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n\n attach.setAttribute('data-slate-fragment', encoded); // Add the phony content to a div element. This is needed to copy the\n // contents into the html clipboard register.\n\n var div = window.document.createElement('div');\n div.appendChild(contents); // For browsers supporting it, we set the clipboard registers manually,\n // since the result is more predictable.\n // COMPAT: IE supports the setData method, but only in restricted sense.\n // IE doesn't support arbitrary MIME types or common ones like 'text/plain';\n // it only accepts \"Text\" (which gets mapped to 'text/plain') and \"Url\"\n // (mapped to 'text/url-list'); so, we should only enter block if !IS_IE\n\n if (event.clipboardData && event.clipboardData.setData && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IE\"]) {\n event.preventDefault();\n event.clipboardData.setData(TEXT, div.textContent);\n event.clipboardData.setData(FRAGMENT, encoded);\n event.clipboardData.setData(HTML, div.innerHTML);\n return;\n } // COMPAT: For browser that don't support the Clipboard API's setData method,\n // we must rely on the browser to natively copy what's selected.\n // So we add the div (containing our content) to the DOM, and select it.\n\n\n var editor = event.target.closest('[data-slate-editor]');\n div.setAttribute('contenteditable', true);\n div.style.position = 'absolute';\n div.style.left = '-9999px';\n editor.appendChild(div);\n native.selectAllChildren(div); // Revert to the previous selection right after copying.\n\n window.requestAnimationFrame(function () {\n editor.removeChild(div);\n removeAllRanges(native);\n native.addRange(range);\n });\n}\n/**\n * Find a Slate node from a DOM `element`.\n *\n * @param {Element} element\n * @param {Value} value\n * @return {Node|Null}\n */\n\n\nfunction findNode(element, value) {\n var closest = element.closest('[data-key]');\n if (!closest) return null;\n var key = closest.getAttribute('data-key');\n if (!key) return null;\n var node = value.document.getNode(key);\n return node || null;\n}\n/**\n * Get the target range from a DOM `event`.\n *\n * @param {Event} event\n * @param {Value} value\n * @return {Range}\n */\n\n\nfunction getEventRange(event, value) {\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var _event = event,\n x = _event.x,\n y = _event.y,\n target = _event.target;\n if (x == null || y == null) return null;\n var document = value.document;\n var node = findNode(target, value);\n if (!node) return null; // If the drop target is inside a void node, move it into either the next or\n // previous node, depending on which side the `x` and `y` coordinates are\n // closest to.\n\n if (node.isVoid) {\n var rect = target.getBoundingClientRect();\n var isPrevious = node.object == 'inline' ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n var text = node.getFirstText();\n\n var _range = slate__WEBPACK_IMPORTED_MODULE_7__[\"Range\"].create();\n\n if (isPrevious) {\n var previousText = document.getPreviousText(text.key);\n\n if (previousText) {\n return _range.moveToEndOf(previousText);\n }\n }\n\n var nextText = document.getNextText(text.key);\n return nextText ? _range.moveToStartOf(nextText) : null;\n } // Else resolve a range from the caret position where the drop occured.\n\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(target);\n var native = void 0; // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n\n if (window.document.caretRangeFromPoint) {\n native = window.document.caretRangeFromPoint(x, y);\n } else if (window.document.caretPositionFromPoint) {\n var position = window.document.caretPositionFromPoint(x, y);\n native = window.document.createRange();\n native.setStart(position.offsetNode, position.offset);\n native.setEnd(position.offsetNode, position.offset);\n } else if (window.document.body.createTextRange) {\n // COMPAT: In IE, `caretRangeFromPoint` and\n // `caretPositionFromPoint` don't exist. (2018/07/11)\n native = window.document.body.createTextRange();\n\n try {\n native.moveToPoint(x, y);\n } catch (error) {\n // IE11 will raise an `unspecified error` if `moveToPoint` is\n // called during a dropEvent.\n return null;\n }\n } // Resolve a Slate range from the DOM range.\n\n\n var range = findRange(native, value);\n if (!range) return null;\n return range;\n}\n/**\n * Transfer types.\n *\n * @type {String}\n */\n\n\nvar FRAGMENT$1 = TRANSFER_TYPES.FRAGMENT;\nvar HTML$1 = TRANSFER_TYPES.HTML;\nvar NODE = TRANSFER_TYPES.NODE;\nvar RICH = TRANSFER_TYPES.RICH;\nvar TEXT$1 = TRANSFER_TYPES.TEXT;\n/**\n * Fragment matching regexp for HTML nodes.\n *\n * @type {RegExp}\n */\n\nvar FRAGMENT_MATCHER = / data-slate-fragment=\"([^\\s\"]+)\"/;\n/**\n * Get the transfer data from an `event`.\n *\n * @param {Event} event\n * @return {Object}\n */\n\nfunction getEventTransfer(event) {\n // COMPAT: IE 11 doesn't populate nativeEvent with either\n // dataTransfer or clipboardData. We'll need to use the base event\n // object (2018/14/6)\n if (!slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IE\"] && event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n var fragment = getType(transfer, FRAGMENT$1);\n var node = getType(transfer, NODE);\n var html = getType(transfer, HTML$1);\n var rich = getType(transfer, RICH);\n var text = getType(transfer, TEXT$1);\n var files = void 0; // If there isn't a fragment, but there is HTML, check to see if the HTML is\n // actually an encoded fragment.\n\n if (!fragment && html && ~html.indexOf(' data-slate-fragment=\"')) {\n var matches = FRAGMENT_MATCHER.exec(html);\n\n var _matches = slicedToArray(matches, 2),\n full = _matches[0],\n encoded = _matches[1]; // eslint-disable-line no-unused-vars\n\n\n if (encoded) fragment = encoded;\n } // COMPAT: Edge doesn't handle custom data types\n // These will be embedded in text/plain in this case (2017/7/12)\n\n\n if (text) {\n var embeddedTypes = getEmbeddedTypes(text);\n if (embeddedTypes[FRAGMENT$1]) fragment = embeddedTypes[FRAGMENT$1];\n if (embeddedTypes[NODE]) node = embeddedTypes[NODE];\n if (embeddedTypes[TEXT$1]) text = embeddedTypes[TEXT$1];\n } // Decode a fragment or node if they exist.\n\n\n if (fragment) fragment = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].deserializeNode(fragment);\n if (node) node = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].deserializeNode(node); // COMPAT: Edge sometimes throws 'NotSupportedError'\n // when accessing `transfer.items` (2017/7/12)\n\n try {\n // Get and normalize files if they exist.\n if (transfer.items && transfer.items.length) {\n files = Array.from(transfer.items).map(function (item) {\n return item.kind == 'file' ? item.getAsFile() : null;\n }).filter(function (exists) {\n return exists;\n });\n } else if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } catch (err) {\n if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } // Determine the type of the data.\n\n\n var data = {\n files: files,\n fragment: fragment,\n html: html,\n node: node,\n rich: rich,\n text: text\n };\n data.type = getTransferType(data);\n return data;\n}\n/**\n * Takes text input, checks whether contains embedded data\n * and returns object with original text +/- additional data\n *\n * @param {String} text\n * @return {Object}\n */\n\n\nfunction getEmbeddedTypes(text) {\n var prefix = 'SLATE-DATA-EMBED::';\n\n if (text.substring(0, prefix.length) != prefix) {\n return {\n TEXT: text\n };\n } // Attempt to parse, if fails then just standard text/plain\n // Otherwise, already had data embedded\n\n\n try {\n return JSON.parse(text.substring(prefix.length));\n } catch (err) {\n throw new Error('Unable to parse custom Slate drag event data.');\n }\n}\n/**\n * Get the type of a transfer from its `data`.\n *\n * @param {Object} data\n * @return {String}\n */\n\n\nfunction getTransferType(data) {\n if (data.fragment) return 'fragment';\n if (data.node) return 'node'; // COMPAT: Microsoft Word adds an image of the selected text to the data.\n // Since files are preferred over HTML or text, this would cause the type to\n // be considered `files`. But it also adds rich text data so we can check\n // for that and properly set the type to `html` or `text`. (2016/11/21)\n\n if (data.rich && data.html) return 'html';\n if (data.rich && data.text) return 'text';\n if (data.files && data.files.length) return 'files';\n if (data.html) return 'html';\n if (data.text) return 'text';\n return 'unknown';\n}\n/**\n * Get one of types `TYPES.FRAGMENT`, `TYPES.NODE`, `text/html`, `text/rtf` or\n * `text/plain` from transfers's `data` if possible, otherwise return null.\n *\n * @param {Object} transfer\n * @param {String} type\n * @return {String}\n */\n\n\nfunction getType(transfer, type) {\n if (!transfer.types || !transfer.types.length) {\n // COMPAT: In IE 11, there is no `types` field but `getData('Text')`\n // is supported`. (2017/06/23)\n return type == TEXT$1 ? transfer.getData('Text') || null : null;\n } // COMPAT: In Edge, transfer.types doesn't respond to `indexOf`. (2017/10/25)\n\n\n var types = Array.from(transfer.types);\n return types.indexOf(type) !== -1 ? transfer.getData(type) || null : null;\n}\n/**\n * The default plain text transfer type.\n *\n * @type {String}\n */\n\n\nvar TEXT$2 = TRANSFER_TYPES.TEXT;\n/**\n * Set data with `type` and `content` on an `event`.\n *\n * COMPAT: In Edge, custom types throw errors, so embed all non-standard\n * types in text/plain compound object. (2017/7/12)\n *\n * @param {Event} event\n * @param {String} type\n * @param {String} content\n */\n\nfunction setEventTransfer(event, type, content) {\n var mime = TRANSFER_TYPES[type.toUpperCase()];\n\n if (!mime) {\n throw new Error('Cannot set unknown transfer type \"' + mime + '\".');\n }\n\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n\n try {\n transfer.setData(mime, content); // COMPAT: Safari needs to have the 'text' (and not 'text/plain') value in dataTransfer\n // to display the cursor while dragging internally.\n\n transfer.setData('text', transfer.getData('text'));\n } catch (err) {\n var prefix = 'SLATE-DATA-EMBED::';\n var text = transfer.getData(TEXT$2);\n var obj = {}; // If the existing plain text data is prefixed, it's Slate JSON data.\n\n if (text.substring(0, prefix.length) === prefix) {\n try {\n obj = JSON.parse(text.substring(prefix.length));\n } catch (e) {\n throw new Error('Failed to parse Slate data from `DataTransfer` object.');\n }\n } else {\n // Otherwise, it's just set it as is.\n obj[TEXT$2] = text;\n }\n\n obj[mime] = content;\n var string = '' + prefix + JSON.stringify(obj);\n transfer.setData(TEXT$2, string);\n }\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$5 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:after');\n/**\n * The after plugin.\n *\n * @return {Object}\n */\n\nfunction AfterPlugin() {\n var isDraggingInternally = null;\n /**\n * On before input, correct any browser inconsistencies.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n debug$5('onBeforeInput', {\n event: event\n });\n event.preventDefault();\n change.insertText(event.data);\n }\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onBlur(event, change, editor) {\n debug$5('onBlur', {\n event: event\n });\n change.blur();\n }\n /**\n * On click.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onClick(event, change, editor) {\n if (editor.props.readOnly) return true;\n var value = change.value;\n var document = value.document;\n var node = findNode(event.target, value);\n var isVoid = node && (node.isVoid || document.hasVoidParent(node.key));\n\n if (isVoid) {\n // COMPAT: In Chrome & Safari, selections that are at the zero offset of\n // an inline node will be automatically replaced to be at the last offset\n // of a previous inline node, which screws us up, so we always want to set\n // it to the end of the node. (2016/11/29)\n change.focus().collapseToEndOf(node);\n }\n\n debug$5('onClick', {\n event: event\n });\n }\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onCopy(event, change, editor) {\n debug$5('onCopy', {\n event: event\n });\n cloneFragment(event, change.value);\n }\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onCut(event, change, editor) {\n debug$5('onCut', {\n event: event\n });\n cloneFragment(event, change.value);\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target); // Once the fake cut content has successfully been added to the clipboard,\n // delete the content in the current selection.\n\n window.requestAnimationFrame(function () {\n // If user cuts a void block node or a void inline node,\n // manually removes it since selection is collapsed in this case.\n var value = change.value;\n var endBlock = value.endBlock,\n endInline = value.endInline,\n isCollapsed = value.isCollapsed;\n var isVoidBlock = endBlock && endBlock.isVoid && isCollapsed;\n var isVoidInline = endInline && endInline.isVoid && isCollapsed;\n\n if (isVoidBlock) {\n editor.change(function (c) {\n return c.removeNodeByKey(endBlock.key);\n });\n } else if (isVoidInline) {\n editor.change(function (c) {\n return c.removeNodeByKey(endInline.key);\n });\n } else {\n editor.change(function (c) {\n return c.delete();\n });\n }\n });\n }\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragEnd(event, change, editor) {\n debug$5('onDragEnd', {\n event: event\n });\n isDraggingInternally = null;\n }\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragOver(event, change, editor) {\n debug$5('onDragOver', {\n event: event\n });\n }\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragStart(event, change, editor) {\n debug$5('onDragStart', {\n event: event\n });\n isDraggingInternally = true;\n var value = change.value;\n var document = value.document;\n var node = findNode(event.target, value);\n var isVoid = node && (node.isVoid || document.hasVoidParent(node.key));\n\n if (isVoid) {\n var encoded = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].serializeNode(node, {\n preserveKeys: true\n });\n setEventTransfer(event, 'node', encoded);\n } else {\n var fragment = value.fragment;\n\n var _encoded = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_12__[\"default\"].serializeNode(fragment);\n\n setEventTransfer(event, 'fragment', _encoded);\n }\n }\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDrop(event, change, editor) {\n debug$5('onDrop', {\n event: event\n });\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n var target = getEventRange(event, value);\n if (!target) return;\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n node = transfer.node,\n text = transfer.text;\n change.focus(); // If the drag is internal and the target is after the selection, it\n // needs to account for the selection's content being deleted.\n\n if (isDraggingInternally && selection.endKey == target.endKey && selection.endOffset < target.endOffset) {\n target = target.move(selection.startKey == selection.endKey ? 0 - selection.endOffset + selection.startOffset : 0 - selection.endOffset);\n }\n\n if (isDraggingInternally) {\n change.delete();\n }\n\n change.select(target);\n\n if (type == 'text' || type == 'html') {\n var _target = target,\n anchorKey = _target.anchorKey;\n var hasVoidParent = document.hasVoidParent(anchorKey);\n\n if (hasVoidParent) {\n var n = document.getNode(anchorKey);\n\n while (hasVoidParent) {\n n = document.getNextText(n.key);\n if (!n) break;\n hasVoidParent = document.hasVoidParent(n.key);\n }\n\n if (n) change.collapseToStartOf(n);\n }\n\n if (text) {\n text.split('\\n').forEach(function (line, i) {\n if (i > 0) change.splitBlock();\n change.insertText(line);\n });\n }\n }\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n if (type == 'node' && slate__WEBPACK_IMPORTED_MODULE_7__[\"Block\"].isBlock(node)) {\n change.insertBlock(node.regenerateKey()).removeNodeByKey(node.key);\n }\n\n if (type == 'node' && slate__WEBPACK_IMPORTED_MODULE_7__[\"Inline\"].isInline(node)) {\n change.insertInline(node.regenerateKey()).removeNodeByKey(node.key);\n } // COMPAT: React's onSelect event breaks after an onDrop event\n // has fired in a node: https://github.com/facebook/react/issues/11379.\n // Until this is fixed in React, we dispatch a mouseup event on that\n // DOM node, since that will make it go back to normal.\n\n\n var focusNode = document.getNode(target.focusKey);\n var el = findDOMNode$1(focusNode, window);\n if (!el) return;\n el.dispatchEvent(new MouseEvent('mouseup', {\n view: window,\n bubbles: true,\n cancelable: true\n }));\n }\n /**\n * On input.\n *\n * @param {Event} eventvent\n * @param {Change} change\n */\n\n\n function onInput(event, change, editor) {\n debug$5('onInput', {\n event: event\n });\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n var value = change.value; // Get the selection point.\n\n var native = window.getSelection();\n var anchorNode = native.anchorNode;\n var point = findPoint(anchorNode, 0, value);\n if (!point) return; // Get the text node and leaf in question.\n\n var document = value.document,\n selection = value.selection;\n var node = document.getDescendant(point.key);\n var block = document.getClosestBlock(node.key);\n var leaves = node.getLeaves();\n var lastText = block.getLastText();\n var lastLeaf = leaves.last();\n var start = 0;\n var end = 0;\n var leaf = leaves.find(function (r) {\n start = end;\n end += r.text.length;\n if (end > point.offset) return true;\n }) || lastLeaf; // Get the text information.\n\n var text = leaf.text;\n var textContent = anchorNode.textContent;\n var isLastText = node == lastText;\n var isLastLeaf = leaf == lastLeaf;\n var lastChar = textContent.charAt(textContent.length - 1); // COMPAT: If this is the last leaf, and the DOM text ends in a new line,\n // we will have added another new line in 's render method to account\n // for browsers collapsing a single trailing new lines, so remove it.\n\n if (isLastText && isLastLeaf && lastChar == '\\n') {\n textContent = textContent.slice(0, -1);\n } // If the text is no different, abort.\n\n\n if (textContent == text) return; // Determine what the selection should be after changing the text.\n\n var delta = textContent.length - text.length;\n var corrected = selection.collapseToEnd().move(delta);\n var entire = selection.moveAnchorTo(point.key, start).moveFocusTo(point.key, end); // Change the current value to have the leaf's text replaced.\n\n change.insertTextAtRange(entire, textContent, leaf.marks).select(corrected);\n }\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onKeyDown(event, change, editor) {\n debug$5('onKeyDown', {\n event: event\n });\n var value = change.value; // COMPAT: In iOS, some of these hotkeys are handled in the\n // `onNativeBeforeInput` handler of the `` component in order to\n // preserve native autocorrect behavior, so they shouldn't be handled here.\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isSplitBlock(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"]) {\n return value.isInVoid ? change.collapseToStartOfNextText() : change.splitBlock();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isDeleteCharBackward(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"]) {\n return change.deleteCharBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isDeleteCharForward(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"]) {\n return change.deleteCharForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isDeleteLineBackward(event)) {\n return change.deleteLineBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isDeleteLineForward(event)) {\n return change.deleteLineForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isDeleteWordBackward(event)) {\n return change.deleteWordBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isDeleteWordForward(event)) {\n return change.deleteWordForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isRedo(event)) {\n return change.redo();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isUndo(event)) {\n return change.undo();\n } // COMPAT: Certain browsers don't handle the selection updates properly. In\n // Chrome, the selection isn't properly extended. And in Firefox, the\n // selection isn't properly collapsed. (2017/10/17)\n\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isCollapseLineBackward(event)) {\n event.preventDefault();\n return change.collapseLineBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isCollapseLineForward(event)) {\n event.preventDefault();\n return change.collapseLineForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isExtendLineBackward(event)) {\n event.preventDefault();\n return change.extendLineBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isExtendLineForward(event)) {\n event.preventDefault();\n return change.extendLineForward();\n } // COMPAT: If a void node is selected, or a zero-width text node adjacent to\n // an inline is selected, we need to handle these hotkeys manually because\n // browsers won't know what to do.\n\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isCollapseCharBackward(event)) {\n var document = value.document,\n isInVoid = value.isInVoid,\n previousText = value.previousText,\n startText = value.startText;\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key);\n\n if (isInVoid || isPreviousInVoid || startText.text == '') {\n event.preventDefault();\n return change.collapseCharBackward();\n }\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isCollapseCharForward(event)) {\n var _document = value.document,\n _isInVoid = value.isInVoid,\n nextText = value.nextText,\n _startText = value.startText;\n\n var isNextInVoid = nextText && _document.hasVoidParent(nextText.key);\n\n if (_isInVoid || isNextInVoid || _startText.text == '') {\n event.preventDefault();\n return change.collapseCharForward();\n }\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isExtendCharBackward(event)) {\n var _document2 = value.document,\n _isInVoid2 = value.isInVoid,\n _previousText = value.previousText,\n _startText2 = value.startText;\n\n var _isPreviousInVoid = _previousText && _document2.hasVoidParent(_previousText.key);\n\n if (_isInVoid2 || _isPreviousInVoid || _startText2.text == '') {\n event.preventDefault();\n return change.extendCharBackward();\n }\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isExtendCharForward(event)) {\n var _document3 = value.document,\n _isInVoid3 = value.isInVoid,\n _nextText = value.nextText,\n _startText3 = value.startText;\n\n var _isNextInVoid = _nextText && _document3.hasVoidParent(_nextText.key);\n\n if (_isInVoid3 || _isNextInVoid || _startText3.text == '') {\n event.preventDefault();\n return change.extendCharForward();\n }\n }\n }\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onPaste(event, change, editor) {\n debug$5('onPaste', {\n event: event\n });\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n if (type == 'fragment') {\n change.insertFragment(fragment);\n }\n\n if (type == 'text' || type == 'html') {\n if (!text) return;\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n startBlock = value.startBlock;\n if (startBlock.isVoid) return;\n var defaultBlock = startBlock;\n var defaultMarks = document.getInsertMarksAtRange(selection);\n var frag = slate_plain_serializer__WEBPACK_IMPORTED_MODULE_13__[\"default\"].deserialize(text, {\n defaultBlock: defaultBlock,\n defaultMarks: defaultMarks\n }).document;\n change.insertFragment(frag);\n }\n }\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onSelect(event, change, editor) {\n debug$5('onSelect', {\n event: event\n });\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n var value = change.value;\n var document = value.document;\n var native = window.getSelection(); // If there are no ranges, the editor was blurred natively.\n\n if (!native.rangeCount) {\n change.blur();\n return;\n } // Otherwise, determine the Slate selection from the native one.\n\n\n var range = findRange(native, value);\n if (!range) return;\n var _range = range,\n anchorKey = _range.anchorKey,\n anchorOffset = _range.anchorOffset,\n focusKey = _range.focusKey,\n focusOffset = _range.focusOffset;\n var anchorText = document.getNode(anchorKey);\n var focusText = document.getNode(focusKey);\n var anchorInline = document.getClosestInline(anchorKey);\n var focusInline = document.getClosestInline(focusKey);\n var focusBlock = document.getClosestBlock(focusKey);\n var anchorBlock = document.getClosestBlock(anchorKey); // COMPAT: If the anchor point is at the start of a non-void, and the\n // focus point is inside a void node with an offset that isn't `0`, set\n // the focus offset to `0`. This is due to void nodes 's being\n // positioned off screen, resulting in the offset always being greater\n // than `0`. Since we can't know what it really should be, and since an\n // offset of `0` is less destructive because it creates a hanging\n // selection, go with `0`. (2017/09/07)\n\n if (anchorBlock && !anchorBlock.isVoid && anchorOffset == 0 && focusBlock && focusBlock.isVoid && focusOffset != 0) {\n range = range.set('focusOffset', 0);\n } // COMPAT: If the selection is at the end of a non-void inline node, and\n // there is a node after it, put it in the node after instead. This\n // standardizes the behavior, since it's indistinguishable to the user.\n\n\n if (anchorInline && !anchorInline.isVoid && anchorOffset == anchorText.text.length) {\n var block = document.getClosestBlock(anchorKey);\n var next = block.getNextText(anchorKey);\n if (next) range = range.moveAnchorTo(next.key, 0);\n }\n\n if (focusInline && !focusInline.isVoid && focusOffset == focusText.text.length) {\n var _block = document.getClosestBlock(focusKey);\n\n var _next = _block.getNextText(focusKey);\n\n if (_next) range = range.moveFocusTo(_next.key, 0);\n }\n\n range = range.normalize(document);\n change.select(range);\n }\n /**\n * Render editor.\n *\n * @param {Object} props\n * @param {Editor} editor\n * @return {Object}\n */\n\n\n function renderEditor(props, editor) {\n var handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = editor[handler];\n return obj;\n }, {});\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Content, _extends({}, handlers, {\n autoCorrect: props.autoCorrect,\n className: props.className,\n children: props.children,\n editor: editor,\n readOnly: props.readOnly,\n role: props.role,\n spellCheck: props.spellCheck,\n style: props.style,\n tabIndex: props.tabIndex,\n tagName: props.tagName\n }));\n }\n /**\n * Render node.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n\n function renderNode(props) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node;\n if (node.object != 'block' && node.object != 'inline') return;\n var Tag = node.object == 'block' ? 'div' : 'span';\n var style = {\n position: 'relative'\n };\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(Tag, _extends({}, attributes, {\n style: style\n }), children);\n }\n /**\n * Render placeholder.\n *\n * @param {Object} props\n * @return {Element}\n */\n\n\n function renderPlaceholder(props) {\n var editor = props.editor,\n node = props.node;\n if (!editor.props.placeholder) return;\n if (editor.state.isComposing) return;\n if (node.object != 'block') return;\n if (!slate__WEBPACK_IMPORTED_MODULE_7__[\"Text\"].isTextList(node.nodes)) return;\n if (node.text != '') return;\n if (editor.value.document.getBlocks().size > 1) return;\n var style = {\n pointerEvents: 'none',\n display: 'inline-block',\n width: '0',\n maxWidth: '100%',\n whiteSpace: 'nowrap',\n opacity: '0.333'\n };\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement('span', {\n contentEditable: false,\n style: style\n }, editor.props.placeholder);\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onClick: onClick,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect,\n renderEditor: renderEditor,\n renderNode: renderNode,\n renderPlaceholder: renderPlaceholder\n };\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$6 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:before');\n/**\n * The core before plugin.\n *\n * @return {Object}\n */\n\nfunction BeforePlugin() {\n var activeElement = null;\n var compositionCount = 0;\n var isComposing = false;\n var isCopying = false;\n var isDragging = false;\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n function onBeforeInput(event, change, editor) {\n if (editor.props.readOnly) return true; // COMPAT: React's `onBeforeInput` synthetic event is based on the native\n // `keypress` and `textInput` events. In browsers that support the native\n // `beforeinput` event, we instead use that event to trigger text insertion,\n // since it provides more useful information about the range being affected\n // and also preserves compatibility with iOS autocorrect, which would be\n // broken if we called `preventDefault()` on React's synthetic event here.\n // Since native `onbeforeinput` mainly benefits autocorrect and spellcheck\n // for mobile, on desktop it brings IME issue, limit its scope for now.\n\n if ((slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_ANDROID\"]) && slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"SUPPORTED_EVENTS\"].beforeinput) return true;\n debug$6('onBeforeInput', {\n event: event\n });\n }\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onBlur(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n var value = change.value;\n var relatedTarget = event.relatedTarget,\n target = event.target;\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(target); // COMPAT: If the current `activeElement` is still the previous one, this is\n // due to the window being blurred when the tab itself becomes unfocused, so\n // we want to abort early to allow to editor to stay focused when the tab\n // becomes focused again.\n\n if (activeElement == window.document.activeElement) return true; // COMPAT: The `relatedTarget` can be null when the new focus target is not\n // a \"focusable\" element (eg. a `
` without `tabindex` set).\n\n if (relatedTarget) {\n var el = Object(react_dom__WEBPACK_IMPORTED_MODULE_15__[\"findDOMNode\"])(editor); // COMPAT: The event should be ignored if the focus is returning to the\n // editor from an embedded editable element (eg. an element inside\n // a void node).\n\n if (relatedTarget == el) return true; // COMPAT: The event should be ignored if the focus is moving from the\n // editor to inside a void node's spacer element.\n\n if (relatedTarget.hasAttribute('data-slate-spacer')) return true; // COMPAT: The event should be ignored if the focus is moving to a non-\n // editable section of an element that isn't a void node (eg. a list item\n // of the check list example).\n\n var node = findNode(relatedTarget, value);\n if (el.contains(relatedTarget) && node && !node.isVoid) return true;\n }\n\n debug$6('onBlur', {\n event: event\n });\n }\n /**\n * On change.\n *\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onChange(change, editor) {\n var value = change.value; // If the value's schema isn't the editor's schema, update it. This can\n // happen on the initialization of the editor, or if the schema changes.\n // This change isn't save into history since only schema is updated.\n\n if (value.schema != editor.schema) {\n change.setValue({\n schema: editor.schema\n }, {\n save: false\n }).normalize();\n }\n\n debug$6('onChange');\n }\n /**\n * On composition end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onCompositionEnd(event, change, editor) {\n var n = compositionCount; // The `count` check here ensures that if another composition starts\n // before the timeout has closed out this one, we will abort unsetting the\n // `isComposing` flag, since a composition is still in affect.\n\n window.requestAnimationFrame(function () {\n if (compositionCount > n) return;\n isComposing = false; // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n\n if (editor.state.isComposing) {\n editor.setState({\n isComposing: false\n });\n }\n });\n debug$6('onCompositionEnd', {\n event: event\n });\n }\n /**\n * On composition start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onCompositionStart(event, change, editor) {\n isComposing = true;\n compositionCount++; // HACK: we need to re-render the editor here so that it will update its\n // placeholder in case one is currently rendered. This should be handled\n // differently ideally, in a less invasive way?\n // (apply force re-render if isComposing changes)\n\n if (!editor.state.isComposing) {\n editor.setState({\n isComposing: true\n });\n }\n\n debug$6('onCompositionStart', {\n event: event\n });\n }\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onCopy(event, change, editor) {\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n debug$6('onCopy', {\n event: event\n });\n }\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onCut(event, change, editor) {\n if (editor.props.readOnly) return true;\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n debug$6('onCut', {\n event: event\n });\n }\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragEnd(event, change, editor) {\n isDragging = false;\n debug$6('onDragEnd', {\n event: event\n });\n }\n /**\n * On drag enter.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragEnter(event, change, editor) {\n debug$6('onDragEnter', {\n event: event\n });\n }\n /**\n * On drag exit.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragExit(event, change, editor) {\n debug$6('onDragExit', {\n event: event\n });\n }\n /**\n * On drag leave.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragLeave(event, change, editor) {\n debug$6('onDragLeave', {\n event: event\n });\n }\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragOver(event, change, editor) {\n // If the target is inside a void node, and only in this case,\n // call `preventDefault` to signal that drops are allowed.\n // When the target is editable, dropping is already allowed by\n // default, and calling `preventDefault` hides the cursor.\n var node = findNode(event.target, editor.value);\n if (node.isVoid) event.preventDefault(); // COMPAT: IE won't call onDrop on contentEditables unless the\n // default dragOver is prevented:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/913982/\n // (2018/07/11)\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IE\"]) event.preventDefault(); // If a drag is already in progress, don't do this again.\n\n if (!isDragging) {\n isDragging = true; // COMPAT: IE will raise an `unspecified error` if dropEffect is\n // set. (2018/07/11)\n\n if (!slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IE\"]) {\n event.nativeEvent.dataTransfer.dropEffect = 'move';\n }\n }\n\n debug$6('onDragOver', {\n event: event\n });\n }\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDragStart(event, change, editor) {\n isDragging = true;\n debug$6('onDragStart', {\n event: event\n });\n }\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onDrop(event, change, editor) {\n // Nothing happens in read-only mode.\n if (editor.props.readOnly) return true; // Prevent default so the DOM's value isn't corrupted.\n\n event.preventDefault();\n debug$6('onDrop', {\n event: event\n });\n }\n /**\n * On focus.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onFocus(event, change, editor) {\n if (isCopying) return true;\n if (editor.props.readOnly) return true;\n var el = Object(react_dom__WEBPACK_IMPORTED_MODULE_15__[\"findDOMNode\"])(editor); // Save the new `activeElement`.\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n activeElement = window.document.activeElement; // COMPAT: If the editor has nested editable elements, the focus can go to\n // those elements. In Firefox, this must be prevented because it results in\n // issues with keyboard navigation. (2017/03/30)\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_FIREFOX\"] && event.target != el) {\n el.focus();\n return true;\n }\n\n debug$6('onFocus', {\n event: event\n });\n }\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onInput(event, change, editor) {\n if (isComposing) return true;\n if (change.value.isBlurred) return true;\n debug$6('onInput', {\n event: event\n });\n }\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onKeyDown(event, change, editor) {\n if (editor.props.readOnly) return true; // When composing, we need to prevent all hotkeys from executing while\n // typing. However, certain characters also move the selection before\n // we're able to handle it, so prevent their default behavior.\n\n if (isComposing) {\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isComposing(event)) event.preventDefault();\n return true;\n } // Certain hotkeys have native behavior in contenteditable elements which\n // will cause our value to be out of sync, so prevent them.\n\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_14__[\"default\"].isContentEditable(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_10__[\"IS_IOS\"]) {\n event.preventDefault();\n }\n\n debug$6('onKeyDown', {\n event: event\n });\n }\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onPaste(event, change, editor) {\n if (editor.props.readOnly) return true; // Prevent defaults so the DOM state isn't corrupted.\n\n event.preventDefault();\n debug$6('onPaste', {\n event: event\n });\n }\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Change} change\n * @param {Editor} editor\n */\n\n\n function onSelect(event, change, editor) {\n if (isCopying) return true;\n if (isComposing) return true;\n if (editor.props.readOnly) return true; // Save the new `activeElement`.\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_8___default()(event.target);\n activeElement = window.document.activeElement;\n debug$6('onSelect', {\n event: event\n });\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onChange: onChange,\n onCompositionEnd: onCompositionEnd,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragEnter: onDragEnter,\n onDragExit: onDragExit,\n onDragLeave: onDragLeave,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect\n };\n}\n/**\n * Noop.\n *\n * @return {Void}\n */\n\n\nfunction noop() {}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$7 = debug__WEBPACK_IMPORTED_MODULE_0___default()('slate:editor');\n/**\n * Editor.\n *\n * @type {Component}\n */\n\nvar Editor = function (_React$Component) {\n inherits(Editor, _React$Component);\n /**\n * Constructor.\n *\n * @param {Object} props\n */\n\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n function Editor(props) {\n classCallCheck(this, Editor);\n\n var _this = possibleConstructorReturn(this, (Editor.__proto__ || Object.getPrototypeOf(Editor)).call(this, props));\n\n _initialiseProps$4.call(_this);\n\n _this.state = {};\n _this.tmp = {};\n _this.tmp.updates = 0;\n _this.tmp.resolves = 0; // Resolve the plugins and create a stack and schema from them.\n\n var plugins = _this.resolvePlugins(props.plugins, props.schema);\n\n var stack = slate__WEBPACK_IMPORTED_MODULE_7__[\"Stack\"].create({\n plugins: plugins\n });\n var schema = slate__WEBPACK_IMPORTED_MODULE_7__[\"Schema\"].create({\n plugins: plugins\n });\n _this.state.schema = schema;\n _this.state.stack = stack; // Run `onChange` on the passed-in value because we need to ensure that it\n // is normalized, and queue the resulting change.\n\n var change = props.value.change();\n stack.run('onChange', change, _this);\n\n _this.queueChange(change);\n\n _this.state.value = change.value; // Create a bound event handler for each event.\n\n EVENT_HANDLERS.forEach(function (handler) {\n _this[handler] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this.onEvent.apply(_this, [handler].concat(args));\n };\n });\n return _this;\n }\n /**\n * When the `props` are updated, create a new `Stack` if necessary and run\n * `onChange` to ensure the value is normalized.\n *\n * @param {Object} props\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * When the component first mounts, flush any temporary changes,\n * and then, focus the editor if `autoFocus` is set.\n */\n\n /**\n * When the component updates, flush any temporary change.\n */\n\n /**\n * Queue a `change` object, to be able to flush it later. This is required for\n * when a change needs to be applied to the value, but because of the React\n * lifecycle we can't apply that change immediately. So we cache it here and\n * later can call `this.flushChange()` to flush it.\n *\n * @param {Change} change\n */\n\n /**\n * Flush a temporarily stored `change` object, for when a change needed to be\n * made but couldn't because of React's lifecycle.\n */\n\n /**\n * Perform a change on the editor, passing `...args` to `change.call`.\n *\n * @param {Mixed} ...args\n */\n\n /**\n * Programmatically blur the editor.\n */\n\n /**\n * Programmatically focus the editor.\n */\n\n\n createClass(Editor, [{\n key: 'render',\n\n /**\n * Render the editor.\n *\n * @return {Element}\n */\n value: function render() {\n debug$7('render', this);\n var children = this.stack.map('renderPortal', this.value, this).map(function (child, i) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_portal__WEBPACK_IMPORTED_MODULE_16___default.a, {\n key: i,\n isOpened: true\n }, child);\n });\n\n var props = _extends({}, this.props, {\n children: children\n });\n\n var tree = this.stack.render('renderEditor', props, this);\n return tree;\n }\n /**\n * Resolve an array of plugins from `plugins` and `schema` props.\n *\n * In addition to the plugins provided in props, this will initialize three\n * other plugins:\n *\n * - The top-level editor plugin, which allows for top-level handlers, etc.\n * - The two \"core\" plugins, one before all the other and one after.\n *\n * @param {Array|Void} plugins\n * @param {Schema|Object|Void} schema\n * @return {Array}\n */\n\n }, {\n key: 'schema',\n\n /**\n * Getters for exposing public properties of the editor's state.\n */\n get: function get$$1() {\n return this.state.schema;\n }\n }, {\n key: 'stack',\n get: function get$$1() {\n return this.state.stack;\n }\n }, {\n key: 'value',\n get: function get$$1() {\n return this.state.value;\n }\n /**\n * On event.\n *\n * @param {String} handler\n * @param {Event} event\n */\n\n /**\n * On change.\n *\n * @param {Change} change\n */\n\n }]);\n return Editor;\n}(react__WEBPACK_IMPORTED_MODULE_1___default.a.Component);\n/**\n * Mix in the property types for the event handlers.\n */\n\n\nEditor.propTypes = {\n autoCorrect: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n autoFocus: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n className: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n placeholder: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.any,\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.array,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n role: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.string,\n schema: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n spellCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n style: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.object,\n tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n value: slate_prop_types__WEBPACK_IMPORTED_MODULE_3__[\"default\"].value.isRequired\n};\nEditor.defaultProps = {\n autoFocus: false,\n autoCorrect: true,\n onChange: noop,\n plugins: [],\n readOnly: false,\n schema: {},\n spellCheck: true\n};\n\nvar _initialiseProps$4 = function _initialiseProps() {\n var _this2 = this;\n\n this.componentWillReceiveProps = function (props) {\n var schema = _this2.schema,\n stack = _this2.stack; // Increment the updates counter as a baseline.\n\n _this2.tmp.updates++; // If the plugins or the schema have changed, we need to re-resolve the\n // plugins, since it will result in a new stack and new validations.\n\n if (props.plugins != _this2.props.plugins || props.schema != _this2.props.schema) {\n var plugins = _this2.resolvePlugins(props.plugins, props.schema);\n\n stack = slate__WEBPACK_IMPORTED_MODULE_7__[\"Stack\"].create({\n plugins: plugins\n });\n schema = slate__WEBPACK_IMPORTED_MODULE_7__[\"Schema\"].create({\n plugins: plugins\n });\n\n _this2.setState({\n schema: schema,\n stack: stack\n }); // Increment the resolves counter.\n\n\n _this2.tmp.resolves++; // If we've resolved a few times already, and it's exactly in line with\n // the updates, then warn the user that they may be doing something wrong.\n\n if (_this2.tmp.resolves > 5 && _this2.tmp.resolves == _this2.tmp.updates) {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_6__[\"default\"].warn('A Slate is re-resolving `props.plugins` or `props.schema` on each update, which leads to poor performance. This is often due to passing in a new `schema` or `plugins` prop with each render by declaring them inline in your render function. Do not do this!');\n }\n } // Run `onChange` on the passed-in value because we need to ensure that it\n // is normalized, and queue the resulting change.\n\n\n var change = props.value.change();\n stack.run('onChange', change, _this2);\n\n _this2.queueChange(change);\n\n _this2.setState({\n value: change.value\n });\n };\n\n this.componentDidMount = function () {\n _this2.flushChange();\n\n if (_this2.props.autoFocus) {\n _this2.focus();\n }\n };\n\n this.componentDidUpdate = function () {\n _this2.flushChange();\n };\n\n this.queueChange = function (change) {\n if (change.operations.size) {\n debug$7('queueChange', {\n change: change\n });\n _this2.tmp.change = change;\n }\n };\n\n this.flushChange = function () {\n var change = _this2.tmp.change;\n\n if (change) {\n debug$7('flushChange', {\n change: change\n });\n delete _this2.tmp.change;\n\n _this2.props.onChange(change);\n }\n };\n\n this.change = function () {\n var _value$change;\n\n var change = (_value$change = _this2.value.change()).call.apply(_value$change, arguments);\n\n _this2.onChange(change);\n };\n\n this.blur = function () {\n _this2.change(function (c) {\n return c.blur();\n });\n };\n\n this.focus = function () {\n _this2.change(function (c) {\n return c.focus();\n });\n };\n\n this.onEvent = function (handler, event) {\n _this2.change(function (change) {\n _this2.stack.run(handler, event, change, _this2);\n });\n };\n\n this.onChange = function (change) {\n debug$7('onChange', {\n change: change\n });\n\n _this2.stack.run('onChange', change, _this2);\n\n var value = change.value;\n var onChange = _this2.props.onChange;\n if (value == _this2.value) return;\n onChange(change);\n };\n\n this.resolvePlugins = function (plugins, schema) {\n var beforePlugin = BeforePlugin();\n var afterPlugin = AfterPlugin();\n var editorPlugin = {\n schema: schema || {}\n };\n\n var _loop = function _loop(_prop) {\n // Skip `onChange` because the editor's `onChange` is special.\n if (_prop == 'onChange') return 'continue'; // Skip `schema` because it can't be proxied easily, so it must be\n // passed in as an argument to this function instead.\n\n if (_prop == 'schema') return 'continue'; // Define a function that will just proxies into `props`.\n\n editorPlugin[_prop] = function () {\n var _props;\n\n return _this2.props[_prop] && (_props = _this2.props)[_prop].apply(_props, arguments);\n };\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = PLUGIN_PROPS[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var _prop = _step2.value;\n\n var _ret = _loop(_prop);\n\n if (_ret === 'continue') continue;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return [beforePlugin, editorPlugin].concat(toConsumableArray(plugins || []), [afterPlugin]);\n };\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = EVENT_HANDLERS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var prop = _step.value;\n Editor.propTypes[prop] = prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func;\n }\n /**\n * Export.\n *\n * @type {Component}\n */\n\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nvar index = {\n Editor: Editor,\n cloneFragment: cloneFragment,\n findDOMNode: findDOMNode$1,\n findDOMRange: findDOMRange,\n findNode: findNode,\n findRange: findRange,\n getEventRange: getEventRange,\n getEventTransfer: getEventTransfer,\n setEventTransfer: setEventTransfer,\n AfterPlugin: AfterPlugin,\n BeforePlugin: BeforePlugin\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n\n//# sourceURL=webpack:///./node_modules/slate-react/lib/slate-react.es.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Editor\", function() { return Editor$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cloneFragment\", function() { return cloneFragment; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDOMNode\", function() { return findDOMNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findDOMRange\", function() { return findDOMRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findNode\", function() { return findNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"findRange\", function() { return findRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEventRange\", function() { return getEventRange; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"getEventTransfer\", function() { return getEventTransfer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setEventTransfer\", function() { return setEventTransfer; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ReactPlugin\", function() { return ReactPlugin; });\n/* harmony import */ var get_window__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! get-window */ \"./node_modules/get-window/index.js\");\n/* harmony import */ var get_window__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(get_window__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tiny-invariant */ \"./node_modules/tiny-invariant/dist/tiny-invariant.esm.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! slate-dev-environment */ \"./node_modules/slate-dev-environment/lib/slate-dev-environment.es.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ \"./node_modules/slate-react/node_modules/debug/src/browser.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/pick */ \"./node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var slate_base64_serializer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! slate-base64-serializer */ \"./node_modules/slate-base64-serializer/lib/slate-base64-serializer.es.js\");\n/* harmony import */ var slate_plain_serializer__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! slate-plain-serializer */ \"./node_modules/slate-plain-serializer/lib/slate-plain-serializer.es.js\");\n/* harmony import */ var slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! slate-hotkeys */ \"./node_modules/slate-hotkeys/lib/slate-hotkeys.es.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! react-dom */ \"./node_modules/react-dom/index.js\");\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! prop-types */ \"./node_modules/prop-types/index.js\");\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var slate_prop_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! slate-prop-types */ \"./node_modules/slate-prop-types/lib/slate-prop-types.es.js\");\n/* harmony import */ var react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! react-immutable-proptypes */ \"./node_modules/react-immutable-proptypes/dist/ImmutablePropTypes.js\");\n/* harmony import */ var react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_14___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_14__);\n/* harmony import */ var tiny_warning__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! tiny-warning */ \"./node_modules/slate-react/node_modules/tiny-warning/dist/tiny-warning.esm.js\");\n/* harmony import */ var selection_is_backward__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! selection-is-backward */ \"./node_modules/selection-is-backward/index.js\");\n/* harmony import */ var selection_is_backward__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(selection_is_backward__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! lodash/throttle */ \"./node_modules/lodash/throttle.js\");\n/* harmony import */ var lodash_throttle__WEBPACK_IMPORTED_MODULE_17___default = /*#__PURE__*/__webpack_require__.n(lodash_throttle__WEBPACK_IMPORTED_MODULE_17__);\n/* harmony import */ var slate_react_placeholder__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! slate-react-placeholder */ \"./node_modules/slate-react-placeholder/lib/slate-react-placeholder.es.js\");\n/* harmony import */ var memoize_one__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! memoize-one */ \"./node_modules/memoize-one/dist/memoize-one.esm.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Event handlers used by Slate plugins.\n *\n * @type {Array}\n */\n\nvar EVENT_HANDLERS = ['onBeforeInput', 'onBlur', 'onClick', 'onContextMenu', 'onCompositionEnd', 'onCompositionStart', 'onCopy', 'onCut', 'onDragEnd', 'onDragEnter', 'onDragExit', 'onDragLeave', 'onDragOver', 'onDragStart', 'onDrop', 'onInput', 'onFocus', 'onKeyDown', 'onKeyUp', 'onMouseDown', 'onMouseUp', 'onPaste', 'onSelect'];\n/**\n * Fixes a selection within the DOM when the cursor is in Slate's special\n * zero-width block. Slate handles empty blocks in a special manner and the\n * cursor can end up either before or after the non-breaking space. This\n * causes different behavior in Android and so we make sure the seleciton is\n * always before the zero-width space.\n *\n * @param {Window} window\n */\n\nfunction fixSelectionInZeroWidthBlock(window) {\n var domSelection = window.getSelection();\n var anchorNode = domSelection.anchorNode;\n var dataset = anchorNode.parentElement.dataset;\n var isZeroWidth = dataset ? dataset.slateZeroWidth === 'n' : false; // We are doing three checks to see if we need to move the cursor.\n // Is this a zero-width slate span?\n // Is the current cursor position not at the start of it?\n // Is there more than one character (i.e. the zero-width space char) in here?\n\n if (isZeroWidth && anchorNode.textContent.length === 1 && domSelection.anchorOffset !== 0) {\n var range = window.document.createRange();\n range.setStart(anchorNode, 0);\n range.setEnd(anchorNode, 0);\n domSelection.removeAllRanges();\n domSelection.addRange(range);\n }\n}\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar toConsumableArray = function toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n/**\n * Offset key parser regex.\n *\n * @type {RegExp}\n */\n\n\nvar PARSER = /^([\\w-]+)(?::(\\d+))?$/;\n/**\n * Parse an offset key `string`.\n *\n * @param {String} string\n * @return {Object}\n */\n\nfunction parse(string) {\n var matches = PARSER.exec(string);\n\n if (!matches) {\n throw new Error(\"Invalid offset key string \\\"\" + string + \"\\\".\");\n }\n\n var _matches = slicedToArray(matches, 3),\n original = _matches[0],\n key = _matches[1],\n index = _matches[2]; // eslint-disable-line no-unused-vars\n\n\n return {\n key: key,\n index: parseInt(index, 10)\n };\n}\n/**\n * Stringify an offset key `object`.\n *\n * @param {Object} object\n * @property {String} key\n * @property {Number} index\n * @return {String}\n */\n\n\nfunction stringify(object) {\n return object.key + \":\" + object.index;\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar OffsetKey = {\n parse: parse,\n stringify: stringify\n};\n/**\n * Constants.\n *\n * @type {String}\n */\n\nvar ZERO_WIDTH_ATTRIBUTE = 'data-slate-zero-width';\nvar ZERO_WIDTH_SELECTOR = '[' + ZERO_WIDTH_ATTRIBUTE + ']';\nvar OFFSET_KEY_ATTRIBUTE = 'data-offset-key';\nvar RANGE_SELECTOR = '[' + OFFSET_KEY_ATTRIBUTE + ']';\nvar TEXT_SELECTOR = '[data-key]';\nvar VOID_SELECTOR = '[data-slate-void]';\n/**\n * Find a Slate point from a DOM selection's `nativeNode` and `nativeOffset`.\n *\n * @param {Element} nativeNode\n * @param {Number} nativeOffset\n * @param {Editor} editor\n * @return {Point}\n */\n\nfunction findPoint(nativeNode, nativeOffset, editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!slate__WEBPACK_IMPORTED_MODULE_2__[\"Value\"].isValue(editor), 'As of Slate 0.42.0, the `findPoint` utility takes an `editor` instead of a `value`.');\n\n var _normalizeNodeAndOffs = normalizeNodeAndOffset(nativeNode, nativeOffset),\n nearestNode = _normalizeNodeAndOffs.node,\n nearestOffset = _normalizeNodeAndOffs.offset;\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(nativeNode);\n var parentNode = nearestNode.parentNode;\n var rangeNode = parentNode.closest(RANGE_SELECTOR);\n var offset = void 0;\n var node = void 0; // Calculate how far into the text node the `nearestNode` is, so that we can\n // determine what the offset relative to the text node is.\n\n if (rangeNode) {\n var range = window.document.createRange();\n var textNode = rangeNode.closest(TEXT_SELECTOR);\n range.setStart(textNode, 0);\n range.setEnd(nearestNode, nearestOffset);\n node = textNode; // COMPAT: Edge has a bug where Range.prototype.toString() will convert \\n\n // into \\r\\n. The bug causes a loop when slate-react attempts to reposition\n // its cursor to match the native position. Use textContent.length instead.\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/10291116/\n\n offset = range.cloneContents().textContent.length;\n } else {\n // For void nodes, the element with the offset key will be a cousin, not an\n // ancestor, so find it by going down from the nearest void parent.\n var voidNode = parentNode.closest(VOID_SELECTOR);\n if (!voidNode) return null;\n rangeNode = voidNode.querySelector(RANGE_SELECTOR);\n if (!rangeNode) return null;\n node = rangeNode;\n offset = node.textContent.length;\n } // COMPAT: If the parent node is a Slate zero-width space, this is because the\n // text node should have no characters. However, during IME composition the\n // ASCII characters will be prepended to the zero-width space, so subtract 1\n // from the offset to account for the zero-width space character.\n\n\n if (offset === node.textContent.length && parentNode.hasAttribute(ZERO_WIDTH_ATTRIBUTE)) {\n offset--;\n } // Get the string value of the offset key attribute.\n\n\n var offsetKey = rangeNode.getAttribute(OFFSET_KEY_ATTRIBUTE);\n if (!offsetKey) return null;\n\n var _OffsetKey$parse = OffsetKey.parse(offsetKey),\n key = _OffsetKey$parse.key; // COMPAT: If someone is clicking from one Slate editor into another, the\n // select event fires twice, once for the old editor's `element` first, and\n // then afterwards for the correct `element`. (2017/03/03)\n\n\n var value = editor.value;\n if (!value.document.hasDescendant(key)) return null;\n var point = value.document.createPoint({\n key: key,\n offset: offset\n });\n return point;\n}\n/**\n * From a DOM selection's `node` and `offset`, normalize so that it always\n * refers to a text node.\n *\n * @param {Element} node\n * @param {Number} offset\n * @return {Object}\n */\n\n\nfunction normalizeNodeAndOffset(node, offset) {\n // If it's an element node, its offset refers to the index of its children\n // including comment nodes, so try to find the right text child node.\n if (node.nodeType === 1 && node.childNodes.length) {\n var isLast = offset === node.childNodes.length;\n var direction = isLast ? 'backward' : 'forward';\n var index = isLast ? offset - 1 : offset;\n node = getEditableChild(node, index, direction); // If the node has children, traverse until we have a leaf node. Leaf nodes\n // can be either text nodes, or other void DOM nodes.\n\n while (node.nodeType === 1 && node.childNodes.length) {\n var i = isLast ? node.childNodes.length - 1 : 0;\n node = getEditableChild(node, i, direction);\n } // Determine the new offset inside the text node.\n\n\n offset = isLast ? node.textContent.length : 0;\n } // Return the node and offset.\n\n\n return {\n node: node,\n offset: offset\n };\n}\n/**\n * Get the nearest editable child at `index` in a `parent`, preferring\n * `direction`.\n *\n * @param {Element} parent\n * @param {Number} index\n * @param {String} direction ('forward' or 'backward')\n * @return {Element|Null}\n */\n\n\nfunction getEditableChild(parent, index, direction) {\n var childNodes = parent.childNodes;\n var child = childNodes[index];\n var i = index;\n var triedForward = false;\n var triedBackward = false; // While the child is a comment node, or an element node with no children,\n // keep iterating to find a sibling non-void, non-comment node.\n\n while (child.nodeType === 8 || child.nodeType === 1 && child.childNodes.length === 0 || child.nodeType === 1 && child.getAttribute('contenteditable') === 'false') {\n if (triedForward && triedBackward) break;\n\n if (i >= childNodes.length) {\n triedForward = true;\n i = index - 1;\n direction = 'backward';\n continue;\n }\n\n if (i < 0) {\n triedBackward = true;\n i = index + 1;\n direction = 'forward';\n continue;\n }\n\n child = childNodes[i];\n if (direction === 'forward') i++;\n if (direction === 'backward') i--;\n }\n\n return child || null;\n}\n/**\n * Find the DOM node for a `key`.\n *\n * @param {String|Node} key\n * @param {Window} win (optional)\n * @return {Element}\n */\n\n\nfunction findDOMNode(key) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n\n if (slate__WEBPACK_IMPORTED_MODULE_2__[\"Node\"].isNode(key)) {\n key = key.key;\n }\n\n var el = win.document.querySelector('[data-key=\"' + key + '\"]');\n\n if (!el) {\n throw new Error('Unable to find a DOM node for \"' + key + '\". This is often because of forgetting to add `props.attributes` to a custom component.');\n }\n\n return el;\n}\n/**\n * Find a native DOM selection point from a Slate `point`.\n *\n * @param {Point} point\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\n\nfunction findDOMPoint(point) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n var el = findDOMNode(point.key, win);\n var start = 0; // For each leaf, we need to isolate its content, which means filtering to its\n // direct text and zero-width spans. (We have to filter out any other siblings\n // that may have been rendered alongside them.)\n\n var texts = Array.from(el.querySelectorAll('[data-slate-content], [data-slate-zero-width]'));\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = texts[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var text = _step.value;\n var node = text.childNodes[0];\n var domLength = node.textContent.length;\n var slateLength = domLength;\n\n if (text.hasAttribute('data-slate-length')) {\n slateLength = parseInt(text.getAttribute('data-slate-length'), 10);\n }\n\n var end = start + slateLength;\n\n if (point.offset <= end) {\n var offset = Math.min(domLength, Math.max(0, point.offset - start));\n return {\n node: node,\n offset: offset\n };\n }\n\n start = end;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return null;\n}\n/**\n * Find a Slate range from a DOM `native` selection.\n *\n * @param {Selection} native\n * @param {Editor} editor\n * @return {Range}\n */\n\n\nfunction findRange(_native2, editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!slate__WEBPACK_IMPORTED_MODULE_2__[\"Value\"].isValue(editor), 'As of Slate 0.42.0, the `findNode` utility takes an `editor` instead of a `value`.');\n var el = _native2.anchorNode || _native2.startContainer;\n if (!el) return null;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(el); // If the `native` object is a DOM `Range` or `StaticRange` object, change it\n // into something that looks like a DOM `Selection` instead.\n\n if (_native2 instanceof window.Range || window.StaticRange && _native2 instanceof window.StaticRange) {\n _native2 = {\n anchorNode: _native2.startContainer,\n anchorOffset: _native2.startOffset,\n focusNode: _native2.endContainer,\n focusOffset: _native2.endOffset\n };\n }\n\n var _native = _native2,\n anchorNode = _native.anchorNode,\n anchorOffset = _native.anchorOffset,\n focusNode = _native.focusNode,\n focusOffset = _native.focusOffset,\n isCollapsed = _native.isCollapsed;\n var value = editor.value;\n var anchor = findPoint(anchorNode, anchorOffset, editor);\n var focus = isCollapsed ? anchor : findPoint(focusNode, focusOffset, editor);\n if (!anchor || !focus) return null; // COMPAT: ??? The Edge browser seems to have a case where if you select the\n // last word of a span, it sets the endContainer to the containing span.\n // `selection-is-backward` doesn't handle this case.\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IE\"] || slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_EDGE\"]) {\n var domAnchor = findDOMPoint(anchor);\n var domFocus = findDOMPoint(focus);\n _native2 = {\n anchorNode: domAnchor.node,\n anchorOffset: domAnchor.offset,\n focusNode: domFocus.node,\n focusOffset: domFocus.offset\n };\n }\n\n var document = value.document;\n var range = document.createRange({\n anchor: anchor,\n focus: focus\n });\n return range;\n}\n\nfunction getSelectionFromDOM(window, editor, domSelection) {\n var value = editor.value;\n var document = value.document; // If there are no ranges, the editor was blurred natively.\n\n if (!domSelection.rangeCount) {\n editor.blur();\n return;\n } // Otherwise, determine the Slate selection from the native one.\n\n\n var range = findRange(domSelection, editor);\n\n if (!range) {\n return;\n }\n\n var _range = range,\n anchor = _range.anchor,\n focus = _range.focus;\n var anchorText = document.getNode(anchor.key);\n var focusText = document.getNode(focus.key);\n var anchorInline = document.getClosestInline(anchor.key);\n var focusInline = document.getClosestInline(focus.key);\n var focusBlock = document.getClosestBlock(focus.key);\n var anchorBlock = document.getClosestBlock(anchor.key); // COMPAT: If the anchor point is at the start of a non-void, and the\n // focus point is inside a void node with an offset that isn't `0`, set\n // the focus offset to `0`. This is due to void nodes 's being\n // positioned off screen, resulting in the offset always being greater\n // than `0`. Since we can't know what it really should be, and since an\n // offset of `0` is less destructive because it creates a hanging\n // selection, go with `0`. (2017/09/07)\n\n if (anchorBlock && !editor.isVoid(anchorBlock) && anchor.offset === 0 && focusBlock && editor.isVoid(focusBlock) && focus.offset !== 0) {\n range = range.setFocus(focus.setOffset(0));\n } // COMPAT: If the selection is at the end of a non-void inline node, and\n // there is a node after it, put it in the node after instead. This\n // standardizes the behavior, since it's indistinguishable to the user.\n\n\n if (anchorInline && !editor.isVoid(anchorInline) && anchor.offset === anchorText.text.length) {\n var block = document.getClosestBlock(anchor.key);\n var nextText = block.getNextText(anchor.key);\n if (nextText) range = range.moveAnchorTo(nextText.key, 0);\n }\n\n if (focusInline && !editor.isVoid(focusInline) && focus.offset === focusText.text.length) {\n var _block = document.getClosestBlock(focus.key);\n\n var _nextText = _block.getNextText(focus.key);\n\n if (_nextText) range = range.moveFocusTo(_nextText.key, 0);\n }\n\n var selection = document.createSelection(range);\n selection = selection.setIsFocused(true); // Preserve active marks from the current selection.\n // They will be cleared by `editor.select` if the selection actually moved.\n\n selection = selection.set('marks', value.selection.marks);\n return selection;\n}\n/**\n * Looks at the DOM and generates the equivalent Slate Selection.\n *\n * @param {Window} window\n * @param {Editor} editor\n * @param {Selection} domSelection - The DOM's selection Object\n */\n\n\nfunction setSelectionFromDOM(window, editor, domSelection) {\n var selection = getSelectionFromDOM(window, editor, domSelection);\n editor.select(selection);\n}\n/**\n * setTextFromDomNode lets us take a domNode and reconcile the text in the\n * editor's Document such that it reflects the text in the DOM. This is the\n * opposite of what the Editor usually does which takes the Editor's Document\n * and React modifies the DOM to match. The purpose of this method is for\n * composition changes where we don't know what changes the user made by\n * looking at events. Instead we wait until the DOM is in a safe state, we\n * read from it, and update the Editor's Document.\n *\n * @param {Window} window\n * @param {Editor} editor\n * @param {Node} domNode\n */\n\n\nfunction setTextFromDomNode(window, editor, domNode) {\n var point = findPoint(domNode, 0, editor);\n if (!point) return; // Get the text node and leaf in question.\n\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var node = document.getDescendant(point.key);\n var block = document.getClosestBlock(node.key);\n var leaves = node.getLeaves();\n var lastText = block.getLastText();\n var lastLeaf = leaves.last();\n var start = 0;\n var end = 0;\n var leaf = leaves.find(function (r) {\n start = end;\n end += r.text.length;\n if (end > point.offset) return true;\n }) || lastLeaf; // Get the text information.\n\n var text = leaf.text;\n var textContent = domNode.textContent;\n var isLastText = node === lastText;\n var isLastLeaf = leaf === lastLeaf;\n var lastChar = textContent.charAt(textContent.length - 1); // COMPAT: If this is the last leaf, and the DOM text ends in a new line,\n // we will have added another new line in 's render method to account\n // for browsers collapsing a single trailing new lines, so remove it.\n\n if (isLastText && isLastLeaf && lastChar === '\\n') {\n textContent = textContent.slice(0, -1);\n } // If the text is no different, abort.\n\n\n if (textContent === text) return; // Determine what the selection should be after changing the text.\n // const delta = textContent.length - text.length\n // const corrected = selection.moveToEnd().moveForward(delta)\n\n var entire = selection.moveAnchorTo(point.key, start).moveFocusTo(point.key, end);\n entire = document.resolveRange(entire); // Change the current value to have the leaf's text replaced.\n\n editor.insertTextAtRange(entire, textContent, leaf.marks);\n}\n/**\n * In Android API 26 and 27 we can tell if the input key was pressed by\n * waiting for the `beforeInput` event and seeing that the last character\n * of its `data` property is char code `10`.\n *\n * Note that at this point it is too late to prevent the event from affecting\n * the DOM so we use other methods to clean the DOM up after we have detected\n * the input.\n *\n * @param {String} data\n * @return {Boolean}\n */\n\n\nfunction isInputDataEnter(data) {\n if (data == null) return false;\n var lastChar = data[data.length - 1];\n var charCode = lastChar.charCodeAt(0);\n return charCode === 10;\n}\n/**\n * In Android sometimes the only way to tell what the user is trying to do\n * is to look at an event's `data` property and see if the last characters\n * matches a character. This method helps us make that determination.\n *\n * @param {String} data\n * @param {[String]} chars\n * @return {Boolean}\n */\n\n\nfunction isInputDataLastChar(data, chars) {\n if (!Array.isArray(chars)) throw new Error(\"chars must be an array of one character strings\");\n if (data == null) return false;\n var lastChar = data[data.length - 1];\n return chars.includes(lastChar);\n}\n/**\n * Is the given node a text node?\n *\n * @param {node} node\n * @param {Window} window\n * @return {Boolean}\n */\n\n\nfunction isTextNode(node, window) {\n return node.nodeType === window.Node.TEXT_NODE;\n}\n/**\n * Takes a node and returns a snapshot of the node.\n *\n * @param {node} node\n * @param {Window} window\n * @return {object} element snapshot\n */\n\n\nfunction getElementSnapshot(node, window) {\n var snapshot = {};\n snapshot.node = node;\n\n if (isTextNode(node, window)) {\n snapshot.text = node.textContent;\n }\n\n snapshot.children = Array.from(node.childNodes).map(function (childNode) {\n return getElementSnapshot(childNode, window);\n });\n return snapshot;\n}\n/**\n * Takes an array of elements and returns a snapshot\n *\n * @param {elements[]} elements\n * @param {Window} window\n * @return {object} snapshot\n */\n\n\nfunction getSnapshot(elements, window) {\n if (!elements.length) throw new Error('elements must be an Array');\n var lastElement = elements[elements.length - 1];\n var snapshot = {\n elements: elements.map(function (element) {\n return getElementSnapshot(element, window);\n }),\n parent: lastElement.parentElement,\n next: lastElement.nextElementSibling\n };\n return snapshot;\n}\n/**\n * Takes an element snapshot and applies it to the element in the DOM.\n * Basically, it fixes the DOM to the point in time that the snapshot was\n * taken. This will put the DOM back in sync with React.\n *\n * @param {Object} snapshot\n * @param {Window} window\n */\n\n\nfunction applyElementSnapshot(snapshot, window) {\n var el = snapshot.node;\n\n if (isTextNode(el, window)) {\n // Update text if it is different\n if (el.textContent !== snapshot.text) {\n el.textContent = snapshot.text;\n }\n }\n\n snapshot.children.forEach(function (childSnapshot) {\n applyElementSnapshot(childSnapshot, window);\n el.appendChild(childSnapshot.node);\n }); // remove children that shouldn't be there\n\n var snapLength = snapshot.children.length;\n\n while (el.childNodes.length > snapLength) {\n el.removeChild(el.childNodes[0]);\n } // remove any clones from the DOM. This can happen when a block is split.\n\n\n var dataset = el.dataset;\n if (!dataset) return; // if there's no dataset, don't remove it\n\n var key = dataset.key;\n if (!key) return; // if there's no `data-key`, don't remove it\n\n var dups = new window.Set(Array.from(window.document.querySelectorAll('[data-key=\\'' + key + '\\']')));\n dups.delete(el);\n dups.forEach(function (dup) {\n return dup.parentElement.removeChild(dup);\n });\n}\n/**\n * Takes a snapshot and applies it to the DOM. Rearranges both the contents\n * of the elements in the snapshot as well as putting the elements back into\n * position relative to each other and also makes sure the last element is\n * before the same element as it was when the snapshot was taken.\n *\n * @param {snapshot} snapshot\n * @param {Window} window\n */\n\n\nfunction applySnapshot(snapshot, window) {\n var elements = snapshot.elements,\n next = snapshot.next,\n parent = snapshot.parent;\n elements.forEach(function (element) {\n return applyElementSnapshot(element, window);\n });\n var lastElement = elements[elements.length - 1].node;\n\n if (snapshot.next) {\n parent.insertBefore(lastElement, next);\n } else {\n parent.appendChild(lastElement);\n }\n\n var prevElement = lastElement;\n\n for (var i = elements.length - 2; i >= 0; i--) {\n var element = elements[i].node;\n parent.insertBefore(element, prevElement);\n prevElement = element;\n }\n}\n/**\n * A snapshot of one or more elements.\n */\n\n\nvar ElementSnapshot = function () {\n /**\n * constructor\n * @param {elements[]} elements - array of element to snapshot. Must be in order.\n * @param {object} data - any arbitrary data you want to store with the snapshot\n */\n function ElementSnapshot(elements, data) {\n classCallCheck(this, ElementSnapshot);\n this.window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(elements[0]);\n this.snapshot = getSnapshot(elements, this.window);\n this.data = data;\n }\n /**\n * apply the current snapshot to the DOM.\n */\n\n\n createClass(ElementSnapshot, [{\n key: 'apply',\n value: function apply() {\n applySnapshot(this.snapshot, this.window);\n }\n /**\n * get the data you passed into the constructor.\n *\n * @return {object} data\n */\n\n }, {\n key: 'getData',\n value: function getData() {\n return this.data;\n }\n }]);\n return ElementSnapshot;\n}();\n/**\n * Returns the closest element that matches the selector.\n * Unlike the native `Element.closest` method, this doesn't require the\n * starting node to be an Element.\n *\n * @param {Node} node to start at\n * @param {String} css selector to match\n * @return {Element} the closest matching element\n */\n\n\nfunction closest(node, selector) {\n var win = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : window;\n\n if (node.nodeType === win.Node.TEXT_NODE) {\n node = node.parentNode;\n }\n\n return node.closest(selector);\n}\n/**\n * A DomSnapshot remembers the state of elements at a given point in time\n * and also remembers the state of the Editor at that time as well.\n * The state can be applied to the DOM at a time in the future.\n */\n\n\nvar DomSnapshot = function () {\n /**\n * Constructor.\n *\n * @param {Window} window\n * @param {Editor} editor\n * @param {Boolean} options.before - should we remember the element before the one passed in\n */\n function DomSnapshot(window, editor) {\n var _ref = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {},\n _ref$before = _ref.before,\n before = _ref$before === undefined ? false : _ref$before;\n\n classCallCheck(this, DomSnapshot);\n var domSelection = window.getSelection();\n var anchorNode = domSelection.anchorNode;\n var subrootEl = closest(anchorNode, '[data-slate-editor] > *');\n var elements = [subrootEl]; // The before option is for when we need to take a snapshot of the current\n // subroot and the element before when the user hits the backspace key.\n\n if (before) {\n var previousElementSibling = subrootEl.previousElementSibling;\n\n if (previousElementSibling) {\n elements.unshift(previousElementSibling);\n }\n }\n\n this.snapshot = new ElementSnapshot(elements);\n this.selection = getSelectionFromDOM(window, editor, domSelection);\n }\n /**\n * Apply the snapshot to the DOM and set the selection in the Editor.\n *\n * @param {Editor} editor\n */\n\n\n createClass(DomSnapshot, [{\n key: 'apply',\n value: function apply(editor) {\n var snapshot = this.snapshot,\n selection = this.selection;\n snapshot.apply();\n editor.moveTo(selection.anchor.key, selection.anchor.offset);\n }\n }]);\n return DomSnapshot;\n}();\n/**\n * A function that does nothing\n * @return {Function}\n */\n\n\nfunction noop() {}\n/**\n * Creates an executor like a `resolver` or a `deleter` that handles\n * delayed execution of a method using a `requestAnimationFrame` or `setTimeout`.\n *\n * Unlike a `requestAnimationFrame`, after a method is cancelled, it can be\n * resumed. You can also optionally add a `timeout` after which time the\n * executor is automatically cancelled.\n */\n\n\nvar Executor =\n/**\n * Executor\n * @param {window} window\n * @param {Function} fn - the function to execute when done\n * @param {Object} options\n */\nfunction Executor(window, fn) {\n var _this = this;\n\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n classCallCheck(this, Executor);\n\n this.__call__ = function () {\n // I don't clear the timeout since it will be noop'ed anyways. Less code.\n _this.fn();\n\n _this.preventFurtherCalls(); // Ensure you can only call the function once\n\n };\n\n this.preventFurtherCalls = function () {\n _this.fn = noop;\n };\n\n this.resume = function (ms) {\n // in case resume is called more than once, we don't want old timers\n // from executing because the `timeoutId` or `callbackId` is overwritten.\n _this.cancel();\n\n if (ms) {\n _this.mode = 'timeout';\n _this.timeoutId = _this.window.setTimeout(_this.__call__, ms);\n } else {\n _this.mode = 'animationFrame';\n _this.callbackId = _this.window.requestAnimationFrame(_this.__call__);\n }\n };\n\n this.cancel = function () {\n if (_this.mode === 'timeout') {\n _this.window.clearTimeout(_this.timeoutId);\n } else {\n _this.window.cancelAnimationFrame(_this.callbackId);\n }\n\n if (_this.onCancel) _this.onCancel();\n };\n\n this.__setTimeout__ = function (timeout) {\n if (timeout == null) return;\n\n _this.window.setTimeout(function () {\n _this.cancel();\n\n _this.preventFurtherCalls();\n }, timeout);\n };\n\n this.fn = fn;\n this.window = window;\n this.resume();\n this.onCancel = options.onCancel;\n\n this.__setTimeout__(options.timeout);\n};\n\nvar debug = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:android');\ndebug.reconcile = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:reconcile');\ndebug('ANDROID_API_VERSION', {\n ANDROID_API_VERSION: slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"]\n});\n/**\n * Define variables related to composition state.\n */\n\nvar NONE = 0;\nvar COMPOSING = 1;\n\nfunction AndroidPlugin() {\n /**\n * The current state of composition.\n *\n * @type {NONE|COMPOSING|WAITING}\n */\n var status = NONE;\n /**\n * The set of nodes that we need to process when we next reconcile.\n * Usually this is soon after the `onCompositionEnd` event.\n *\n * @type {Set} set containing Node objects\n */\n\n var nodes = new window.Set();\n /**\n * Keep a snapshot after a composition end for API 26/27. If a `beforeInput`\n * gets called with data that ends in an ENTER then we need to use this\n * snapshot to revert the DOM so that React doesn't get out of sync with the\n * DOM. We also need to cancel the `reconcile` operation as it interferes in\n * certain scenarios like hitting 'enter' at the end of a word.\n *\n * @type {DomSnapshot} [compositionEndSnapshot]\n \n */\n\n var compositionEndSnapshot = null;\n /**\n * When there is a `compositionEnd` we ened to reconcile Slate's Document\n * with the DOM. The `reconciler` is an instance of `Executor` that does\n * this for us. It is created on every `compositionEnd` and executes on the\n * next `requestAnimationFrame`. The `Executor` can be cancelled and resumed\n * which some methods do.\n *\n * @type {Executor}\n */\n\n var reconciler = null;\n /**\n * A snapshot that gets taken when there is a `keydown` event in API26/27.\n * If an `input` gets called with `inputType` of `deleteContentBackward`\n * we need to undo the delete that Android does to keep React in sync with\n * the DOM.\n *\n * @type {DomSnapshot}\n */\n\n var keyDownSnapshot = null;\n /**\n * The deleter is an instace of `Executor` that will execute a delete\n * operation on the next `requestAnimationFrame`. It has to wait because\n * we need Android to finish all of its DOM operations to do with deletion\n * before we revert them to a Snapshot. After reverting, we then execute\n * Slate's version of delete.\n *\n * @type {Executor}\n */\n\n var deleter = null;\n /**\n * Because Slate implements its own event handler for `beforeInput` in\n * addition to React's version, we actually get two. If we cancel the\n * first native version, the React one will still fire. We set this to\n * `true` if we don't want that to happen. Remember that when we prevent it,\n * we need to tell React to `preventDefault` so the event doesn't continue\n * through React's event system.\n *\n * type {Boolean}\n */\n\n var preventNextBeforeInput = false;\n /**\n * When a composition ends, in some API versions we may need to know what we\n * have learned so far about the composition and what we want to do because of\n * some actions that may come later.\n *\n * For example in API 26/27, if we get a `beforeInput` that tells us that the\n * input was a `.`, then we want the reconcile to happen even if there are\n * `onInput:delete` events that follow. In this case, we would set\n * `compositionEndAction` to `period`. During the `onInput` we would check if\n * the `compositionEndAction` says `period` and if so we would not start the\n * `delete` action.\n *\n * @type {(String|null)}\n */\n\n var compositionEndAction = null;\n /**\n * Looks at the `nodes` we have collected, usually the things we have edited\n * during the course of a composition, and then updates Slate's internal\n * Document based on the text values in these DOM nodes and also updates\n * Slate's Selection based on the current cursor position in the Editor.\n *\n * @param {Window} window\n * @param {Editor} editor\n * @param {String} options.from - where reconcile was called from for debug\n */\n\n function reconcile(window, editor, _ref) {\n var from = _ref.from;\n debug.reconcile({\n from: from\n });\n var domSelection = window.getSelection();\n nodes.forEach(function (node) {\n setTextFromDomNode(window, editor, node);\n });\n setSelectionFromDOM(window, editor, domSelection);\n nodes.clear();\n }\n /**\n * On before input.\n *\n * Check `components/content` because some versions of Android attach a\n * native `beforeinput` event on the Editor. In this case, you might need\n * to distinguish whether the event coming through is the native or React\n * version of the event. Also, if you cancel the native version that does\n * not necessarily mean that the React version is cancelled.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onBeforeInput(event, editor, next) {\n var isNative = !event.nativeEvent;\n debug('onBeforeInput', {\n isNative: isNative,\n event: event,\n status: status,\n e: lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(event, ['data', 'inputType', 'isComposing', 'nativeEvent'])\n });\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n\n if (preventNextBeforeInput) {\n event.preventDefault();\n preventNextBeforeInput = false;\n return;\n }\n\n switch (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"]) {\n case 25:\n // prevent onBeforeInput to allow selecting an alternate suggest to\n // work.\n break;\n\n case 26:\n case 27:\n if (deleter) {\n deleter.cancel();\n reconciler.resume();\n } // This analyses Android's native `beforeInput` which Slate adds\n // on in the `Content` component. It only fires if the cursor is at\n // the end of a block. Otherwise, the code below checks.\n\n\n if (isNative) {\n if (event.inputType === 'insertParagraph' || event.inputType === 'insertLineBreak') {\n debug('onBeforeInput:enter:native', {});\n var domSelection = window.getSelection();\n var selection = getSelectionFromDOM(window, editor, domSelection);\n preventNextBeforeInput = true;\n event.preventDefault();\n editor.moveTo(selection.anchor.key, selection.anchor.offset);\n editor.splitBlock();\n }\n } else {\n if (isInputDataLastChar(event.data, ['.'])) {\n debug('onBeforeInput:period');\n reconciler.cancel();\n compositionEndAction = 'period';\n return;\n } // This looks at the beforeInput event's data property and sees if it\n // ends in a linefeed which is character code 10. This appears to be\n // the only way to detect that enter has been pressed except at end\n // of line where it doesn't work.\n\n\n var isEnter = isInputDataEnter(event.data);\n\n if (isEnter) {\n if (reconciler) reconciler.cancel();\n window.requestAnimationFrame(function () {\n debug('onBeforeInput:enter:react', {});\n compositionEndSnapshot.apply(editor);\n editor.splitBlock();\n });\n }\n }\n\n break;\n\n case 28:\n // If a `beforeInput` event fires after an `input:deleteContentBackward`\n // event, it appears to be a good indicator that it is some sort of\n // special combined Android event. If this is the case, then we don't\n // want to have a deletion to happen, we just want to wait until Android\n // has done its thing and then at the end we just want to reconcile.\n if (deleter) {\n deleter.cancel();\n reconciler.resume();\n }\n\n break;\n\n default:\n if (status !== COMPOSING) next();\n }\n }\n /**\n * On Composition end. By default, when a `compositionEnd` event happens,\n * we start a reconciler. The reconciler will update Slate's Document using\n * the DOM as the source of truth. In some cases, the reconciler needs to\n * be cancelled and can also be resumed. For example, when a delete\n * immediately followed a `compositionEnd`, we don't want to reconcile.\n * Instead, we want the `delete` to take precedence.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCompositionEnd(event, editor, next) {\n debug('onCompositionEnd', {\n event: event\n });\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var domSelection = window.getSelection();\n var anchorNode = domSelection.anchorNode;\n\n switch (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"]) {\n case 26:\n case 27:\n compositionEndSnapshot = new DomSnapshot(window, editor); // fixes a bug in Android API 26 & 27 where a `compositionEnd` is triggered\n // without the corresponding `compositionStart` event when clicking a\n // suggestion.\n //\n // If we don't add this, the `onBeforeInput` is triggered and passes\n // through to the `before` plugin.\n\n status = COMPOSING;\n break;\n }\n\n compositionEndAction = 'reconcile';\n nodes.add(anchorNode);\n reconciler = new Executor(window, function () {\n status = NONE;\n reconcile(window, editor, {\n from: 'onCompositionEnd:reconciler'\n });\n compositionEndAction = null;\n });\n }\n /**\n * On composition start.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCompositionStart(event, editor, next) {\n debug('onCompositionStart', {\n event: event\n });\n status = COMPOSING;\n nodes.clear();\n }\n /**\n * On composition update.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCompositionUpdate(event, editor, next) {\n debug('onCompositionUpdate', {\n event: event\n });\n }\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onInput(event, editor, next) {\n debug('onInput', {\n event: event,\n status: status,\n e: lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(event, ['data', 'nativeEvent', 'inputType', 'isComposing'])\n });\n\n switch (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"]) {\n case 24:\n case 25:\n break;\n\n case 26:\n case 27:\n case 28:\n var nativeEvent = event.nativeEvent;\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"] === 28) {\n // NOTE API 28:\n // When a user hits space and then backspace in `middle` we end up\n // with `midle`.\n //\n // This is because when the user hits space, the composition is not\n // ended because `compositionEnd` is not called yet. When backspace is\n // hit, the `compositionEnd` is called. We need to revert the DOM but\n // the reconciler has not had a chance to run from the\n // `compositionEnd` because it is set to run on the next\n // `requestAnimationFrame`. When the backspace is carried out on the\n // Slate Value, Slate doesn't know about the space yet so the\n // backspace is carried out without the space cuasing us to lose a\n // character.\n //\n // This fix forces Android to reconcile immediately after hitting\n // the space.\n //\n // NOTE API 27:\n // It is confirmed that this bug does not present itself on API27.\n // A space fires a `compositionEnd` (as well as other events including\n // an input that is a delete) so the reconciliation happens.\n //\n if (nativeEvent.inputType === 'insertText' && nativeEvent.data === ' ') {\n if (reconciler) reconciler.cancel();\n if (deleter) deleter.cancel();\n reconcile(window, editor, {\n from: 'onInput:space'\n });\n return;\n }\n }\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"] === 26 || slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"] === 27) {\n if (compositionEndAction === 'period') {\n debug('onInput:period:abort'); // This means that there was a `beforeInput` that indicated the\n // period was pressed. When a period is pressed, you get a bunch\n // of delete actions mixed in. We want to ignore those. At this\n // point, we add the current node to the list of things we need to\n // resolve at the next compositionEnd. We know that a new\n // composition will start right after this event so it is safe to\n // do this.\n\n var _window$getSelection = window.getSelection(),\n anchorNode = _window$getSelection.anchorNode;\n\n nodes.add(anchorNode);\n return;\n }\n }\n\n if (nativeEvent.inputType === 'deleteContentBackward') {\n debug('onInput:delete', {\n keyDownSnapshot: keyDownSnapshot\n });\n\n var _window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n\n if (reconciler) reconciler.cancel();\n if (deleter) deleter.cancel();\n deleter = new Executor(_window, function () {\n debug('onInput:delete:callback', {\n keyDownSnapshot: keyDownSnapshot\n });\n keyDownSnapshot.apply(editor);\n editor.deleteBackward();\n deleter = null;\n }, {\n onCancel: function onCancel() {\n deleter = null;\n }\n });\n return;\n }\n\n if (status === COMPOSING) {\n var _window$getSelection2 = window.getSelection(),\n _anchorNode = _window$getSelection2.anchorNode;\n\n nodes.add(_anchorNode);\n return;\n } // Some keys like '.' are input without compositions. This happens\n // in API28. It might be happening in API 27 as well. Check by typing\n // `It me. No.` On a blank line.\n\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"] === 28) {\n debug('onInput:fallback');\n\n var _window$getSelection3 = window.getSelection(),\n _anchorNode2 = _window$getSelection3.anchorNode;\n\n nodes.add(_anchorNode2);\n window.requestAnimationFrame(function () {\n debug('onInput:fallback:callback');\n reconcile(window, editor, {\n from: 'onInput:fallback'\n });\n });\n return;\n }\n\n break;\n\n default:\n if (status === COMPOSING) return;\n next();\n }\n }\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onKeyDown(event, editor, next) {\n debug('onKeyDown', {\n event: event,\n status: status,\n e: lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(event, ['char', 'charCode', 'code', 'key', 'keyCode', 'keyIdentifier', 'keyLocation', 'location', 'nativeEvent', 'which'])\n });\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n\n switch (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"]) {\n // 1. We want to allow enter keydown to allows go through\n // 2. We want to deny keydown, I think, when it fires before the composition\n // or something. Need to remember what it was.\n case 25:\n // in API25 prevent other keys to fix clicking a word and then\n // selecting an alternate suggestion.\n //\n // NOTE:\n // The `setSelectionFromDom` is to allow hitting `Enter` to work\n // because the selection needs to be in the right place; however,\n // for now we've removed the cancelling of `onSelect` and everything\n // appears to be working. Not sure why we removed `onSelect` though\n // in API25.\n if (event.key === 'Enter') {\n // const window = getWindow(event.target)\n // const selection = window.getSelection()\n // setSelectionFromDom(window, editor, selection)\n next();\n }\n\n break;\n\n case 26:\n case 27:\n if (event.key === 'Enter') {\n debug('onKeyDown:enter', {});\n\n if (deleter) {\n // If a `deleter` exists which means there was an onInput with\n // `deleteContentBackward` that hasn't fired yet, then we know\n // this is one of the cases where we have to revert to before\n // the split.\n deleter.cancel();\n event.preventDefault();\n window.requestAnimationFrame(function () {\n debug('onKeyDown:enter:callback');\n compositionEndSnapshot.apply(editor);\n editor.splitBlock();\n });\n } else {\n event.preventDefault(); // If there is no deleter, all we have to do is prevent the\n // action before applying or splitBlock. In this scenario, we\n // have to grab the selection from the DOM.\n\n var domSelection = window.getSelection();\n var selection = getSelectionFromDOM(window, editor, domSelection);\n editor.moveTo(selection.anchor.key, selection.anchor.offset);\n editor.splitBlock();\n }\n\n return;\n } // We need to take a snapshot of the current selection and the\n // element before when the user hits the backspace key. This is because\n // we only know if the user hit backspace if the `onInput` event that\n // follows has an `inputType` of `deleteContentBackward`. At that time\n // it's too late to stop the event.\n\n\n keyDownSnapshot = new DomSnapshot(window, editor, {\n before: true\n }); // If we let 'Enter' through it breaks handling of hitting\n // enter at the beginning of a word so we need to stop it.\n\n break;\n\n case 28:\n {\n if (event.key === 'Enter') {\n debug('onKeyDown:enter');\n event.preventDefault();\n if (reconciler) reconciler.cancel();\n if (deleter) deleter.cancel();\n window.requestAnimationFrame(function () {\n reconcile(window, editor, {\n from: 'onKeyDown:enter'\n });\n editor.splitBlock();\n });\n return;\n } // We need to take a snapshot of the current selection and the\n // element before when the user hits the backspace key. This is because\n // we only know if the user hit backspace if the `onInput` event that\n // follows has an `inputType` of `deleteContentBackward`. At that time\n // it's too late to stop the event.\n\n\n keyDownSnapshot = new DomSnapshot(window, editor, {\n before: true\n });\n debug('onKeyDown:snapshot', {\n keyDownSnapshot: keyDownSnapshot\n });\n } // If we let 'Enter' through it breaks handling of hitting\n // enter at the beginning of a word so we need to stop it.\n\n break;\n\n default:\n if (status !== COMPOSING) {\n next();\n }\n\n }\n }\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onSelect(event, editor, next) {\n debug('onSelect', {\n event: event,\n status: status\n });\n\n switch (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"ANDROID_API_VERSION\"]) {\n // We don't want to have the selection move around in an onSelect because\n // it happens after we press `enter` in the same transaction. This\n // causes the cursor position to not be properly placed.\n case 26:\n case 27:\n case 28:\n var _window2 = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n\n fixSelectionInZeroWidthBlock(_window2);\n break;\n\n default:\n break;\n }\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onBeforeInput: onBeforeInput,\n onCompositionEnd: onCompositionEnd,\n onCompositionStart: onCompositionStart,\n onCompositionUpdate: onCompositionUpdate,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onSelect: onSelect\n };\n}\n/**\n * The transfer types that Slate recognizes.\n *\n * @type {Object}\n */\n\n\nvar TRANSFER_TYPES = {\n FRAGMENT: 'application/x-slate-fragment',\n HTML: 'text/html',\n NODE: 'application/x-slate-node',\n RICH: 'text/rtf',\n TEXT: 'text/plain'\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n/**\n * COMPAT: if we are in <= IE11 and the selection contains\n * tables, `removeAllRanges()` will throw\n * \"unable to complete the operation due to error 800a025e\"\n *\n * @param {Selection} selection document selection\n */\n\nfunction removeAllRanges(selection) {\n var doc = window.document;\n\n if (doc && doc.body.createTextRange) {\n // All IE but Edge\n var range = doc.body.createTextRange();\n range.collapse();\n range.select();\n } else {\n selection.removeAllRanges();\n }\n}\n\nvar FRAGMENT = TRANSFER_TYPES.FRAGMENT;\nvar HTML = TRANSFER_TYPES.HTML;\nvar TEXT = TRANSFER_TYPES.TEXT;\n/**\n * Prepares a Slate document fragment to be copied to the clipboard.\n *\n * @param {Event} event\n * @param {Editor} editor\n */\n\nfunction cloneFragment(event, editor) {\n var callback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {\n return undefined;\n };\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!slate__WEBPACK_IMPORTED_MODULE_2__[\"Value\"].isValue(editor), 'As of Slate 0.42.0, the `cloneFragment` utility takes an `editor` instead of a `value`.');\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n\n var _native3 = window.getSelection();\n\n var value = editor.value;\n var document = value.document,\n fragment = value.fragment,\n selection = value.selection;\n var start = selection.start,\n end = selection.end;\n var startVoid = document.getClosestVoid(start.key, editor);\n var endVoid = document.getClosestVoid(end.key, editor); // If the selection is collapsed, and it isn't inside a void node, abort.\n\n if (_native3.isCollapsed && !startVoid) return; // Create a fake selection so that we can add a Base64-encoded copy of the\n // fragment to the HTML, to decode on future pastes.\n\n var encoded = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_6__[\"default\"].serializeNode(fragment);\n\n var range = _native3.getRangeAt(0);\n\n var contents = range.cloneContents();\n var attach = contents.childNodes[0]; // Make sure attach is a non-empty node, since empty nodes will not get copied\n\n contents.childNodes.forEach(function (node) {\n if (node.textContent && node.textContent.trim() !== '') {\n attach = node;\n }\n }); // COMPAT: If the end node is a void node, we need to move the end of the\n // range from the void node's spacer span, to the end of the void node's\n // content, since the spacer is before void's content in the DOM.\n\n if (endVoid) {\n var r = range.cloneRange();\n var node = findDOMNode(endVoid, window);\n r.setEndAfter(node);\n contents = r.cloneContents();\n } // COMPAT: If the start node is a void node, we need to attach the encoded\n // fragment to the void node's content node instead of the spacer, because\n // attaching it to empty `
/` nodes will end up having it erased by\n // most browsers. (2018/04/27)\n\n\n if (startVoid) {\n attach = contents.childNodes[0].childNodes[1].firstChild;\n } // Remove any zero-width space spans from the cloned DOM so that they don't\n // show up elsewhere when pasted.\n\n\n [].slice.call(contents.querySelectorAll(ZERO_WIDTH_SELECTOR)).forEach(function (zw) {\n var isNewline = zw.getAttribute(ZERO_WIDTH_ATTRIBUTE) === 'n';\n zw.textContent = isNewline ? '\\n' : '';\n }); // Set a `data-slate-fragment` attribute on a non-empty node, so it shows up\n // in the HTML, and can be used for intra-Slate pasting. If it's a text\n // node, wrap it in a `` so we have something to set an attribute on.\n\n if (attach.nodeType === 3) {\n var span = window.document.createElement('span'); // COMPAT: In Chrome and Safari, if we don't add the `white-space` style\n // then leading and trailing spaces will be ignored. (2017/09/21)\n\n span.style.whiteSpace = 'pre';\n span.appendChild(attach);\n contents.appendChild(span);\n attach = span;\n }\n\n attach.setAttribute('data-slate-fragment', encoded); // Creates value from only the selected blocks\n // Then gets plaintext for clipboard with proper linebreaks for BLOCK elements\n // Via Plain serializer\n\n var valFromSelection = slate__WEBPACK_IMPORTED_MODULE_2__[\"Value\"].create({\n document: fragment\n });\n var plainText = slate_plain_serializer__WEBPACK_IMPORTED_MODULE_7__[\"default\"].serialize(valFromSelection); // Add the phony content to a div element. This is needed to copy the\n // contents into the html clipboard register.\n\n var div = window.document.createElement('div');\n div.appendChild(contents); // For browsers supporting it, we set the clipboard registers manually,\n // since the result is more predictable.\n // COMPAT: IE supports the setData method, but only in restricted sense.\n // IE doesn't support arbitrary MIME types or common ones like 'text/plain';\n // it only accepts \"Text\" (which gets mapped to 'text/plain') and \"Url\"\n // (mapped to 'text/url-list'); so, we should only enter block if !IS_IE\n\n if (event.clipboardData && event.clipboardData.setData && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IE\"]) {\n event.preventDefault();\n event.clipboardData.setData(TEXT, plainText);\n event.clipboardData.setData(FRAGMENT, encoded);\n event.clipboardData.setData(HTML, div.innerHTML);\n callback();\n return;\n } // COMPAT: For browser that don't support the Clipboard API's setData method,\n // we must rely on the browser to natively copy what's selected.\n // So we add the div (containing our content) to the DOM, and select it.\n\n\n var editorEl = event.target.closest('[data-slate-editor]');\n div.setAttribute('contenteditable', true);\n div.style.position = 'absolute';\n div.style.left = '-9999px';\n editorEl.appendChild(div);\n\n _native3.selectAllChildren(div); // Revert to the previous selection right after copying.\n\n\n window.requestAnimationFrame(function () {\n editorEl.removeChild(div);\n removeAllRanges(_native3);\n\n _native3.addRange(range);\n\n callback();\n });\n}\n/**\n * Find a Slate node from a DOM `element`.\n *\n * @param {Element} element\n * @param {Editor} editor\n * @return {Node|Null}\n */\n\n\nfunction findNode(element, editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!slate__WEBPACK_IMPORTED_MODULE_2__[\"Value\"].isValue(editor), 'As of Slate 0.42.0, the `findNode` utility takes an `editor` instead of a `value`.');\n var closest = element.closest('[data-key]');\n if (!closest) return null;\n var key = closest.getAttribute('data-key');\n if (!key) return null;\n var value = editor.value;\n var document = value.document;\n var node = document.getNode(key);\n return node || null;\n}\n/**\n * Get the target range from a DOM `event`.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @return {Range}\n */\n\n\nfunction getEventRange(event, editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(!slate__WEBPACK_IMPORTED_MODULE_2__[\"Value\"].isValue(editor), 'As of Slate 0.42.0, the `findNode` utility takes an `editor` instead of a `value`.');\n\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var _event = event,\n x = _event.clientX,\n y = _event.clientY,\n target = _event.target;\n if (x == null || y == null) return null;\n var value = editor.value;\n var document = value.document;\n var node = findNode(target, editor);\n if (!node) return null; // If the drop target is inside a void node, move it into either the next or\n // previous node, depending on which side the `x` and `y` coordinates are\n // closest to.\n\n if (editor.query('isVoid', node)) {\n var rect = target.getBoundingClientRect();\n var isPrevious = node.object === 'inline' ? x - rect.left < rect.left + rect.width - x : y - rect.top < rect.top + rect.height - y;\n var text = node.getFirstText();\n\n var _range = document.createRange();\n\n if (isPrevious) {\n var previousText = document.getPreviousText(text.key);\n\n if (previousText) {\n return _range.moveToEndOfNode(previousText);\n }\n }\n\n var nextText = document.getNextText(text.key);\n return nextText ? _range.moveToStartOfNode(nextText) : null;\n } // Else resolve a range from the caret position where the drop occured.\n\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(target);\n\n var _native4 = void 0; // COMPAT: In Firefox, `caretRangeFromPoint` doesn't exist. (2016/07/25)\n\n\n if (window.document.caretRangeFromPoint) {\n _native4 = window.document.caretRangeFromPoint(x, y);\n } else if (window.document.caretPositionFromPoint) {\n var position = window.document.caretPositionFromPoint(x, y);\n _native4 = window.document.createRange();\n\n _native4.setStart(position.offsetNode, position.offset);\n\n _native4.setEnd(position.offsetNode, position.offset);\n } else if (window.document.body.createTextRange) {\n // COMPAT: In IE, `caretRangeFromPoint` and\n // `caretPositionFromPoint` don't exist. (2018/07/11)\n _native4 = window.document.body.createTextRange();\n\n try {\n _native4.moveToPoint(x, y);\n } catch (error) {\n // IE11 will raise an `unspecified error` if `moveToPoint` is\n // called during a dropEvent.\n return null;\n }\n } // Resolve a Slate range from the DOM range.\n\n\n var range = findRange(_native4, editor);\n if (!range) return null;\n return range;\n}\n/**\n * Transfer types.\n *\n * @type {String}\n */\n\n\nvar FRAGMENT$1 = TRANSFER_TYPES.FRAGMENT;\nvar HTML$1 = TRANSFER_TYPES.HTML;\nvar NODE = TRANSFER_TYPES.NODE;\nvar RICH = TRANSFER_TYPES.RICH;\nvar TEXT$1 = TRANSFER_TYPES.TEXT;\n/**\n * Fragment matching regexp for HTML nodes.\n *\n * @type {RegExp}\n */\n\nvar FRAGMENT_MATCHER = / data-slate-fragment=\"([^\\s\"]+)\"/;\n/**\n * Get the transfer data from an `event`.\n *\n * @param {Event} event\n * @return {Object}\n */\n\nfunction getEventTransfer(event) {\n // COMPAT: IE 11 doesn't populate nativeEvent with either\n // dataTransfer or clipboardData. We'll need to use the base event\n // object (2018/14/6)\n if (!slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IE\"] && event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n var fragment = getType(transfer, FRAGMENT$1);\n var node = getType(transfer, NODE);\n var html = getType(transfer, HTML$1);\n var rich = getType(transfer, RICH);\n var text = getType(transfer, TEXT$1);\n var files = void 0; // If there isn't a fragment, but there is HTML, check to see if the HTML is\n // actually an encoded fragment.\n\n if (!fragment && html && ~html.indexOf(' data-slate-fragment=\"')) {\n var matches = FRAGMENT_MATCHER.exec(html);\n\n var _matches = slicedToArray(matches, 2),\n full = _matches[0],\n encoded = _matches[1]; // eslint-disable-line no-unused-vars\n\n\n if (encoded) fragment = encoded;\n } // COMPAT: Edge doesn't handle custom data types\n // These will be embedded in text/plain in this case (2017/7/12)\n\n\n if (text) {\n var embeddedTypes = getEmbeddedTypes(text);\n if (embeddedTypes[FRAGMENT$1]) fragment = embeddedTypes[FRAGMENT$1];\n if (embeddedTypes[NODE]) node = embeddedTypes[NODE];\n if (embeddedTypes[TEXT$1]) text = embeddedTypes[TEXT$1];\n } // Decode a fragment or node if they exist.\n\n\n if (fragment) fragment = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_6__[\"default\"].deserializeNode(fragment);\n if (node) node = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_6__[\"default\"].deserializeNode(node); // COMPAT: Edge sometimes throws 'NotSupportedError'\n // when accessing `transfer.items` (2017/7/12)\n\n try {\n // Get and normalize files if they exist.\n if (transfer.items && transfer.items.length) {\n files = Array.from(transfer.items).map(function (item) {\n return item.kind === 'file' ? item.getAsFile() : null;\n }).filter(function (exists) {\n return exists;\n });\n } else if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } catch (err) {\n if (transfer.files && transfer.files.length) {\n files = Array.from(transfer.files);\n }\n } // Determine the type of the data.\n\n\n var data = {\n files: files,\n fragment: fragment,\n html: html,\n node: node,\n rich: rich,\n text: text\n };\n data.type = getTransferType(data);\n return data;\n}\n/**\n * Takes text input, checks whether contains embedded data\n * and returns object with original text +/- additional data\n *\n * @param {String} text\n * @return {Object}\n */\n\n\nfunction getEmbeddedTypes(text) {\n var prefix = 'SLATE-DATA-EMBED::';\n\n if (text.substring(0, prefix.length) !== prefix) {\n return {\n TEXT: text\n };\n } // Attempt to parse, if fails then just standard text/plain\n // Otherwise, already had data embedded\n\n\n try {\n return JSON.parse(text.substring(prefix.length));\n } catch (err) {\n throw new Error('Unable to parse custom Slate drag event data.');\n }\n}\n/**\n * Get the type of a transfer from its `data`.\n *\n * @param {Object} data\n * @return {String}\n */\n\n\nfunction getTransferType(data) {\n if (data.fragment) return 'fragment';\n if (data.node) return 'node'; // COMPAT: Microsoft Word adds an image of the selected text to the data.\n // Since files are preferred over HTML or text, this would cause the type to\n // be considered `files`. But it also adds rich text data so we can check\n // for that and properly set the type to `html` or `text`. (2016/11/21)\n\n if (data.rich && data.html) return 'html';\n if (data.rich && data.text) return 'text';\n if (data.files && data.files.length) return 'files';\n if (data.html) return 'html';\n if (data.text) return 'text';\n return 'unknown';\n}\n/**\n * Get one of types `TYPES.FRAGMENT`, `TYPES.NODE`, `text/html`, `text/rtf` or\n * `text/plain` from transfers's `data` if possible, otherwise return null.\n *\n * @param {Object} transfer\n * @param {String} type\n * @return {String}\n */\n\n\nfunction getType(transfer, type) {\n if (!transfer.types || !transfer.types.length) {\n // COMPAT: In IE 11, there is no `types` field but `getData('Text')`\n // is supported`. (2017/06/23)\n return type === TEXT$1 ? transfer.getData('Text') || null : null;\n } // COMPAT: In Edge, transfer.types doesn't respond to `indexOf`. (2017/10/25)\n\n\n var types = Array.from(transfer.types);\n return types.indexOf(type) !== -1 ? transfer.getData(type) || null : null;\n}\n/**\n * The default plain text transfer type.\n *\n * @type {String}\n */\n\n\nvar TEXT$2 = TRANSFER_TYPES.TEXT;\n/**\n * Set data with `type` and `content` on an `event`.\n *\n * COMPAT: In Edge, custom types throw errors, so embed all non-standard\n * types in text/plain compound object. (2017/7/12)\n *\n * @param {Event} event\n * @param {String} type\n * @param {String} content\n */\n\nfunction setEventTransfer(event, type, content) {\n var mime = TRANSFER_TYPES[type.toUpperCase()];\n\n if (!mime) {\n throw new Error('Cannot set unknown transfer type \"' + mime + '\".');\n }\n\n if (event.nativeEvent) {\n event = event.nativeEvent;\n }\n\n var transfer = event.dataTransfer || event.clipboardData;\n\n try {\n transfer.setData(mime, content); // COMPAT: Safari needs to have the 'text' (and not 'text/plain') value in dataTransfer\n // to display the cursor while dragging internally.\n\n transfer.setData('text', transfer.getData('text'));\n } catch (err) {\n var prefix = 'SLATE-DATA-EMBED::';\n var text = transfer.getData(TEXT$2);\n var obj = {}; // If the existing plain text data is prefixed, it's Slate JSON data.\n\n if (text.substring(0, prefix.length) === prefix) {\n try {\n obj = JSON.parse(text.substring(prefix.length));\n } catch (e) {\n throw new Error('Failed to parse Slate data from `DataTransfer` object.');\n }\n } else {\n // Otherwise, it's just set it as is.\n obj[TEXT$2] = text;\n }\n\n obj[mime] = content;\n var string = '' + prefix + JSON.stringify(obj);\n transfer.setData(TEXT$2, string);\n }\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$1 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:after');\n/**\n * A plugin that adds the \"after\" browser-specific logic to the editor.\n *\n * @param {Object} options\n * @return {Object}\n */\n\nfunction AfterPlugin() {\n var isDraggingInternally = null;\n var isMouseDown = false;\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n function onBeforeInput(event, editor, next) {\n var value = editor.value;\n var isSynthetic = !!event.nativeEvent; // If the event is synthetic, it's React's polyfill of `beforeinput` that\n // isn't a true `beforeinput` event with meaningful information. It only\n // gets triggered for character insertions, so we can just insert directly.\n\n if (isSynthetic) {\n event.preventDefault();\n editor.insertText(event.data);\n return next();\n } // Otherwise, we can use the information in the `beforeinput` event to\n // figure out the exact change that will occur, and prevent it.\n\n\n var _event$getTargetRange = event.getTargetRanges(),\n _event$getTargetRange2 = slicedToArray(_event$getTargetRange, 1),\n targetRange = _event$getTargetRange2[0];\n\n if (!targetRange) return next();\n debug$1('onBeforeInput', {\n event: event\n });\n event.preventDefault();\n var document = value.document,\n selection = value.selection;\n var range = findRange(targetRange, editor);\n\n switch (event.inputType) {\n case 'deleteByDrag':\n case 'deleteByCut':\n case 'deleteContent':\n case 'deleteContentBackward':\n case 'deleteContentForward':\n {\n editor.deleteAtRange(range);\n break;\n }\n\n case 'deleteWordBackward':\n {\n editor.deleteWordBackwardAtRange(range);\n break;\n }\n\n case 'deleteWordForward':\n {\n editor.deleteWordForwardAtRange(range);\n break;\n }\n\n case 'deleteSoftLineBackward':\n case 'deleteHardLineBackward':\n {\n editor.deleteLineBackwardAtRange(range);\n break;\n }\n\n case 'deleteSoftLineForward':\n case 'deleteHardLineForward':\n {\n editor.deleteLineForwardAtRange(range);\n break;\n }\n\n case 'insertLineBreak':\n case 'insertParagraph':\n {\n var hasVoidParent = document.hasVoidParent(selection.start.path, editor);\n\n if (hasVoidParent) {\n editor.moveToStartOfNextText();\n } else {\n editor.splitBlockAtRange(range);\n }\n\n break;\n }\n\n case 'insertFromYank':\n case 'insertReplacementText':\n case 'insertText':\n {\n // COMPAT: `data` should have the text for the `insertText` input type\n // and `dataTransfer` should have the text for the\n // `insertReplacementText` input type, but Safari uses `insertText` for\n // spell check replacements and sets `data` to `null`. (2018/08/09)\n var text = event.data == null ? event.dataTransfer.getData('text/plain') : event.data;\n if (text == null) break;\n editor.insertTextAtRange(range, text, selection.marks); // If the text was successfully inserted, and the selection had marks\n // on it, unset the selection's marks.\n\n if (selection.marks && value.document !== editor.value.document) {\n editor.select({\n marks: null\n });\n }\n\n break;\n }\n }\n\n next();\n }\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onBlur(event, editor, next) {\n debug$1('onBlur', {\n event: event\n });\n editor.blur();\n next();\n }\n /**\n * On click.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onClick(event, editor, next) {\n if (editor.readOnly) return next();\n var value = editor.value;\n var document = value.document;\n var node = findNode(event.target, editor);\n if (!node) return next();\n debug$1('onClick', {\n event: event\n });\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (editor.isVoid(node) || ancestors.some(function (a) {\n return editor.isVoid(a);\n }));\n\n if (isVoid) {\n // COMPAT: In Chrome & Safari, selections that are at the zero offset of\n // an inline node will be automatically replaced to be at the last offset\n // of a previous inline node, which screws us up, so we always want to set\n // it to the end of the node. (2016/11/29)\n editor.focus().moveToEndOfNode(node);\n }\n\n next();\n }\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCopy(event, editor, next) {\n debug$1('onCopy', {\n event: event\n });\n cloneFragment(event, editor);\n next();\n }\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCut(event, editor, next) {\n debug$1('onCut', {\n event: event\n }); // Once the fake cut content has successfully been added to the clipboard,\n // delete the content in the current selection.\n\n cloneFragment(event, editor, function () {\n // If user cuts a void block node or a void inline node,\n // manually removes it since selection is collapsed in this case.\n var value = editor.value;\n var endBlock = value.endBlock,\n endInline = value.endInline,\n selection = value.selection;\n var isCollapsed = selection.isCollapsed;\n var isVoidBlock = endBlock && editor.isVoid(endBlock) && isCollapsed;\n var isVoidInline = endInline && editor.isVoid(endInline) && isCollapsed;\n\n if (isVoidBlock) {\n editor.removeNodeByKey(endBlock.key);\n } else if (isVoidInline) {\n editor.removeNodeByKey(endInline.key);\n } else {\n editor.delete();\n }\n });\n next();\n }\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragEnd(event, editor, next) {\n debug$1('onDragEnd', {\n event: event\n });\n isDraggingInternally = null;\n next();\n }\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragStart(event, editor, next) {\n debug$1('onDragStart', {\n event: event\n });\n isDraggingInternally = true;\n var value = editor.value;\n var document = value.document;\n var node = findNode(event.target, editor);\n var ancestors = document.getAncestors(node.key);\n var isVoid = node && (editor.isVoid(node) || ancestors.some(function (a) {\n return editor.isVoid(a);\n }));\n var selectionIncludesNode = value.blocks.some(function (block) {\n return block.key === node.key;\n }); // If a void block is dragged and is not selected, select it (necessary for local drags).\n\n if (isVoid && !selectionIncludesNode) {\n editor.moveToRangeOfNode(node);\n }\n\n var fragment = editor.value.fragment;\n var encoded = slate_base64_serializer__WEBPACK_IMPORTED_MODULE_6__[\"default\"].serializeNode(fragment);\n setEventTransfer(event, 'fragment', encoded);\n next();\n }\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDrop(event, editor, next) {\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var target = getEventRange(event, editor);\n if (!target) return next();\n debug$1('onDrop', {\n event: event\n });\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n editor.focus(); // If the drag is internal and the target is after the selection, it\n // needs to account for the selection's content being deleted.\n\n if (isDraggingInternally && selection.end.key === target.end.key && selection.end.offset < target.end.offset) {\n target = target.moveForward(selection.start.key === selection.end.key ? 0 - selection.end.offset + selection.start.offset : 0 - selection.end.offset);\n }\n\n if (isDraggingInternally) {\n editor.delete();\n }\n\n editor.select(target);\n\n if (type === 'text' || type === 'html') {\n var _target = target,\n anchor = _target.anchor;\n var hasVoidParent = document.hasVoidParent(anchor.key, editor);\n\n if (hasVoidParent) {\n var n = document.getNode(anchor.key);\n\n while (hasVoidParent) {\n n = document.getNextText(n.key);\n if (!n) break;\n hasVoidParent = document.hasVoidParent(n.key, editor);\n }\n\n if (n) editor.moveToStartOfNode(n);\n }\n\n if (text) {\n text.split('\\n').forEach(function (line, i) {\n if (i > 0) editor.splitBlock();\n editor.insertText(line);\n });\n }\n }\n\n if (type === 'fragment') {\n editor.insertFragment(fragment);\n } // COMPAT: React's onSelect event breaks after an onDrop event\n // has fired in a node: https://github.com/facebook/react/issues/11379.\n // Until this is fixed in React, we dispatch a mouseup event on that\n // DOM node, since that will make it go back to normal.\n\n\n var focusNode = document.getNode(target.focus.key);\n var el = findDOMNode(focusNode, window);\n\n if (el) {\n el.dispatchEvent(new MouseEvent('mouseup', {\n view: window,\n bubbles: true,\n cancelable: true\n }));\n }\n\n next();\n }\n /**\n * On focus.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onFocus(event, editor, next) {\n debug$1('onFocus', {\n event: event\n }); // COMPAT: If the focus event is a mouse-based one, it will be shortly\n // followed by a `selectionchange`, so we need to deselect here to prevent\n // the old selection from being set by the `updateSelection` of ``,\n // preventing the `selectionchange` from firing. (2018/11/07)\n\n if (isMouseDown && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IE\"] && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_EDGE\"]) {\n editor.deselect().focus();\n } else {\n editor.focus();\n }\n\n next();\n }\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onInput(event, editor, next) {\n debug$1('onInput');\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target); // Get the selection point.\n\n var selection = window.getSelection();\n var anchorNode = selection.anchorNode;\n setTextFromDomNode(window, editor, anchorNode);\n setSelectionFromDOM(window, editor, selection);\n next();\n }\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onKeyDown(event, editor, next) {\n debug$1('onKeyDown', {\n event: event\n });\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var hasVoidParent = document.hasVoidParent(selection.start.path, editor); // COMPAT: In iOS, some of these hotkeys are handled in the\n // `onNativeBeforeInput` handler of the `` component in order to\n // preserve native autocorrect behavior, so they shouldn't be handled here.\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isSplitBlock(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IOS\"]) {\n return hasVoidParent ? editor.moveToStartOfNextText() : editor.splitBlock();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteBackward(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IOS\"]) {\n return editor.deleteCharBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteForward(event) && !slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IOS\"]) {\n return editor.deleteCharForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteLineBackward(event)) {\n return editor.deleteLineBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteLineForward(event)) {\n return editor.deleteLineForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteWordBackward(event)) {\n return editor.deleteWordBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteWordForward(event)) {\n return editor.deleteWordForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isRedo(event)) {\n return editor.redo();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isUndo(event)) {\n return editor.undo();\n } // COMPAT: Certain browsers don't handle the selection updates properly. In\n // Chrome, the selection isn't properly extended. And in Firefox, the\n // selection isn't properly collapsed. (2017/10/17)\n\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isMoveLineBackward(event)) {\n event.preventDefault();\n return editor.moveToStartOfBlock();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isMoveLineForward(event)) {\n event.preventDefault();\n return editor.moveToEndOfBlock();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isExtendLineBackward(event)) {\n event.preventDefault();\n return editor.moveFocusToStartOfBlock();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isExtendLineForward(event)) {\n event.preventDefault();\n return editor.moveFocusToEndOfBlock();\n } // COMPAT: If a void node is selected, or a zero-width text node adjacent to\n // an inline is selected, we need to handle these hotkeys manually because\n // browsers won't know what to do.\n\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isMoveBackward(event)) {\n event.preventDefault();\n\n if (!selection.isCollapsed) {\n return editor.moveToStart();\n }\n\n return editor.moveBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isMoveForward(event)) {\n event.preventDefault();\n\n if (!selection.isCollapsed) {\n return editor.moveToEnd();\n }\n\n return editor.moveForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isMoveWordBackward(event)) {\n event.preventDefault();\n return editor.moveWordBackward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isMoveWordForward(event)) {\n event.preventDefault();\n return editor.moveWordForward();\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isExtendBackward(event)) {\n var previousText = value.previousText,\n startText = value.startText;\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key, editor);\n\n if (hasVoidParent || isPreviousInVoid || startText.text === '') {\n event.preventDefault();\n return editor.moveFocusBackward();\n }\n }\n\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isExtendForward(event)) {\n var nextText = value.nextText,\n _startText = value.startText;\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key, editor);\n\n if (hasVoidParent || isNextInVoid || _startText.text === '') {\n event.preventDefault();\n return editor.moveFocusForward();\n }\n }\n\n next();\n }\n /**\n * On mouse down.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onMouseDown(event, editor, next) {\n debug$1('onMouseDown', {\n event: event\n });\n isMouseDown = true;\n next();\n }\n /**\n * On mouse up.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onMouseUp(event, editor, next) {\n debug$1('onMouseUp', {\n event: event\n });\n isMouseDown = false;\n next();\n }\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onPaste(event, editor, next) {\n debug$1('onPaste', {\n event: event\n });\n var value = editor.value;\n var transfer = getEventTransfer(event);\n var type = transfer.type,\n fragment = transfer.fragment,\n text = transfer.text;\n\n if (type === 'fragment') {\n editor.insertFragment(fragment);\n }\n\n if (type === 'text' || type === 'html') {\n if (!text) return next();\n var document = value.document,\n selection = value.selection,\n startBlock = value.startBlock;\n if (editor.isVoid(startBlock)) return next();\n var defaultBlock = startBlock;\n var defaultMarks = document.getInsertMarksAtRange(selection);\n var frag = slate_plain_serializer__WEBPACK_IMPORTED_MODULE_7__[\"default\"].deserialize(text, {\n defaultBlock: defaultBlock,\n defaultMarks: defaultMarks\n }).document;\n editor.insertFragment(frag);\n }\n\n next();\n }\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onSelect(event, editor, next) {\n debug$1('onSelect', {\n event: event\n });\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var selection = window.getSelection();\n setSelectionFromDOM(window, editor, selection);\n next();\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onClick: onClick,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onMouseDown: onMouseDown,\n onMouseUp: onMouseUp,\n onPaste: onPaste,\n onSelect: onSelect\n };\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$2 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:before');\n/**\n * A plugin that adds the \"before\" browser-specific logic to the editor.\n *\n * @return {Object}\n */\n\nfunction BeforePlugin() {\n var activeElement = null;\n var compositionCount = 0;\n var isComposing = false;\n var isCopying = false;\n var isDragging = false;\n /**\n * On before input.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n function onBeforeInput(event, editor, next) {\n var isSynthetic = !!event.nativeEvent;\n if (editor.readOnly) return; // COMPAT: If the browser supports Input Events Level 2, we will have\n // attached a custom handler for the real `beforeinput` events, instead of\n // allowing React's synthetic polyfill, so we need to ignore synthetics.\n\n if (isSynthetic && slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"HAS_INPUT_EVENTS_LEVEL_2\"]) return;\n debug$2('onBeforeInput', {\n event: event\n });\n next();\n }\n /**\n * On blur.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onBlur(event, editor, next) {\n if (isCopying) return;\n if (editor.readOnly) return;\n var relatedTarget = event.relatedTarget,\n target = event.target;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(target); // COMPAT: If the current `activeElement` is still the previous one, this is\n // due to the window being blurred when the tab itself becomes unfocused, so\n // we want to abort early to allow to editor to stay focused when the tab\n // becomes focused again.\n\n if (activeElement === window.document.activeElement) return; // COMPAT: The `relatedTarget` can be null when the new focus target is not\n // a \"focusable\" element (eg. a `
` without `tabindex` set).\n\n if (relatedTarget) {\n var el = react_dom__WEBPACK_IMPORTED_MODULE_9___default.a.findDOMNode(editor); // COMPAT: The event should be ignored if the focus is returning to the\n // editor from an embedded editable element (eg. an element inside\n // a void node).\n\n if (relatedTarget === el) return; // COMPAT: The event should be ignored if the focus is moving from the\n // editor to inside a void node's spacer element.\n\n if (relatedTarget.hasAttribute('data-slate-spacer')) return; // COMPAT: The event should be ignored if the focus is moving to a non-\n // editable section of an element that isn't a void node (eg. a list item\n // of the check list example).\n\n var node = findNode(relatedTarget, editor);\n if (el.contains(relatedTarget) && node && !editor.isVoid(node)) return;\n }\n\n debug$2('onBlur', {\n event: event\n });\n next();\n }\n /**\n * On composition end.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCompositionEnd(event, editor, next) {\n var n = compositionCount; // The `count` check here ensures that if another composition starts\n // before the timeout has closed out this one, we will abort unsetting the\n // `isComposing` flag, since a composition is still in affect.\n\n window.requestAnimationFrame(function () {\n if (compositionCount > n) return;\n isComposing = false;\n });\n debug$2('onCompositionEnd', {\n event: event\n });\n next();\n }\n /**\n * On click.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onClick(event, editor, next) {\n debug$2('onClick', {\n event: event\n });\n next();\n }\n /**\n * On composition start.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCompositionStart(event, editor, next) {\n isComposing = true;\n compositionCount++;\n var value = editor.value;\n var selection = value.selection;\n\n if (!selection.isCollapsed) {\n // https://github.com/ianstormtaylor/slate/issues/1879\n // When composition starts and the current selection is not collapsed, the\n // second composition key-down would drop the text wrapping which\n // resulted on crash in content.updateSelection after composition ends\n // (because it cannot find nodes in DOM). This is a workaround that\n // erases selection as soon as composition starts and preventing \n // to be dropped.\n editor.delete();\n }\n\n debug$2('onCompositionStart', {\n event: event\n });\n next();\n }\n /**\n * On copy.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCopy(event, editor, next) {\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n debug$2('onCopy', {\n event: event\n });\n next();\n }\n /**\n * On cut.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onCut(event, editor, next) {\n if (editor.readOnly) return;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n isCopying = true;\n window.requestAnimationFrame(function () {\n return isCopying = false;\n });\n debug$2('onCut', {\n event: event\n });\n next();\n }\n /**\n * On drag end.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragEnd(event, editor, next) {\n isDragging = false;\n debug$2('onDragEnd', {\n event: event\n });\n next();\n }\n /**\n * On drag enter.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragEnter(event, editor, next) {\n debug$2('onDragEnter', {\n event: event\n });\n next();\n }\n /**\n * On drag exit.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragExit(event, editor, next) {\n debug$2('onDragExit', {\n event: event\n });\n next();\n }\n /**\n * On drag leave.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragLeave(event, editor, next) {\n debug$2('onDragLeave', {\n event: event\n });\n next();\n }\n /**\n * On drag over.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragOver(event, editor, next) {\n // If the target is inside a void node, and only in this case,\n // call `preventDefault` to signal that drops are allowed.\n // When the target is editable, dropping is already allowed by\n // default, and calling `preventDefault` hides the cursor.\n var node = findNode(event.target, editor);\n if (editor.isVoid(node)) event.preventDefault(); // COMPAT: IE won't call onDrop on contentEditables unless the\n // default dragOver is prevented:\n // https://developer.microsoft.com/en-us/microsoft-edge/platform/issues/913982/\n // (2018/07/11)\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IE\"]) {\n event.preventDefault();\n } // If a drag is already in progress, don't do this again.\n\n\n if (!isDragging) {\n isDragging = true; // COMPAT: IE will raise an `unspecified error` if dropEffect is\n // set. (2018/07/11)\n\n if (!slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IE\"]) {\n event.nativeEvent.dataTransfer.dropEffect = 'move';\n }\n }\n\n debug$2('onDragOver', {\n event: event\n });\n next();\n }\n /**\n * On drag start.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDragStart(event, editor, next) {\n isDragging = true;\n debug$2('onDragStart', {\n event: event\n });\n next();\n }\n /**\n * On drop.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onDrop(event, editor, next) {\n if (editor.readOnly) return; // Prevent default so the DOM's value isn't corrupted.\n\n event.preventDefault();\n debug$2('onDrop', {\n event: event\n });\n next();\n }\n /**\n * On focus.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onFocus(event, editor, next) {\n if (isCopying) return;\n if (editor.readOnly) return;\n var el = react_dom__WEBPACK_IMPORTED_MODULE_9___default.a.findDOMNode(editor); // Save the new `activeElement`.\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n activeElement = window.document.activeElement; // COMPAT: If the editor has nested editable elements, the focus can go to\n // those elements. In Firefox, this must be prevented because it results in\n // issues with keyboard navigation. (2017/03/30)\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_FIREFOX\"] && event.target !== el) {\n el.focus();\n return;\n }\n\n debug$2('onFocus', {\n event: event\n });\n next();\n }\n /**\n * On input.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onInput(event, editor, next) {\n if (isComposing) return;\n if (editor.value.selection.isBlurred) return;\n debug$2('onInput', {\n event: event\n });\n next();\n }\n /**\n * On key down.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onKeyDown(event, editor, next) {\n if (editor.readOnly) return; // When composing, we need to prevent all hotkeys from executing while\n // typing. However, certain characters also move the selection before\n // we're able to handle it, so prevent their default behavior.\n\n if (isComposing) {\n if (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isCompose(event)) event.preventDefault();\n return;\n } // Certain hotkeys have native editing behaviors in `contenteditable`\n // elements which will editor the DOM and cause our value to be out of sync,\n // so they need to always be prevented.\n\n\n if (!slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IOS\"] && (slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isBold(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteBackward(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteForward(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteLineBackward(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteLineForward(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteWordBackward(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isDeleteWordForward(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isItalic(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isRedo(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isSplitBlock(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isTransposeCharacter(event) || slate_hotkeys__WEBPACK_IMPORTED_MODULE_8__[\"default\"].isUndo(event))) {\n event.preventDefault();\n }\n\n debug$2('onKeyDown', {\n event: event\n });\n next();\n }\n /**\n * On paste.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onPaste(event, editor, next) {\n if (editor.readOnly) return; // Prevent defaults so the DOM state isn't corrupted.\n\n event.preventDefault();\n debug$2('onPaste', {\n event: event\n });\n next();\n }\n /**\n * On select.\n *\n * @param {Event} event\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onSelect(event, editor, next) {\n if (isCopying) return;\n if (isComposing) return;\n if (editor.readOnly) return; // Save the new `activeElement`.\n\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n activeElement = window.document.activeElement;\n debug$2('onSelect', {\n event: event\n });\n next();\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onBeforeInput: onBeforeInput,\n onBlur: onBlur,\n onClick: onClick,\n onCompositionEnd: onCompositionEnd,\n onCompositionStart: onCompositionStart,\n onCopy: onCopy,\n onCut: onCut,\n onDragEnd: onDragEnd,\n onDragEnter: onDragEnter,\n onDragExit: onDragExit,\n onDragLeave: onDragLeave,\n onDragOver: onDragOver,\n onDragStart: onDragStart,\n onDrop: onDrop,\n onFocus: onFocus,\n onInput: onInput,\n onKeyDown: onKeyDown,\n onPaste: onPaste,\n onSelect: onSelect\n };\n}\n/**\n * A plugin that adds the browser-specific logic to the editor.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n\nfunction DOMPlugin() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$plugins = options.plugins,\n plugins = _options$plugins === undefined ? [] : _options$plugins; // Add Android specific handling separately before it gets to the other\n // plugins because it is specific (other browser don't need it) and finicky\n // (it has to come before other plugins to work).\n\n var beforeBeforePlugins = slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_ANDROID\"] ? [AndroidPlugin()] : [];\n var beforePlugin = BeforePlugin();\n var afterPlugin = AfterPlugin();\n return [].concat(beforeBeforePlugins, [beforePlugin], toConsumableArray(plugins), [afterPlugin]);\n}\n/**\n * Debugger.\n *\n * @type {Function}\n */\n\n\nvar debug$3 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:leaves');\n/**\n * Leaf.\n *\n * @type {Component}\n */\n\nvar Leaf = function (_React$Component) {\n inherits(Leaf, _React$Component);\n\n function Leaf() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Leaf);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Leaf.__proto__ || Object.getPrototypeOf(Leaf)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n\n createClass(Leaf, [{\n key: 'shouldComponentUpdate',\n\n /**\n * Should component update?\n *\n * @param {Object} props\n * @return {Boolean}\n */\n value: function shouldComponentUpdate(props) {\n // If any of the regular properties have changed, re-render.\n if (props.index !== this.props.index || props.marks !== this.props.marks || props.text !== this.props.text || props.parent !== this.props.parent) {\n return true;\n } // Otherwise, don't update.\n\n\n return false;\n }\n /**\n * Render the leaf.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n this.debug('render', this);\n var _props = this.props,\n node = _props.node,\n index = _props.index;\n var offsetKey = OffsetKey.stringify({\n key: node.key,\n index: index\n });\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-slate-leaf': true,\n 'data-offset-key': offsetKey\n }, this.renderMarks());\n }\n /**\n * Render all of the leaf's mark components.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderMarks',\n value: function renderMarks() {\n var _props2 = this.props,\n marks = _props2.marks,\n node = _props2.node,\n offset = _props2.offset,\n text = _props2.text,\n editor = _props2.editor;\n var leaf = this.renderText();\n var attributes = {\n 'data-slate-mark': true\n };\n return marks.reduce(function (children, mark) {\n var props = {\n editor: editor,\n mark: mark,\n marks: marks,\n node: node,\n offset: offset,\n text: text,\n children: children,\n attributes: attributes\n };\n var element = editor.run('renderMark', props);\n return element || children;\n }, leaf);\n }\n /**\n * Render the text content of the leaf, accounting for browsers.\n *\n * @return {Element}\n */\n\n }, {\n key: 'renderText',\n value: function renderText() {\n var _props3 = this.props,\n block = _props3.block,\n node = _props3.node,\n editor = _props3.editor,\n parent = _props3.parent,\n text = _props3.text,\n index = _props3.index,\n leaves = _props3.leaves; // COMPAT: Render text inside void nodes with a zero-width space.\n // So the node can contain selection but the text is not visible.\n\n if (editor.query('isVoid', parent)) {\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-slate-zero-width': 'z',\n 'data-slate-length': parent.text.length\n }, \"\\uFEFF\");\n } // COMPAT: If this is the last text node in an empty block, render a zero-\n // width space that will convert into a line break when copying and pasting\n // to support expected plain text.\n\n\n if (text === '' && parent.object === 'block' && parent.text === '' && parent.nodes.last() === node) {\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-slate-zero-width': 'n',\n 'data-slate-length': 0\n }, \"\\uFEFF\", react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('br', null));\n } // COMPAT: If the text is empty, it's because it's on the edge of an inline\n // node, so we render a zero-width space so that the selection can be\n // inserted next to it still.\n\n\n if (text === '') {\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-slate-zero-width': 'z',\n 'data-slate-length': 0\n }, \"\\uFEFF\");\n } // COMPAT: Browsers will collapse trailing new lines at the end of blocks,\n // so we need to add an extra trailing new lines to prevent that.\n\n\n var lastText = block.getLastText();\n var lastChar = text.charAt(text.length - 1);\n var isLastText = node === lastText;\n var isLastLeaf = index === leaves.size - 1;\n if (isLastText && isLastLeaf && lastChar === '\\n') return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-slate-content': true\n }, text + '\\n'); // Otherwise, just return the content.\n\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-slate-content': true\n }, text);\n }\n }]);\n return Leaf;\n}(react__WEBPACK_IMPORTED_MODULE_10___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nLeaf.propTypes = {\n block: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].block.isRequired,\n editor: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object.isRequired,\n index: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.number.isRequired,\n leaves: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].leaves.isRequired,\n marks: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].marks.isRequired,\n node: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.number.isRequired,\n parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n text: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string.isRequired\n};\n\nvar _initialiseProps = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n debug$3.apply(undefined, [message, _this2.props.node.key + '-' + _this2.props.index].concat(args));\n };\n};\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$4 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:node');\n/**\n * Text.\n *\n * @type {Component}\n */\n\nvar Text = function (_React$Component) {\n inherits(Text, _React$Component);\n\n function Text() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Text);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Text.__proto__ || Object.getPrototypeOf(Text)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$1.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default prop types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n\n\n createClass(Text, [{\n key: 'render',\n\n /**\n * Render.\n *\n * @return {Element}\n */\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n var _props = this.props,\n decorations = _props.decorations,\n editor = _props.editor,\n node = _props.node,\n style = _props.style;\n var value = editor.value;\n var document = value.document;\n var key = node.key;\n var decs = decorations.filter(function (d) {\n var start = d.start,\n end = d.end; // If either of the decoration's keys match, include it.\n\n if (start.key === key || end.key === key) return true; // Otherwise, if the decoration is in a single node, it's not ours.\n\n if (start.key === end.key) return false; // If the node's path is before the start path, ignore it.\n\n var path = document.assertPath(key);\n if (slate__WEBPACK_IMPORTED_MODULE_2__[\"PathUtils\"].compare(path, start.path) === -1) return false; // If the node's path is after the end path, ignore it.\n\n if (slate__WEBPACK_IMPORTED_MODULE_2__[\"PathUtils\"].compare(path, end.path) === 1) return false; // Otherwise, include it.\n\n return true;\n }); // PERF: Take advantage of cache by avoiding arguments\n\n var leaves = decs.size === 0 ? node.getLeaves() : node.getLeaves(decs);\n var offset = 0;\n var children = leaves.map(function (leaf, i) {\n var child = _this2.renderLeaf(leaves, leaf, i, offset);\n\n offset += leaf.text.length;\n return child;\n });\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement('span', {\n 'data-key': key,\n style: style\n }, children);\n }\n /**\n * Render a single leaf given a `leaf` and `offset`.\n *\n * @param {List} leaves\n * @param {Leaf} leaf\n * @param {Number} index\n * @param {Number} offset\n * @return {Element} leaf\n */\n\n }]);\n return Text;\n}(react__WEBPACK_IMPORTED_MODULE_10___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nText.propTypes = {\n block: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].block,\n decorations: react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_13___default.a.list.isRequired,\n editor: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object.isRequired,\n node: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n style: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object\n};\nText.defaultProps = {\n style: null\n};\n\nvar _initialiseProps$1 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key;\n debug$4.apply(undefined, [message, key + ' (text)'].concat(args));\n };\n\n this.shouldComponentUpdate = function (nextProps) {\n var props = _this3.props;\n var n = nextProps;\n var p = props; // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n\n if (n.node !== p.node) return true; // If the node parent is a block node, and it was the last child of the\n // block, re-render to cleanup extra `\\n`.\n\n if (n.parent.object === 'block') {\n var pLast = p.parent.nodes.last();\n var nLast = n.parent.nodes.last();\n if (p.node === pLast && n.node !== nLast) return true;\n } // Re-render if the current decorations have changed.\n\n\n if (!n.decorations.equals(p.decorations)) return true; // Otherwise, don't update.\n\n return false;\n };\n\n this.renderLeaf = function (leaves, leaf, index, offset) {\n var _props2 = _this3.props,\n block = _props2.block,\n node = _props2.node,\n parent = _props2.parent,\n editor = _props2.editor;\n var text = leaf.text,\n marks = leaf.marks;\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Leaf, {\n key: node.key + '-' + index,\n block: block,\n editor: editor,\n index: index,\n marks: marks,\n node: node,\n offset: offset,\n parent: parent,\n leaves: leaves,\n text: text\n });\n };\n};\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$5 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:void');\n/**\n * Void.\n *\n * @type {Component}\n */\n\nvar Void = function (_React$Component) {\n inherits(Void, _React$Component);\n\n function Void() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Void);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Void.__proto__ || Object.getPrototypeOf(Void)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$2.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n\n createClass(Void, [{\n key: 'render',\n\n /**\n * Render.\n *\n * @return {Element}\n */\n value: function render() {\n var props = this.props;\n var children = props.children,\n node = props.node,\n readOnly = props.readOnly;\n var Tag = node.object === 'block' ? 'div' : 'span';\n var style = {\n height: '0',\n color: 'transparent',\n outline: 'none',\n position: 'absolute'\n };\n var spacer = react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Tag, {\n 'data-slate-spacer': true,\n style: style\n }, this.renderText());\n var content = react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Tag, {\n contentEditable: readOnly ? null : false\n }, children);\n this.debug('render', {\n props: props\n });\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Tag, {\n 'data-slate-void': true,\n 'data-key': node.key,\n contentEditable: readOnly || node.object === 'block' ? null : false\n }, readOnly ? null : spacer, content);\n }\n /**\n * Render the void node's text node, which will catch the cursor when it the\n * void node is navigated to with the arrow keys.\n *\n * Having this text node there means the browser continues to manage the\n * selection natively, so it keeps track of the right offset when moving\n * across the block.\n *\n * @return {Element}\n */\n\n }]);\n return Void;\n}(react__WEBPACK_IMPORTED_MODULE_10___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nVoid.propTypes = {\n block: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].block,\n children: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.any.isRequired,\n editor: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object.isRequired,\n node: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired\n};\n\nvar _initialiseProps$2 = function _initialiseProps() {\n var _this2 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this2.props.node;\n var key = node.key,\n type = node.type;\n var id = key + ' (' + type + ')';\n debug$5.apply(undefined, [message, '' + id].concat(args));\n };\n\n this.renderText = function () {\n var _props = _this2.props,\n block = _props.block,\n decorations = _props.decorations,\n node = _props.node,\n readOnly = _props.readOnly,\n editor = _props.editor;\n var child = node.getFirstText();\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Text, {\n block: node.object === 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n/**\n * Split the decorations in lists of relevant decorations for each child.\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array>}\n */\n\n\nfunction getChildrenDecorations(node, decorations) {\n var activeDecorations = Object(immutable__WEBPACK_IMPORTED_MODULE_14__[\"Set\"])().asMutable();\n var childrenDecorations = [];\n orderChildDecorations(node, decorations).forEach(function (item) {\n if (item.isRangeStart) {\n // Item is a decoration start\n activeDecorations.add(item.decoration);\n } else if (item.isRangeEnd) {\n // item is a decoration end\n activeDecorations.remove(item.decoration);\n } else {\n // Item is a child node\n childrenDecorations.push(activeDecorations.toList());\n }\n });\n return childrenDecorations;\n}\n/**\n * Orders the children of provided node and its decoration endpoints (start, end)\n * so that decorations can be passed only to relevant children (see use in Node.render())\n *\n * @param {Node} node\n * @param {List} decorations\n * @return {Array}\n *\n * where type Item =\n * {\n * child: Node,\n * // Index of the child in its parent\n * index: number\n * }\n * or {\n * // True if this represents the start of the given decoration\n * isRangeStart: boolean,\n * // True if this represents the end of the given decoration\n * isRangeEnd: boolean,\n * decoration: Range\n * }\n */\n\n\nfunction orderChildDecorations(node, decorations) {\n if (decorations.isEmpty()) {\n return node.nodes.toArray().map(function (child, index) {\n return {\n child: child,\n index: index\n };\n });\n } // Map each key to its global order\n\n\n var keyOrders = defineProperty({}, node.key, 0);\n var globalOrder = 1;\n node.forEachDescendant(function (child) {\n keyOrders[child.key] = globalOrder;\n globalOrder = globalOrder + 1;\n });\n var childNodes = node.nodes.toArray();\n var endPoints = childNodes.map(function (child, index) {\n return {\n child: child,\n index: index,\n order: keyOrders[child.key]\n };\n });\n decorations.forEach(function (decoration) {\n // Range start.\n // A rangeStart should be before the child containing its startKey, in order\n // to consider it active before going down the child.\n var startKeyOrder = keyOrders[decoration.start.key];\n var containingChildOrder = startKeyOrder === undefined ? 0 : getContainingChildOrder(childNodes, keyOrders, startKeyOrder);\n endPoints.push({\n isRangeStart: true,\n order: containingChildOrder - 0.5,\n decoration: decoration\n }); // Range end.\n\n var endKeyOrder = (keyOrders[decoration.end.key] || globalOrder) + 0.5;\n endPoints.push({\n isRangeEnd: true,\n order: endKeyOrder,\n decoration: decoration\n });\n });\n return endPoints.sort(function (a, b) {\n return a.order > b.order ? 1 : -1;\n });\n}\n/*\n * Returns the key order of the child right before the given order.\n */\n\n\nfunction getContainingChildOrder(children, keyOrders, order) {\n // Find the first child that is after the given key\n var nextChildIndex = children.findIndex(function (child) {\n return order < keyOrders[child.key];\n });\n\n if (nextChildIndex <= 0) {\n return 0;\n }\n\n var containingChild = children[nextChildIndex - 1];\n return keyOrders[containingChild.key];\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$6 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:node');\n/**\n * Node.\n *\n * @type {Component}\n */\n\nvar Node$1 = function (_React$Component) {\n inherits(Node$$1, _React$Component);\n\n function Node$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Node$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Node$$1.__proto__ || Object.getPrototypeOf(Node$$1)).call.apply(_ref, [this].concat(args))), _this), _initialiseProps$3.call(_this), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Debug.\n *\n * @param {String} message\n * @param {Mixed} ...args\n */\n\n\n createClass(Node$$1, [{\n key: 'shouldComponentUpdate',\n\n /**\n * Should the node update?\n *\n * @param {Object} nextProps\n * @param {Object} value\n * @return {Boolean}\n */\n value: function shouldComponentUpdate(nextProps) {\n var props = this.props;\n var editor = props.editor;\n var shouldUpdate = editor.run('shouldNodeComponentUpdate', props, nextProps);\n var n = nextProps;\n var p = props; // If the `Component` has a custom logic to determine whether the component\n // needs to be updated or not, return true if it returns true. If it returns\n // false, we need to ignore it, because it shouldn't be allowed it.\n\n if (shouldUpdate != null) {\n if (shouldUpdate) {\n return true;\n }\n\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(shouldUpdate !== false, \"Returning false in `shouldNodeComponentUpdate` does not disable Slate's internal `shouldComponentUpdate` logic. If you want to prevent updates, use React's `shouldComponentUpdate` instead.\");\n } // If the `readOnly` status has changed, re-render in case there is any\n // user-land logic that depends on it, like nested editable contents.\n\n\n if (n.readOnly !== p.readOnly) return true; // If the node has changed, update. PERF: There are cases where it will have\n // changed, but it's properties will be exactly the same (eg. copy-paste)\n // which this won't catch. But that's rare and not a drag on performance, so\n // for simplicity we just let them through.\n\n if (n.node !== p.node) return true; // If the selection value of the node or of some of its children has changed,\n // re-render in case there is any user-land logic depends on it to render.\n // if the node is selected update it, even if it was already selected: the\n // selection value of some of its children could have been changed and they\n // need to be rendered again.\n\n if (n.isSelected || p.isSelected) return true;\n if (n.isFocused || p.isFocused) return true; // If the decorations have changed, update.\n\n if (!n.decorations.equals(p.decorations)) return true; // Otherwise, don't update.\n\n return false;\n }\n /**\n * Render.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n this.debug('render', this);\n var _props = this.props,\n editor = _props.editor,\n isSelected = _props.isSelected,\n isFocused = _props.isFocused,\n node = _props.node,\n decorations = _props.decorations,\n parent = _props.parent,\n readOnly = _props.readOnly;\n var value = editor.value;\n var selection = value.selection;\n var indexes = node.getSelectionIndexes(selection, isSelected);\n var decs = decorations.concat(node.getDecorations(editor));\n var childrenDecorations = getChildrenDecorations(node, decs);\n var children = [];\n node.nodes.forEach(function (child, i) {\n var isChildSelected = !!indexes && indexes.start <= i && i < indexes.end;\n children.push(_this2.renderNode(child, isChildSelected, childrenDecorations[i]));\n }); // Attributes that the developer must mix into the element in their\n // custom node renderer component.\n\n var attributes = {\n 'data-key': node.key // If it's a block node with inline children, add the proper `dir` attribute\n // for text direction.\n\n };\n\n if (node.isLeafBlock()) {\n var direction = node.getTextDirection();\n if (direction === 'rtl') attributes.dir = 'rtl';\n }\n\n var props = {\n key: node.key,\n editor: editor,\n isFocused: isFocused,\n isSelected: isSelected,\n node: node,\n parent: parent,\n readOnly: readOnly\n };\n var element = editor.run('renderNode', _extends({}, props, {\n attributes: attributes,\n children: children\n }));\n return editor.query('isVoid', node) ? react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Void, this.props, element) : element;\n }\n /**\n * Render a `child` node.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @param {Array} decorations\n * @return {Element}\n */\n\n }]);\n return Node$$1;\n}(react__WEBPACK_IMPORTED_MODULE_10___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nNode$1.propTypes = {\n block: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].block,\n decorations: react_immutable_proptypes__WEBPACK_IMPORTED_MODULE_13___default.a.list.isRequired,\n editor: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object.isRequired,\n isFocused: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired,\n isSelected: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired,\n node: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n parent: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].node.isRequired,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired\n};\n\nvar _initialiseProps$3 = function _initialiseProps() {\n var _this3 = this;\n\n this.debug = function (message) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var node = _this3.props.node;\n var key = node.key,\n type = node.type;\n debug$6.apply(undefined, [message, key + ' (' + type + ')'].concat(args));\n };\n\n this.renderNode = function (child, isSelected, decorations) {\n var _props2 = _this3.props,\n block = _props2.block,\n editor = _props2.editor,\n node = _props2.node,\n readOnly = _props2.readOnly,\n isFocused = _props2.isFocused;\n var Component = child.object === 'text' ? Text : Node$1;\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Component, {\n block: node.object === 'block' ? node : block,\n decorations: decorations,\n editor: editor,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: node,\n readOnly: readOnly\n });\n };\n};\n/**\n * Find a native DOM range Slate `range`.\n *\n * @param {Range} range\n * @param {Window} win (optional)\n * @return {Object|Null}\n */\n\n\nfunction findDOMRange(range) {\n var win = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : window;\n var anchor = range.anchor,\n focus = range.focus,\n isBackward$$1 = range.isBackward,\n isCollapsed = range.isCollapsed;\n var domAnchor = findDOMPoint(anchor, win);\n var domFocus = isCollapsed ? domAnchor : findDOMPoint(focus, win);\n if (!domAnchor || !domFocus) return null;\n var r = win.document.createRange();\n var start = isBackward$$1 ? domFocus : domAnchor;\n var end = isBackward$$1 ? domAnchor : domFocus;\n r.setStart(start.node, start.offset);\n r.setEnd(end.node, end.offset);\n return r;\n}\n/**\n * CSS overflow values that would cause scrolling.\n *\n * @type {Array}\n */\n\n\nvar OVERFLOWS = ['auto', 'overlay', 'scroll'];\n/**\n * Detect whether we are running IOS version 11\n */\n\nvar IS_IOS_11 = slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_IOS\"] && !!window.navigator.userAgent.match(/os 11_/i);\n/**\n * Find the nearest parent with scrolling, or window.\n *\n * @param {el} Element\n */\n\nfunction findScrollContainer(el, window) {\n var parent = el.parentNode;\n var scroller = void 0;\n\n while (!scroller) {\n if (!parent.parentNode) break;\n var style = window.getComputedStyle(parent);\n var overflowY = style.overflowY;\n\n if (OVERFLOWS.includes(overflowY)) {\n scroller = parent;\n break;\n }\n\n parent = parent.parentNode;\n } // COMPAT: Because Chrome does not allow doucment.body.scrollTop, we're\n // assuming that window.scrollTo() should be used if the scrollable element\n // turns out to be document.body or document.documentElement. This will work\n // unless body is intentionally set to scrollable by restricting its height\n // (e.g. height: 100vh).\n\n\n if (!scroller) {\n return window.document.body;\n }\n\n return scroller;\n}\n/**\n * Scroll the current selection's focus point into view if needed.\n *\n * @param {Selection} selection\n */\n\n\nfunction scrollToSelection(selection) {\n if (IS_IOS_11) return;\n if (!selection.anchorNode) return;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(selection.anchorNode);\n var scroller = findScrollContainer(selection.anchorNode, window);\n var isWindow = scroller === window.document.body || scroller === window.document.documentElement;\n var backward = selection_is_backward__WEBPACK_IMPORTED_MODULE_16___default()(selection);\n var range = selection.getRangeAt(0).cloneRange();\n range.collapse(backward);\n var cursorRect = range.getBoundingClientRect(); // COMPAT: range.getBoundingClientRect() returns 0s in Safari when range is\n // collapsed. Expanding the range by 1 is a relatively effective workaround\n // for vertical scroll, although horizontal may be off by 1 character.\n // https://bugs.webkit.org/show_bug.cgi?id=138949\n // https://bugs.chromium.org/p/chromium/issues/detail?id=435438\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_SAFARI\"]) {\n if (range.collapsed && cursorRect.top === 0 && cursorRect.height === 0) {\n if (range.startOffset === 0) {\n range.setEnd(range.endContainer, 1);\n } else {\n range.setStart(range.startContainer, range.startOffset - 1);\n }\n\n cursorRect = range.getBoundingClientRect();\n\n if (cursorRect.top === 0 && cursorRect.height === 0) {\n if (range.getClientRects().length) {\n cursorRect = range.getClientRects()[0];\n }\n }\n }\n }\n\n var width = void 0;\n var height = void 0;\n var yOffset = void 0;\n var xOffset = void 0;\n var scrollerTop = 0;\n var scrollerLeft = 0;\n var scrollerBordersY = 0;\n var scrollerBordersX = 0;\n var scrollerPaddingTop = 0;\n var scrollerPaddingBottom = 0;\n var scrollerPaddingLeft = 0;\n var scrollerPaddingRight = 0;\n\n if (isWindow) {\n var innerWidth = window.innerWidth,\n innerHeight = window.innerHeight,\n pageYOffset = window.pageYOffset,\n pageXOffset = window.pageXOffset;\n width = innerWidth;\n height = innerHeight;\n yOffset = pageYOffset;\n xOffset = pageXOffset;\n } else {\n var offsetWidth = scroller.offsetWidth,\n offsetHeight = scroller.offsetHeight,\n scrollTop = scroller.scrollTop,\n scrollLeft = scroller.scrollLeft;\n\n var _window$getComputedSt = window.getComputedStyle(scroller),\n borderTopWidth = _window$getComputedSt.borderTopWidth,\n borderBottomWidth = _window$getComputedSt.borderBottomWidth,\n borderLeftWidth = _window$getComputedSt.borderLeftWidth,\n borderRightWidth = _window$getComputedSt.borderRightWidth,\n paddingTop = _window$getComputedSt.paddingTop,\n paddingBottom = _window$getComputedSt.paddingBottom,\n paddingLeft = _window$getComputedSt.paddingLeft,\n paddingRight = _window$getComputedSt.paddingRight;\n\n var scrollerRect = scroller.getBoundingClientRect();\n width = offsetWidth;\n height = offsetHeight;\n scrollerTop = scrollerRect.top + parseInt(borderTopWidth, 10);\n scrollerLeft = scrollerRect.left + parseInt(borderLeftWidth, 10);\n scrollerBordersY = parseInt(borderTopWidth, 10) + parseInt(borderBottomWidth, 10);\n scrollerBordersX = parseInt(borderLeftWidth, 10) + parseInt(borderRightWidth, 10);\n scrollerPaddingTop = parseInt(paddingTop, 10);\n scrollerPaddingBottom = parseInt(paddingBottom, 10);\n scrollerPaddingLeft = parseInt(paddingLeft, 10);\n scrollerPaddingRight = parseInt(paddingRight, 10);\n yOffset = scrollTop;\n xOffset = scrollLeft;\n }\n\n var cursorTop = cursorRect.top + yOffset - scrollerTop;\n var cursorLeft = cursorRect.left + xOffset - scrollerLeft;\n var x = xOffset;\n var y = yOffset;\n\n if (cursorLeft < xOffset) {\n // selection to the left of viewport\n x = cursorLeft - scrollerPaddingLeft;\n } else if (cursorLeft + cursorRect.width + scrollerBordersX > xOffset + width) {\n // selection to the right of viewport\n x = cursorLeft + scrollerBordersX + scrollerPaddingRight - width;\n }\n\n if (cursorTop < yOffset) {\n // selection above viewport\n y = cursorTop - scrollerPaddingTop;\n } else if (cursorTop + cursorRect.height + scrollerBordersY > yOffset + height) {\n // selection below viewport\n y = cursorTop + scrollerBordersY + scrollerPaddingBottom + cursorRect.height - height;\n }\n\n if (isWindow) {\n window.scrollTo(x, y);\n } else {\n scroller.scrollTop = y;\n scroller.scrollLeft = x;\n }\n}\n\nvar FIREFOX_NODE_TYPE_ACCESS_ERROR = /Permission denied to access property \"nodeType\"/;\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$7 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:content');\n/**\n * Separate debug to easily see when the DOM has updated either by render or\n * changing selection.\n *\n * @type {Function}\n */\n\ndebug$7.update = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:update');\n/**\n * Content.\n *\n * @type {Component}\n */\n\nvar Content = function (_React$Component) {\n inherits(Content, _React$Component);\n\n function Content() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Content);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Content.__proto__ || Object.getPrototypeOf(Content)).call.apply(_ref, [this].concat(args))), _this), _this.tmp = {\n isUpdatingSelection: false\n /**\n * Create a set of bound event handlers.\n *\n * @type {Object}\n */\n\n }, _this.handlers = EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = function (event) {\n return _this.onEvent(handler, event);\n };\n\n return obj;\n }, {}), _this.updateSelection = function () {\n var editor = _this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n var isBackward$$1 = selection.isBackward;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(_this.element);\n\n var _native5 = window.getSelection();\n\n var activeElement = window.document.activeElement;\n debug$7.update('updateSelection', {\n selection: selection.toJSON()\n }); // COMPAT: In Firefox, there's a but where `getSelection` can return `null`.\n // https://bugzilla.mozilla.org/show_bug.cgi?id=827585 (2018/11/07)\n\n if (!_native5) {\n return;\n }\n\n var rangeCount = _native5.rangeCount,\n anchorNode = _native5.anchorNode;\n var updated = false; // If the Slate selection is blurred, but the DOM's active element is still\n // the editor, we need to blur it.\n\n if (selection.isBlurred && activeElement === _this.element) {\n _this.element.blur();\n\n updated = true;\n } // If the Slate selection is unset, but the DOM selection has a range\n // selected in the editor, we need to remove the range.\n\n\n if (selection.isUnset && rangeCount && _this.isInEditor(anchorNode)) {\n removeAllRanges(_native5);\n updated = true;\n } // If the Slate selection is focused, but the DOM's active element is not\n // the editor, we need to focus it. We prevent scrolling because we handle\n // scrolling to the correct selection.\n\n\n if (selection.isFocused && activeElement !== _this.element) {\n _this.element.focus({\n preventScroll: true\n });\n\n updated = true;\n } // Otherwise, figure out which DOM nodes should be selected...\n\n\n if (selection.isFocused && selection.isSet) {\n var current = !!rangeCount && _native5.getRangeAt(0);\n\n var range = findDOMRange(selection, window);\n\n if (!range) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(false, 'Unable to find a native DOM range from the current selection.');\n return;\n }\n\n var startContainer = range.startContainer,\n startOffset = range.startOffset,\n endContainer = range.endContainer,\n endOffset = range.endOffset; // If the new range matches the current selection, there is nothing to fix.\n // COMPAT: The native `Range` object always has it's \"start\" first and \"end\"\n // last in the DOM. It has no concept of \"backwards/forwards\", so we have\n // to check both orientations here. (2017/10/31)\n\n if (current) {\n if (startContainer === current.startContainer && startOffset === current.startOffset && endContainer === current.endContainer && endOffset === current.endOffset || startContainer === current.endContainer && startOffset === current.endOffset && endContainer === current.startContainer && endOffset === current.startOffset) {\n return;\n }\n } // Otherwise, set the `isUpdatingSelection` flag and update the selection.\n\n\n updated = true;\n _this.tmp.isUpdatingSelection = true;\n removeAllRanges(_native5); // COMPAT: IE 11 does not support `setBaseAndExtent`. (2018/11/07)\n\n if (_native5.setBaseAndExtent) {\n // COMPAT: Since the DOM range has no concept of backwards/forwards\n // we need to check and do the right thing here.\n if (isBackward$$1) {\n _native5.setBaseAndExtent(range.endContainer, range.endOffset, range.startContainer, range.startOffset);\n } else {\n _native5.setBaseAndExtent(range.startContainer, range.startOffset, range.endContainer, range.endOffset);\n }\n } else {\n _native5.addRange(range);\n } // Scroll to the selection, in case it's out of view.\n\n\n scrollToSelection(_native5); // Then unset the `isUpdatingSelection` flag after a delay, to ensure that\n // it is still set when selection-related events from updating it fire.\n\n setTimeout(function () {\n // COMPAT: In Firefox, it's not enough to create a range, you also need\n // to focus the contenteditable element too. (2016/11/16)\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_FIREFOX\"] && _this.element) {\n _this.element.focus();\n }\n\n _this.tmp.isUpdatingSelection = false;\n });\n }\n\n if (updated) {\n debug$7('updateSelection', {\n selection: selection,\n native: _native5,\n activeElement: activeElement\n });\n debug$7.update('updateSelection-applied', {\n selection: selection\n });\n }\n }, _this.ref = function (element) {\n _this.element = element;\n }, _this.isInEditor = function (target) {\n var _this2 = _this,\n element = _this2.element;\n var el = void 0;\n\n try {\n // COMPAT: In Firefox, sometimes the node can be comment which doesn't\n // have .closest and it crashes.\n if (target.nodeType === 8) {\n return false;\n } // COMPAT: Text nodes don't have `isContentEditable` property. So, when\n // `target` is a text node use its parent node for check.\n\n\n el = target.nodeType === 3 ? target.parentNode : target;\n } catch (err) {\n // COMPAT: In Firefox, `target.nodeType` will throw an error if target is\n // originating from an internal \"restricted\" element (e.g. a stepper\n // arrow on a number input)\n // see github.com/ianstormtaylor/slate/issues/1819\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_FIREFOX\"] && FIREFOX_NODE_TYPE_ACCESS_ERROR.test(err.message)) {\n return false;\n }\n\n throw err;\n }\n\n return el.isContentEditable && (el === element || el.closest('[data-slate-editor]') === element);\n }, _this.onNativeSelectionChange = lodash_throttle__WEBPACK_IMPORTED_MODULE_17___default()(function (event) {\n if (_this.props.readOnly) return;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n var activeElement = window.document.activeElement;\n if (activeElement !== _this.element) return;\n\n _this.props.onEvent('onSelect', event);\n }, 100), _this.renderNode = function (child, isSelected, decorations) {\n var _this$props = _this.props,\n editor = _this$props.editor,\n readOnly = _this$props.readOnly;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var isFocused = selection.isFocused;\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Node$1, {\n block: null,\n editor: editor,\n decorations: decorations,\n isSelected: isSelected,\n isFocused: isFocused && isSelected,\n key: child.key,\n node: child,\n parent: document,\n readOnly: readOnly\n });\n }, _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n\n createClass(Content, [{\n key: 'componentDidMount',\n\n /**\n * When the editor first mounts in the DOM we need to:\n *\n * - Add native DOM event listeners.\n * - Update the selection, in case it starts focused.\n */\n value: function componentDidMount() {\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(this.element);\n window.document.addEventListener('selectionchange', this.onNativeSelectionChange); // COMPAT: Restrict scope of `beforeinput` to clients that support the\n // Input Events Level 2 spec, since they are preventable events.\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"HAS_INPUT_EVENTS_LEVEL_2\"]) {\n this.element.addEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n\n this.updateSelection();\n }\n /**\n * When unmounting, remove DOM event listeners.\n */\n\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(this.element);\n\n if (window) {\n window.document.removeEventListener('selectionchange', this.onNativeSelectionChange);\n }\n\n if (slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"HAS_INPUT_EVENTS_LEVEL_2\"]) {\n this.element.removeEventListener('beforeinput', this.handlers.onBeforeInput);\n }\n }\n /**\n * On update, update the selection.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n debug$7.update('componentDidUpdate');\n this.updateSelection();\n }\n /**\n * Update the native DOM selection to reflect the internal model.\n */\n\n /**\n * The React ref method to set the root content element locally.\n *\n * @param {Element} element\n */\n\n /**\n * Check if an event `target` is fired from within the contenteditable\n * element. This should be false for edits happening in non-contenteditable\n * children, such as void nodes and other nested Slate editors.\n *\n * @param {Element} target\n * @return {Boolean}\n */\n\n }, {\n key: 'onEvent',\n\n /**\n * On `event` with `handler`.\n *\n * @param {String} handler\n * @param {Event} event\n */\n value: function onEvent(handler, event) {\n debug$7('onEvent', handler); // Ignore `onBlur`, `onFocus` and `onSelect` events generated\n // programmatically while updating selection.\n\n if (this.tmp.isUpdatingSelection && (handler === 'onSelect' || handler === 'onBlur' || handler === 'onFocus')) {\n return;\n } // COMPAT: There are situations where a select event will fire with a new\n // native selection that resolves to the same internal position. In those\n // cases we don't need to trigger any changes, since our internal model is\n // already up to date, but we do want to update the native selection again\n // to make sure it is in sync. (2017/10/16)\n //\n // ANDROID: The updateSelection causes issues in Android when you are\n // at the end of a block. The selection ends up to the left of the inserted\n // character instead of to the right. This behavior continues even if\n // you enter more than one character. (2019/01/03)\n\n\n if (!slate_dev_environment__WEBPACK_IMPORTED_MODULE_3__[\"IS_ANDROID\"] && handler === 'onSelect') {\n var editor = this.props.editor;\n var value = editor.value;\n var selection = value.selection;\n var window = get_window__WEBPACK_IMPORTED_MODULE_0___default()(event.target);\n\n var _native6 = window.getSelection();\n\n var range = findRange(_native6, editor);\n\n if (range && range.equals(selection.toRange())) {\n this.updateSelection();\n return;\n }\n } // Don't handle drag and drop events coming from embedded editors.\n\n\n if (handler === 'onDragEnd' || handler === 'onDragEnter' || handler === 'onDragExit' || handler === 'onDragLeave' || handler === 'onDragOver' || handler === 'onDragStart' || handler === 'onDrop') {\n var closest = event.target.closest('[data-slate-editor]');\n\n if (closest !== this.element) {\n return;\n }\n } // Some events require being in editable in the editor, so if the event\n // target isn't, ignore them.\n\n\n if (handler === 'onBeforeInput' || handler === 'onBlur' || handler === 'onCompositionEnd' || handler === 'onCompositionStart' || handler === 'onCopy' || handler === 'onCut' || handler === 'onFocus' || handler === 'onInput' || handler === 'onKeyDown' || handler === 'onKeyUp' || handler === 'onPaste' || handler === 'onSelect') {\n if (!this.isInEditor(event.target)) {\n return;\n }\n }\n\n this.props.onEvent(handler, event);\n }\n /**\n * On native `selectionchange` event, trigger the `onSelect` handler. This is\n * needed to account for React's `onSelect` being non-standard and not firing\n * until after a selection has been released. This causes issues in situations\n * where another change happens while a selection is being made.\n *\n * @param {Event} event\n */\n\n }, {\n key: 'render',\n\n /**\n * Render the editor content.\n *\n * @return {Element}\n */\n value: function render() {\n var _this3 = this;\n\n var props = this.props,\n handlers = this.handlers;\n var id = props.id,\n className = props.className,\n readOnly = props.readOnly,\n editor = props.editor,\n tabIndex = props.tabIndex,\n role = props.role,\n tagName = props.tagName,\n spellCheck = props.spellCheck;\n var value = editor.value;\n var Container = tagName;\n var document = value.document,\n selection = value.selection,\n decorations = value.decorations;\n var indexes = document.getSelectionIndexes(selection);\n var decs = document.getDecorations(editor).concat(decorations);\n var childrenDecorations = getChildrenDecorations(document, decs);\n var children = document.nodes.toArray().map(function (child, i) {\n var isSelected = !!indexes && indexes.start <= i && i < indexes.end;\n return _this3.renderNode(child, isSelected, childrenDecorations[i]);\n });\n\n var style = _extends({\n // Prevent the default outline styles.\n outline: 'none',\n // Preserve adjacent whitespace and new lines.\n whiteSpace: 'pre-wrap',\n // Allow words to break if they are too long.\n wordWrap: 'break-word'\n }, readOnly ? {} : {\n WebkitUserModify: 'read-write-plaintext-only'\n }, props.style);\n\n debug$7('render', {\n props: props\n });\n debug$7.update('render', {\n text: value.document.text,\n selection: value.selection.toJSON(),\n value: value.toJSON()\n });\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Container, _extends({}, handlers, {\n 'data-slate-editor': true,\n ref: this.ref,\n 'data-key': document.key,\n contentEditable: readOnly ? null : true,\n suppressContentEditableWarning: true,\n id: id,\n className: className,\n autoCorrect: props.autoCorrect ? 'on' : 'off',\n spellCheck: spellCheck,\n style: style,\n role: readOnly ? null : role || 'textbox',\n tabIndex: tabIndex // COMPAT: The Grammarly Chrome extension works by changing the DOM out\n // from under `contenteditable` elements, which leads to weird behaviors\n // so we have to disable it like this. (2017/04/24)\n ,\n 'data-gramm': false\n }), children);\n }\n /**\n * Render a `child` node of the document.\n *\n * @param {Node} child\n * @param {Boolean} isSelected\n * @return {Element}\n */\n\n }]);\n return Content;\n}(react__WEBPACK_IMPORTED_MODULE_10___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nContent.propTypes = {\n autoCorrect: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired,\n className: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string,\n editor: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object.isRequired,\n id: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired,\n role: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string,\n spellCheck: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool.isRequired,\n style: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object,\n tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.number,\n tagName: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string\n};\nContent.defaultProps = {\n style: {},\n tagName: 'div'\n};\n/**\n * Props that can be defined by plugins.\n *\n * @type {Array}\n */\n\nvar PROPS = [].concat(toConsumableArray(EVENT_HANDLERS), ['commands', 'decorateNode', 'queries', 'renderEditor', 'renderMark', 'renderNode', 'schema']);\n/**\n * A plugin that adds the React-specific rendering logic to the editor.\n *\n * @param {Object} options\n * @return {Object}\n */\n\nfunction ReactPlugin() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var placeholder = options.placeholder,\n _options$plugins = options.plugins,\n plugins = _options$plugins === undefined ? [] : _options$plugins;\n /**\n * Decorate node.\n *\n * @param {Object} node\n * @param {Editor} editor\n * @param {Function} next\n * @return {Array}\n */\n\n function decorateNode(node, editor, next) {\n return [];\n }\n /**\n * Render editor.\n *\n * @param {Object} props\n * @param {Editor} editor\n * @param {Function} next\n * @return {Element}\n */\n\n\n function renderEditor(props, editor, next) {\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Content, {\n autoCorrect: props.autoCorrect,\n className: props.className,\n editor: editor,\n id: props.id,\n onEvent: function onEvent(handler, event) {\n return editor.run(handler, event);\n },\n readOnly: props.readOnly,\n role: props.role,\n spellCheck: props.spellCheck,\n style: props.style,\n tabIndex: props.tabIndex,\n tagName: props.tagName\n });\n }\n /**\n * Render node.\n *\n * @param {Object} props\n * @param {Editor} editor\n * @param {Function} next\n * @return {Element}\n */\n\n\n function renderNode(props, editor, next) {\n var attributes = props.attributes,\n children = props.children,\n node = props.node;\n var object = node.object;\n if (object !== 'block' && object !== 'inline') return null;\n var Tag = object === 'block' ? 'div' : 'span';\n var style = {\n position: 'relative'\n };\n return react__WEBPACK_IMPORTED_MODULE_10___default.a.createElement(Tag, _extends({}, attributes, {\n style: style\n }), children);\n }\n /**\n * Return the plugins.\n *\n * @type {Array}\n */\n\n\n var ret = [];\n var editorPlugin = PROPS.reduce(function (memo, prop) {\n if (prop in options) memo[prop] = options[prop];\n return memo;\n }, {});\n ret.push(DOMPlugin({\n plugins: [editorPlugin].concat(toConsumableArray(plugins))\n }));\n\n if (placeholder) {\n ret.push(Object(slate_react_placeholder__WEBPACK_IMPORTED_MODULE_18__[\"default\"])({\n placeholder: placeholder,\n when: function when(editor, node) {\n return node.object === 'document' && node.text === '' && node.nodes.size === 1 && node.getTexts().size === 1;\n }\n }));\n }\n\n ret.push({\n decorateNode: decorateNode,\n renderEditor: renderEditor,\n renderNode: renderNode\n });\n return ret;\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$8 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:editor');\n/**\n * Editor.\n *\n * @type {Component}\n */\n\nvar Editor$1 = function (_React$Component) {\n inherits(Editor$$1, _React$Component);\n\n function Editor$$1() {\n var _ref;\n\n var _temp, _this, _ret;\n\n classCallCheck(this, Editor$$1);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = possibleConstructorReturn(this, (_ref = Editor$$1.__proto__ || Object.getPrototypeOf(Editor$$1)).call.apply(_ref, [this].concat(args))), _this), _this.state = {\n value: _this.props.defaultValue\n /**\n * Temporary values.\n *\n * @type {Object}\n */\n\n }, _this.tmp = {\n mounted: false,\n change: null,\n resolves: 0,\n updates: 0\n /**\n * When the component first mounts, flush a queued change if one exists.\n */\n\n }, _this.resolveController = Object(memoize_one__WEBPACK_IMPORTED_MODULE_19__[\"default\"])(function () {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_15__[\"default\"])(_this.tmp.resolves < 5 || _this.tmp.resolves !== _this.tmp.updates, 'A Slate component is re-resolving the `plugins`, `schema`, `commands`, `queries` or `placeholder` prop on each update, which leads to poor performance. This is often due to passing in a new references for these props with each render by declaring them inline in your render function. Do not do this! Declare them outside your render function, or memoize them instead.');\n _this.tmp.resolves++;\n var react = ReactPlugin(_extends({}, _this.props, {\n value: _this.props.value || _this.state.value\n }));\n\n var onChange = function onChange(change) {\n if (_this.tmp.mounted) {\n _this.handleChange(change);\n } else {\n _this.tmp.change = change;\n }\n };\n\n _this.controller = new slate__WEBPACK_IMPORTED_MODULE_2__[\"Editor\"]({\n plugins: [react],\n onChange: onChange\n }, {\n controller: _this,\n construct: false\n });\n\n _this.controller.run('onConstruct');\n }), _temp), possibleConstructorReturn(_this, _ret);\n }\n /**\n * Property types.\n *\n * @type {Object}\n */\n\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n /**\n * Initial state.\n *\n * @type {Object}\n */\n\n\n createClass(Editor$$1, [{\n key: 'componentDidMount',\n value: function componentDidMount() {\n this.tmp.mounted = true;\n this.tmp.updates++;\n\n if (this.props.autoFocus) {\n this.focus();\n }\n\n if (this.tmp.change) {\n this.handleChange(this.tmp.change);\n this.tmp.change = null;\n }\n }\n /**\n * When the component updates, flush a queued change if one exists.\n */\n\n }, {\n key: 'componentDidUpdate',\n value: function componentDidUpdate() {\n this.tmp.updates++;\n\n if (this.tmp.change) {\n this.handleChange(this.tmp.change);\n this.tmp.change = null;\n }\n }\n /**\n * When the component unmounts, make sure async commands don't trigger react updates.\n */\n\n }, {\n key: 'componentWillUnmount',\n value: function componentWillUnmount() {\n this.tmp.mounted = false;\n }\n /**\n * Render the editor.\n *\n * @return {Element}\n */\n\n }, {\n key: 'render',\n value: function render() {\n debug$8('render', this);\n\n var props = _extends({}, this.props, {\n editor: this // Re-resolve the controller if needed based on memoized props.\n\n });\n\n var commands = props.commands,\n placeholder = props.placeholder,\n plugins = props.plugins,\n queries = props.queries,\n schema = props.schema;\n this.resolveController(plugins, schema, commands, queries, placeholder); // Set the current props on the controller.\n\n var options = props.options,\n readOnly = props.readOnly,\n valueFromProps = props.value;\n var valueFromState = this.state.value;\n var value = valueFromProps || valueFromState;\n this.controller.setReadOnly(readOnly);\n this.controller.setValue(value, options); // Render the editor's children with the controller.\n\n var children = this.controller.run('renderEditor', _extends({}, props, {\n value: value\n }));\n return children;\n }\n /**\n * Resolve an editor controller from the passed-in props. This method takes\n * all of the props as individual arguments to be able to properly memoize\n * against anything that could change and invalidate the old editor.\n *\n * @param {Array} plugins\n * @param {Object} schema\n * @param {Object} commands\n * @param {Object} queries\n * @param {String} placeholder\n * @return {Editor}\n */\n\n }, {\n key: 'handleChange',\n value: function handleChange(change) {\n var onChange = this.props.onChange;\n var value = this.state.value;\n\n if (value) {\n // Syncing value inside this component since parent does not want control of it (defaultValue was used)\n this.setState({\n value: change.value\n });\n }\n\n onChange(change);\n }\n /**\n * Mimic the API of the `Editor` controller, so that this component instance\n * can be passed in its place to plugins.\n */\n\n }, {\n key: 'applyOperation',\n value: function applyOperation() {\n var _controller;\n\n return (_controller = this.controller).applyOperation.apply(_controller, arguments);\n }\n }, {\n key: 'command',\n value: function command() {\n var _controller2;\n\n return (_controller2 = this.controller).command.apply(_controller2, arguments);\n }\n }, {\n key: 'hasCommand',\n value: function hasCommand() {\n var _controller3;\n\n return (_controller3 = this.controller).hasCommand.apply(_controller3, arguments);\n }\n }, {\n key: 'hasQuery',\n value: function hasQuery() {\n var _controller4;\n\n return (_controller4 = this.controller).hasQuery.apply(_controller4, arguments);\n }\n }, {\n key: 'normalize',\n value: function normalize() {\n var _controller5;\n\n return (_controller5 = this.controller).normalize.apply(_controller5, arguments);\n }\n }, {\n key: 'query',\n value: function query() {\n var _controller6;\n\n return (_controller6 = this.controller).query.apply(_controller6, arguments);\n }\n }, {\n key: 'registerCommand',\n value: function registerCommand() {\n var _controller7;\n\n return (_controller7 = this.controller).registerCommand.apply(_controller7, arguments);\n }\n }, {\n key: 'registerQuery',\n value: function registerQuery() {\n var _controller8;\n\n return (_controller8 = this.controller).registerQuery.apply(_controller8, arguments);\n }\n }, {\n key: 'run',\n value: function run() {\n var _controller9;\n\n return (_controller9 = this.controller).run.apply(_controller9, arguments);\n }\n }, {\n key: 'withoutNormalizing',\n value: function withoutNormalizing() {\n var _controller10;\n\n return (_controller10 = this.controller).withoutNormalizing.apply(_controller10, arguments);\n }\n /**\n * Deprecated.\n */\n\n }, {\n key: 'call',\n value: function call() {\n var _controller11;\n\n return (_controller11 = this.controller).call.apply(_controller11, arguments);\n }\n }, {\n key: 'change',\n value: function change() {\n var _controller12;\n\n return (_controller12 = this.controller).change.apply(_controller12, arguments);\n }\n }, {\n key: 'onChange',\n value: function onChange() {\n var _controller13;\n\n return (_controller13 = this.controller).onChange.apply(_controller13, arguments);\n }\n }, {\n key: 'applyOperations',\n value: function applyOperations() {\n var _controller14;\n\n return (_controller14 = this.controller).applyOperations.apply(_controller14, arguments);\n }\n }, {\n key: 'setOperationFlag',\n value: function setOperationFlag() {\n var _controller15;\n\n return (_controller15 = this.controller).setOperationFlag.apply(_controller15, arguments);\n }\n }, {\n key: 'getFlag',\n value: function getFlag() {\n var _controller16;\n\n return (_controller16 = this.controller).getFlag.apply(_controller16, arguments);\n }\n }, {\n key: 'unsetOperationFlag',\n value: function unsetOperationFlag() {\n var _controller17;\n\n return (_controller17 = this.controller).unsetOperationFlag.apply(_controller17, arguments);\n }\n }, {\n key: 'withoutNormalization',\n value: function withoutNormalization() {\n var _controller18;\n\n return (_controller18 = this.controller).withoutNormalization.apply(_controller18, arguments);\n }\n }, {\n key: 'operations',\n get: function get$$1() {\n return this.controller.operations;\n }\n }, {\n key: 'readOnly',\n get: function get$$1() {\n return this.controller.readOnly;\n }\n }, {\n key: 'value',\n get: function get$$1() {\n return this.controller.value;\n }\n }, {\n key: 'editor',\n get: function get$$1() {\n return this.controller.editor;\n }\n }, {\n key: 'schema',\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'As of Slate 0.42, the `editor.schema` property no longer exists, and its functionality has been folded into the editor itself. Use the `editor` instead.');\n }\n }, {\n key: 'stack',\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(false, 'As of Slate 0.42, the `editor.stack` property no longer exists, and its functionality has been folded into the editor itself. Use the `editor` instead.');\n }\n }]);\n return Editor$$1;\n}(react__WEBPACK_IMPORTED_MODULE_10___default.a.Component);\n/**\n * Export.\n *\n * @type {Component}\n */\n\n\nEditor$1.propTypes = _extends({\n autoCorrect: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool,\n autoFocus: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool,\n className: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string,\n defaultValue: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].value,\n id: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string,\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.func,\n options: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object,\n placeholder: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.any,\n plugins: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.array,\n readOnly: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool,\n role: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.string,\n schema: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object,\n spellCheck: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.bool,\n style: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.object,\n tabIndex: prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.number,\n value: slate_prop_types__WEBPACK_IMPORTED_MODULE_12__[\"default\"].value\n}, EVENT_HANDLERS.reduce(function (obj, handler) {\n obj[handler] = prop_types__WEBPACK_IMPORTED_MODULE_11___default.a.func;\n return obj;\n}, {}));\nEditor$1.defaultProps = {\n autoFocus: false,\n autoCorrect: true,\n onChange: function onChange() {},\n options: {},\n placeholder: '',\n plugins: [],\n readOnly: false,\n schema: {},\n spellCheck: true\n};\nvar index = {\n Editor: Editor$1,\n cloneFragment: cloneFragment,\n findDOMNode: findDOMNode,\n findDOMRange: findDOMRange,\n findNode: findNode,\n findRange: findRange,\n getEventRange: getEventRange,\n getEventTransfer: getEventTransfer,\n setEventTransfer: setEventTransfer,\n ReactPlugin: ReactPlugin\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n\n//# sourceURL=webpack:///./node_modules/slate-react/lib/slate-react.es.js?"); /***/ }), @@ -19583,7 +19128,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console; // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n\n\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = Object({\"NODE_ENV\":\"production\",\"PUBLIC_URL\":\"\",\"REACT_APP_BASENAME\":\"\",\"REACT_APP_AUTH_SERVER\":\"https://betatoken.dictybase.local\",\"REACT_APP_API_SERVER\":\"https://betaapi.dictybase.local\",\"REACT_APP_GA_TRACKING_ID\":\"\",\"REACT_APP_NAVBAR_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/navbar/navbar.json\",\"REACT_APP_FOOTER_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/footer/footer.json\",\"REACT_APP_DOWNLOAD_TABS_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/downloads/organisms.dev.json\"}).DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/slate-react/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/slate-react/node_modules/debug/src/browser.js?"); +eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console; // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n\n\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = Object({\"NODE_ENV\":\"production\",\"PUBLIC_URL\":\"\",\"REACT_APP_BASENAME\":\"\",\"REACT_APP_AUTH_SERVER\":\"https://betatoken.dictybase.org\",\"REACT_APP_API_SERVER\":\"https://betaapi.dictybase.org\",\"REACT_APP_GA_TRACKING_ID\":\"UA-16352781-8\",\"REACT_APP_NAVBAR_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/navbar/navbar.json\",\"REACT_APP_FOOTER_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/footer/footer.json\",\"REACT_APP_DOWNLOAD_TABS_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/downloads/organisms.staging.json\"}).DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/slate-react/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/slate-react/node_modules/debug/src/browser.js?"); /***/ }), @@ -19599,6 +19144,18 @@ eval("\n/**\n * This is the common logic for both the Node.js and web browser\n /***/ }), +/***/ "./node_modules/slate-react/node_modules/tiny-warning/dist/tiny-warning.esm.js": +/*!*************************************************************************************!*\ + !*** ./node_modules/slate-react/node_modules/tiny-warning/dist/tiny-warning.esm.js ***! + \*************************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nvar isProduction = \"production\" === 'production';\n\nvar index = function index(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n console.warn(message);\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/slate-react/node_modules/tiny-warning/dist/tiny-warning.esm.js?"); + +/***/ }), + /***/ "./node_modules/slate-schema-violations/lib/slate-schema-violations.es.js": /*!********************************************************************************!*\ !*** ./node_modules/slate-schema-violations/lib/slate-schema-violations.es.js ***! @@ -19615,11 +19172,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!********************************************!*\ !*** ./node_modules/slate/lib/slate.es.js ***! \********************************************/ -/*! exports provided: default, Block, Change, Changes, Character, Data, Document, History, Inline, Leaf, Mark, Node, Operation, Operations, Range, Schema, Stack, Text, Value, resetKeyGenerator, setKeyGenerator, resetMemoization, useMemoization */ +/*! exports provided: default, Block, Change, Data, Decoration, Document, Editor, Inline, KeyUtils, Leaf, Mark, Node, Operation, PathUtils, Point, Range, resetMemoization, Selection, Text, TextUtils, useMemoization, Value */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Block\", function() { return Block; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Change\", function() { return Change; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Changes\", function() { return Changes$7; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Character\", function() { return Character; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Data\", function() { return Data; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Document\", function() { return Document; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"History\", function() { return History; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Inline\", function() { return Inline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Leaf\", function() { return Leaf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mark\", function() { return Mark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operation\", function() { return Operation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operations\", function() { return Operations; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Range\", function() { return Range; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Schema\", function() { return Schema; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Stack\", function() { return Stack$1; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return Text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Value\", function() { return Value; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetKeyGenerator\", function() { return resetKeyGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"setKeyGenerator\", function() { return setKeyGenerator; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetMemoization\", function() { return resetMemoization; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useMemoization\", function() { return useMemoization; });\n/* harmony import */ var is_plain_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-plain-object */ \"./node_modules/is-plain-object/index.js\");\n/* harmony import */ var is_plain_object__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_plain_object__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate-dev-logger */ \"./node_modules/slate-dev-logger/lib/slate-dev-logger.es.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var direction__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! direction */ \"./node_modules/direction/index.js\");\n/* harmony import */ var direction__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(direction__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var esrever__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! esrever */ \"./node_modules/esrever/esrever.js\");\n/* harmony import */ var esrever__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(esrever__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! debug */ \"./node_modules/slate/node_modules/debug/src/browser.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! lodash/isEqual */ \"./node_modules/lodash/isEqual.js\");\n/* harmony import */ var lodash_isEqual__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(lodash_isEqual__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_mergeWith__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/mergeWith */ \"./node_modules/lodash/mergeWith.js\");\n/* harmony import */ var lodash_mergeWith__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_mergeWith__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! slate-schema-violations */ \"./node_modules/slate-schema-violations/lib/slate-schema-violations.es.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! lodash/pick */ \"./node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var is_empty__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! is-empty */ \"./node_modules/is-empty/lib/index.js\");\n/* harmony import */ var is_empty__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(is_empty__WEBPACK_IMPORTED_MODULE_11__);\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Slate-specific model types.\n *\n * @type {Object}\n */\n\nvar MODEL_TYPES = {\n BLOCK: '@@__SLATE_BLOCK__@@',\n CHANGE: '@@__SLATE_CHANGE__@@',\n CHARACTER: '@@__SLATE_CHARACTER__@@',\n DOCUMENT: '@@__SLATE_DOCUMENT__@@',\n HISTORY: '@@__SLATE_HISTORY__@@',\n INLINE: '@@__SLATE_INLINE__@@',\n LEAF: '@@__SLATE_LEAF__@@',\n MARK: '@@__SLATE_MARK__@@',\n OPERATION: '@@__SLATE_OPERATION__@@',\n RANGE: '@@__SLATE_RANGE__@@',\n SCHEMA: '@@__SLATE_SCHEMA__@@',\n STACK: '@@__SLATE_STACK__@@',\n TEXT: '@@__SLATE_TEXT__@@',\n VALUE: '@@__SLATE_VALUE__@@'\n /**\n * Export type identification function\n *\n * @param {string} type\n * @param {any} any\n * @return {boolean}\n */\n\n};\n\nfunction isType(type, any) {\n return !!(any && any[MODEL_TYPES[type]]);\n}\n/**\n * An auto-incrementing index for generating keys.\n *\n * @type {Number}\n */\n\n\nvar n = void 0;\n/**\n * The global key generating function.\n *\n * @type {Function}\n */\n\nvar generate = void 0;\n/**\n * Generate a key.\n *\n * @return {String}\n */\n\nfunction generateKey() {\n return generate();\n}\n/**\n * Set a different unique ID generating `function`.\n *\n * @param {Function} func\n */\n\n\nfunction setKeyGenerator(func) {\n generate = func;\n}\n/**\n * Reset the key generating function to its initial state.\n */\n\n\nfunction resetKeyGenerator() {\n n = 0;\n\n generate = function generate() {\n return \"\" + n++;\n };\n}\n/**\n * Set the initial state.\n */\n\n\nresetKeyGenerator();\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar toConsumableArray = function toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n/**\n * Dependencies.\n */\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS = {\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](),\n isVoid: false,\n key: undefined,\n nodes: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](),\n type: undefined\n /**\n * Block.\n *\n * @type {Block}\n */\n\n};\n\nvar Block = function (_Record) {\n inherits(Block, _Record);\n\n function Block() {\n classCallCheck(this, Block);\n return possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).apply(this, arguments));\n }\n\n createClass(Block, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the block.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n type: this.type,\n isVoid: this.isVoid,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'block';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n /**\n * Check if the block is empty.\n * Returns true if block is not void and all it's children nodes are empty.\n * Void node is never empty, regardless of it's content.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return !this.isVoid && !this.nodes.some(function (child) {\n return !child.isEmpty;\n });\n }\n /**\n * Get the concatenated text of all the block's children.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getText();\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Block` from `attrs`.\n *\n * @param {Object|String|Block} attrs\n * @return {Block}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Block.fromJSON(attrs);\n }\n\n throw new Error('`Block.create` only accepts objects, strings or blocks, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Blocks` from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(attrs) || Array.isArray(attrs)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](attrs.map(Block.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n /**\n * Create a `Block` from a JSON `object`.\n *\n * @param {Object|Block} object\n * @return {Block}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Block.isBlock(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$isVoid = object.isVoid,\n isVoid = _object$isVoid === undefined ? false : _object$isVoid,\n _object$key = object.key,\n key = _object$key === undefined ? generateKey() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n if (typeof type != 'string') {\n throw new Error('`Block.fromJSON` requires a `type` string.');\n }\n\n var block = new Block({\n key: key,\n type: type,\n isVoid: !!isVoid,\n data: Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"])(data),\n nodes: Block.createChildren(nodes)\n });\n return block;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Block`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlockList',\n\n /**\n * Check if `any` is a block list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isBlockList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Block.isBlock(item);\n });\n }\n }]);\n return Block;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nBlock.fromJS = Block.fromJSON;\nBlock.isBlock = isType.bind(null, 'BLOCK');\nBlock.prototype[MODEL_TYPES.BLOCK] = true;\n/**\n * Dependencies.\n */\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$1 = {\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](),\n isVoid: false,\n key: undefined,\n nodes: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](),\n type: undefined\n /**\n * Inline.\n *\n * @type {Inline}\n */\n\n};\n\nvar Inline = function (_Record) {\n inherits(Inline, _Record);\n\n function Inline() {\n classCallCheck(this, Inline);\n return possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n createClass(Inline, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the inline.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n type: this.type,\n isVoid: this.isVoid,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'inline';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n /**\n * Check if the inline is empty.\n * Returns true if inline is not void and all it's children nodes are empty.\n * Void node is never empty, regardless of it's content.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return !this.isVoid && !this.nodes.some(function (child) {\n return !child.isEmpty;\n });\n }\n /**\n * Get the concatenated text of all the inline's children.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getText();\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Inline` with `attrs`.\n *\n * @param {Object|String|Inline} attrs\n * @return {Inline}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Inline.isInline(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Inline.fromJSON(attrs);\n }\n\n throw new Error('`Inline.create` only accepts objects, strings or inlines, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Inlines` from an array.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](elements.map(Inline.create));\n return list;\n }\n\n throw new Error('`Inline.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Inline` from a JSON `object`.\n *\n * @param {Object|Inline} object\n * @return {Inline}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Inline.isInline(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$isVoid = object.isVoid,\n isVoid = _object$isVoid === undefined ? false : _object$isVoid,\n _object$key = object.key,\n key = _object$key === undefined ? generateKey() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n if (typeof type != 'string') {\n throw new Error('`Inline.fromJS` requires a `type` string.');\n }\n\n var inline = new Inline({\n key: key,\n type: type,\n isVoid: !!isVoid,\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](data),\n nodes: Inline.createChildren(nodes)\n });\n return inline;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Inline`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isInlineList',\n\n /**\n * Check if `any` is a list of inlines.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isInlineList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Inline.isInline(item);\n });\n }\n }]);\n return Inline;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$1));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nInline.fromJS = Inline.fromJSON;\nInline.isInline = isType.bind(null, 'INLINE');\nInline.prototype[MODEL_TYPES.INLINE] = true;\n/**\n * Data.\n *\n * This isn't an immutable record, it's just a thin wrapper around `Map` so that\n * we can allow for more convenient creation.\n *\n * @type {Object}\n */\n\nvar Data = function () {\n function Data() {\n classCallCheck(this, Data);\n }\n\n createClass(Data, null, [{\n key: 'create',\n\n /**\n * Create a new `Data` with `attrs`.\n *\n * @param {Object|Data|Map} attrs\n * @return {Data} data\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"].isMap(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Data.fromJSON(attrs);\n }\n\n throw new Error('`Data.create` only accepts objects or maps, but you passed it: ' + attrs);\n }\n /**\n * Create a `Data` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Data}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](object);\n }\n /**\n * Alias `fromJS`.\n */\n\n }]);\n return Data;\n}();\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nData.fromJS = Data.fromJSON;\n/**\n * GLOBAL: True if memoization should is enabled.\n *\n * @type {Boolean}\n */\n\nvar ENABLED = true;\n/**\n * GLOBAL: Changing this cache key will clear all previous cached results.\n *\n * @type {Number}\n */\n\nvar CACHE_KEY = 0;\n/**\n * The leaf node of a cache tree. Used to support variable argument length. A\n * unique object, so that native Maps will key it by reference.\n *\n * @type {Object}\n */\n\nvar LEAF = {};\n/**\n * A value to represent a memoized undefined value. Allows efficient value\n * retrieval using Map.get only.\n *\n * @type {Object}\n */\n\nvar UNDEFINED = {};\n/**\n * Default value for unset keys in native Maps\n *\n * @type {Undefined}\n */\n\nvar UNSET = undefined;\n/**\n * Memoize all of the `properties` on a `object`.\n *\n * @param {Object} object\n * @param {Array} properties\n * @return {Record}\n */\n\nfunction memoize(object, properties) {\n var _loop = function _loop(property) {\n var original = object[property];\n\n if (!original) {\n throw new Error(\"Object does not have a property named \\\"\" + property + \"\\\".\");\n }\n\n object[property] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n } // If memoization is disabled, call into the original method.\n\n\n if (!ENABLED) return original.apply(this, args); // If the cache key is different, previous caches must be cleared.\n\n if (CACHE_KEY !== this.__cache_key) {\n this.__cache_key = CACHE_KEY;\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n\n this.__cache_no_args = {};\n }\n\n if (!this.__cache) {\n this.__cache = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n }\n\n if (!this.__cache_no_args) {\n this.__cache_no_args = {};\n }\n\n var takesArguments = args.length !== 0;\n var cachedValue = void 0;\n var keys = void 0;\n\n if (takesArguments) {\n keys = [property].concat(args);\n cachedValue = getIn(this.__cache, keys);\n } else {\n cachedValue = this.__cache_no_args[property];\n } // If we've got a result already, return it.\n\n\n if (cachedValue !== UNSET) {\n return cachedValue === UNDEFINED ? undefined : cachedValue;\n } // Otherwise calculate what it should be once and cache it.\n\n\n var value = original.apply(this, args);\n var v = value === undefined ? UNDEFINED : value;\n\n if (takesArguments) {\n this.__cache = setIn(this.__cache, keys, v);\n } else {\n this.__cache_no_args[property] = v;\n }\n\n return value;\n };\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n\n _loop(property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n/**\n * Get a value at a key path in a tree of Map.\n *\n * If not set, returns UNSET.\n * If the set value is undefined, returns UNDEFINED.\n *\n * @param {Map} map\n * @param {Array} keys\n * @return {Any|UNSET|UNDEFINED}\n */\n\n\nfunction getIn(map, keys) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n map = map.get(key);\n if (map === UNSET) return UNSET;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return map.get(LEAF);\n}\n/**\n * Set a value at a key path in a tree of Map, creating Maps on the go.\n *\n * @param {Map} map\n * @param {Array} keys\n * @param {Any} value\n * @return {Map}\n */\n\n\nfunction setIn(map, keys, value) {\n var parent = map;\n var child = void 0;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = keys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n child = parent.get(key); // If the path was not created yet...\n\n if (child === UNSET) {\n child = new Map(); // eslint-disable-line no-undef,no-restricted-globals\n\n parent.set(key, child);\n }\n\n parent = child;\n } // The whole path has been created, so set the value to the bottom most map.\n\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n child.set(LEAF, value);\n return map;\n}\n/**\n * In DEV mode, clears the previously memoized values, globally.\n *\n * @return {Void}\n */\n\n\nfunction resetMemoization() {\n CACHE_KEY++;\n\n if (CACHE_KEY >= Number.MAX_SAFE_INTEGER) {\n CACHE_KEY = 0;\n }\n}\n/**\n * In DEV mode, enable or disable the use of memoize values, globally.\n *\n * @param {Boolean} enabled\n * @return {Void}\n */\n\n\nfunction useMemoization(enabled) {\n ENABLED = enabled;\n}\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$2 = {\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](),\n type: undefined\n /**\n * Mark.\n *\n * @type {Mark}\n */\n\n};\n\nvar Mark = function (_Record) {\n inherits(Mark, _Record);\n\n function Mark() {\n classCallCheck(this, Mark);\n return possibleConstructorReturn(this, (Mark.__proto__ || Object.getPrototypeOf(Mark)).apply(this, arguments));\n }\n\n createClass(Mark, [{\n key: 'getComponent',\n\n /**\n * Get the component for the node from a `schema`.\n *\n * @param {Schema} schema\n * @return {Component|Void}\n */\n value: function getComponent(schema) {\n return schema.__getComponent(this);\n }\n /**\n * Return a JSON representation of the mark.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON()\n };\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n */\n get: function get$$1() {\n return 'mark';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Mark` with `attrs`.\n *\n * @param {Object|Mark} attrs\n * @return {Mark}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Mark.fromJSON(attrs);\n }\n\n throw new Error('`Mark.create` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n /**\n * Create a set of marks.\n *\n * @param {Array} elements\n * @return {Set}\n */\n\n }, {\n key: 'createSet',\n value: function createSet(elements) {\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"].isSet(elements) || Array.isArray(elements)) {\n var marks = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](elements.map(Mark.create));\n return marks;\n }\n\n if (elements == null) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n }\n\n throw new Error('`Mark.createSet` only accepts sets, arrays or null, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable mark properties from `attrs`.\n *\n * @param {Object|String|Mark} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Mark.createProperties` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n /**\n * Create a `Mark` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Mark}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n type = object.type;\n\n if (typeof type != 'string') {\n throw new Error('`Mark.fromJS` requires a `type` string.');\n }\n\n var mark = new Mark({\n type: type,\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](data)\n });\n return mark;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Mark`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isMarkSet',\n\n /**\n * Check if `any` is a set of marks.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isMarkSet(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"].isSet(any) && any.every(function (item) {\n return Mark.isMark(item);\n });\n }\n }]);\n return Mark;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$2));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nMark.fromJS = Mark.fromJSON;\nMark.isMark = isType.bind(null, 'MARK');\nMark.prototype[MODEL_TYPES.MARK] = true;\n/**\n * Memoize read methods.\n */\n\nmemoize(Mark.prototype, ['getComponent']);\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes = {};\n/**\n * Mix in the changes that pass through to their at-range equivalents because\n * they don't have any effect on the selection.\n */\n\nvar PROXY_TRANSFORMS = ['deleteBackward', 'deleteCharBackward', 'deleteLineBackward', 'deleteWordBackward', 'deleteForward', 'deleteCharForward', 'deleteWordForward', 'deleteLineForward', 'setBlocks', 'setInlines', 'splitInline', 'unwrapBlock', 'unwrapInline', 'wrapBlock', 'wrapInline'];\nPROXY_TRANSFORMS.forEach(function (method) {\n Changes[method] = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var value = change.value;\n var selection = value.selection;\n var methodAtRange = method + 'AtRange';\n change[methodAtRange].apply(change, [selection].concat(args));\n\n if (method.match(/Backward$/)) {\n change.collapseToStart();\n } else if (method.match(/Forward$/)) {\n change.collapseToEnd();\n }\n };\n});\n\nChanges.setBlock = function () {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.33.0', 'The `setBlock` method of Slate changes has been renamed to `setBlocks`.');\n Changes.setBlocks.apply(Changes, arguments);\n};\n\nChanges.setInline = function () {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.33.0', 'The `setInline` method of Slate changes has been renamed to `setInlines`.');\n Changes.setInlines.apply(Changes, arguments);\n};\n/**\n * Add a `mark` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\n\nChanges.addMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n if (selection.isExpanded) {\n change.addMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.add(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks = document.getActiveMarksAtRange(selection).add(mark);\n\n var _sel = selection.set('marks', _marks);\n\n change.select(_sel);\n }\n};\n/**\n * Add a list of `marks` to the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\n\nChanges.addMarks = function (change, marks) {\n marks.forEach(function (mark) {\n return change.addMark(mark);\n });\n};\n/**\n * Delete at the current selection.\n *\n * @param {Change} change\n */\n\n\nChanges.delete = function (change) {\n var value = change.value;\n var selection = value.selection;\n change.deleteAtRange(selection); // Ensure that the selection is collapsed to the start, because in certain\n // cases when deleting across inline nodes, when splitting the inline node the\n // end point of the selection will end up after the split point.\n\n change.collapseToStart();\n};\n/**\n * Insert a `block` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Block} block\n */\n\n\nChanges.insertBlock = function (change, block) {\n block = Block.create(block);\n var value = change.value;\n var selection = value.selection;\n change.insertBlockAtRange(selection, block); // If the node was successfully inserted, update the selection.\n\n var node = change.value.document.getNode(block.key);\n if (node) change.collapseToEndOf(node);\n};\n/**\n * Insert a `fragment` at the current selection.\n *\n * @param {Change} change\n * @param {Document} fragment\n */\n\n\nChanges.insertFragment = function (change, fragment) {\n if (!fragment.nodes.size) return;\n var value = change.value;\n var _value = value,\n document = _value.document,\n selection = _value.selection;\n var _value2 = value,\n startText = _value2.startText,\n endText = _value2.endText,\n startInline = _value2.startInline;\n var lastText = fragment.getLastText();\n var lastInline = fragment.getClosestInline(lastText.key);\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var keys = document.getTexts().map(function (text) {\n return text.key;\n });\n var isAppending = !startInline || selection.hasEdgeAtStartOf(startText) || selection.hasEdgeAtEndOf(endText);\n var isInserting = fragment.hasBlocks(firstChild.key) || fragment.hasBlocks(lastChild.key);\n change.insertFragmentAtRange(selection, fragment);\n value = change.value;\n document = value.document;\n var newTexts = document.getTexts().filter(function (n) {\n return !keys.includes(n.key);\n });\n var newText = isAppending ? newTexts.last() : newTexts.takeLast(2).first();\n\n if (newText && (lastInline || isInserting)) {\n change.select(selection.collapseToEndOf(newText));\n } else if (newText) {\n change.select(selection.collapseToStartOf(newText).move(lastText.text.length));\n } else {\n change.select(selection.collapseToStart().move(lastText.text.length));\n }\n};\n/**\n * Insert an `inline` at the current selection.\n *\n * @param {Change} change\n * @param {String|Object|Inline} inline\n */\n\n\nChanges.insertInline = function (change, inline) {\n inline = Inline.create(inline);\n var value = change.value;\n var selection = value.selection;\n change.insertInlineAtRange(selection, inline); // If the node was successfully inserted, update the selection.\n\n var node = change.value.document.getNode(inline.key);\n if (node) change.collapseToEndOf(node);\n};\n/**\n * Insert a string of `text` with optional `marks` at the current selection.\n *\n * @param {Change} change\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\n\nChanges.insertText = function (change, text, marks) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n marks = marks || selection.marks || document.getInsertMarksAtRange(selection);\n change.insertTextAtRange(selection, text, marks); // If the text was successfully inserted, and the selection had marks on it,\n // unset the selection's marks.\n\n if (selection.marks && document != change.value.document) {\n change.select({\n marks: null\n });\n }\n};\n/**\n * Split the block node at the current selection, to optional `depth`.\n *\n * @param {Change} change\n * @param {Number} depth (optional)\n */\n\n\nChanges.splitBlock = function (change) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var value = change.value;\n var selection = value.selection,\n document = value.document;\n var marks = selection.marks || document.getInsertMarksAtRange(selection);\n change.splitBlockAtRange(selection, depth).collapseToEnd();\n\n if (marks && marks.size !== 0) {\n change.select({\n marks: marks\n });\n }\n};\n/**\n * Remove a `mark` from the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\n\nChanges.removeMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n\n if (selection.isExpanded) {\n change.removeMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.remove(mark);\n var sel = selection.set('marks', marks);\n change.select(sel);\n } else {\n var _marks2 = document.getActiveMarksAtRange(selection).remove(mark);\n\n var _sel2 = selection.set('marks', _marks2);\n\n change.select(_sel2);\n }\n};\n/**\n * Replace an `oldMark` with a `newMark` in the characters in the current selection.\n *\n * @param {Change} change\n * @param {Mark} oldMark\n * @param {Mark} newMark\n */\n\n\nChanges.replaceMark = function (change, oldMark, newMark) {\n change.removeMark(oldMark);\n change.addMark(newMark);\n};\n/**\n * Add or remove a `mark` from the characters in the current selection,\n * depending on whether it's already there.\n *\n * @param {Change} change\n * @param {Mark} mark\n */\n\n\nChanges.toggleMark = function (change, mark) {\n mark = Mark.create(mark);\n var value = change.value;\n var exists = value.activeMarks.has(mark);\n\n if (exists) {\n change.removeMark(mark);\n } else {\n change.addMark(mark);\n }\n};\n/**\n * Wrap the current selection with prefix/suffix.\n *\n * @param {Change} change\n * @param {String} prefix\n * @param {String} suffix\n */\n\n\nChanges.wrapText = function (change, prefix) {\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : prefix;\n var value = change.value;\n var selection = value.selection;\n change.wrapTextAtRange(selection, prefix, suffix); // If the selection was collapsed, it will have moved the start offset too.\n\n if (selection.isCollapsed) {\n change.moveStart(0 - prefix.length);\n } // Adding the suffix will have pushed the end of the selection further on, so\n // we need to move it back to account for this.\n\n\n change.moveEnd(0 - suffix.length); // There's a chance that the selection points moved \"through\" each other,\n // resulting in a now-incorrect selection direction.\n\n if (selection.isForward != change.value.selection.isForward) {\n change.flip();\n }\n};\n/**\n * Dependencies.\n */\n\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$3 = {\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](),\n key: undefined,\n nodes: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]()\n /**\n * Document.\n *\n * @type {Document}\n */\n\n};\n\nvar Document = function (_Record) {\n inherits(Document, _Record);\n\n function Document() {\n classCallCheck(this, Document);\n return possibleConstructorReturn(this, (Document.__proto__ || Object.getPrototypeOf(Document)).apply(this, arguments));\n }\n\n createClass(Document, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the document.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'document';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n /**\n * Check if the document is empty.\n * Returns true if all it's children nodes are empty.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return !this.nodes.some(function (child) {\n return !child.isEmpty;\n });\n }\n /**\n * Get the concatenated text of all the document's children.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getText();\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Document` with `attrs`.\n *\n * @param {Object|Array|List|Text} attrs\n * @return {Document}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Document.isDocument(attrs)) {\n return attrs;\n }\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(attrs) || Array.isArray(attrs)) {\n attrs = {\n nodes: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Document.fromJSON(attrs);\n }\n\n throw new Error('`Document.create` only accepts objects, arrays, lists or documents, but you passed it: ' + attrs);\n }\n /**\n * Create a `Document` from a JSON `object`.\n *\n * @param {Object|Document} object\n * @return {Document}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Document.isDocument(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? generateKey() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes;\n var document = new Document({\n key: key,\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](data),\n nodes: Document.createChildren(nodes)\n });\n return document;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Document`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }]);\n return Document;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$3));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nDocument.fromJS = Document.fromJSON;\nDocument.isDocument = isType.bind(null, 'DOCUMENT');\nDocument.prototype[MODEL_TYPES.DOCUMENT] = true;\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$4 = {\n anchorKey: null,\n anchorOffset: 0,\n focusKey: null,\n focusOffset: 0,\n isBackward: null,\n isFocused: false,\n marks: null,\n isAtomic: false\n /**\n * Range.\n *\n * @type {Range}\n */\n\n};\n\nvar Range = function (_Record) {\n inherits(Range, _Record);\n\n function Range() {\n classCallCheck(this, Range);\n return possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).apply(this, arguments));\n }\n\n createClass(Range, [{\n key: 'hasAnchorAtStartOf',\n\n /**\n * Check whether anchor point of the range is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n value: function hasAnchorAtStartOf(node) {\n // PERF: Do a check for a `0` offset first since it's quickest.\n if (this.anchorOffset != 0) return false;\n var first = getFirst(node);\n return this.anchorKey == first.key;\n }\n /**\n * Check whether anchor point of the range is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasAnchorAtEndOf',\n value: function hasAnchorAtEndOf(node) {\n var last = getLast(node);\n return this.anchorKey == last.key && this.anchorOffset == last.text.length;\n }\n /**\n * Check whether the anchor edge of a range is in a `node` and at an\n * offset between `start` and `end`.\n *\n * @param {Node} node\n * @param {Number} start\n * @param {Number} end\n * @return {Boolean}\n */\n\n }, {\n key: 'hasAnchorBetween',\n value: function hasAnchorBetween(node, start, end) {\n return this.anchorOffset <= end && start <= this.anchorOffset && this.hasAnchorIn(node);\n }\n /**\n * Check whether the anchor edge of a range is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasAnchorIn',\n value: function hasAnchorIn(node) {\n return node.object == 'text' ? node.key == this.anchorKey : this.anchorKey != null && node.hasDescendant(this.anchorKey);\n }\n /**\n * Check whether focus point of the range is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusAtEndOf',\n value: function hasFocusAtEndOf(node) {\n var last = getLast(node);\n return this.focusKey == last.key && this.focusOffset == last.text.length;\n }\n /**\n * Check whether focus point of the range is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusAtStartOf',\n value: function hasFocusAtStartOf(node) {\n if (this.focusOffset != 0) return false;\n var first = getFirst(node);\n return this.focusKey == first.key;\n }\n /**\n * Check whether the focus edge of a range is in a `node` and at an\n * offset between `start` and `end`.\n *\n * @param {Node} node\n * @param {Number} start\n * @param {Number} end\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusBetween',\n value: function hasFocusBetween(node, start, end) {\n return start <= this.focusOffset && this.focusOffset <= end && this.hasFocusIn(node);\n }\n /**\n * Check whether the focus edge of a range is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'hasFocusIn',\n value: function hasFocusIn(node) {\n return node.object == 'text' ? node.key == this.focusKey : this.focusKey != null && node.hasDescendant(this.focusKey);\n }\n /**\n * Check whether the range is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtStartOf',\n value: function isAtStartOf(node) {\n return this.isCollapsed && this.hasAnchorAtStartOf(node);\n }\n /**\n * Check whether the range is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtEndOf',\n value: function isAtEndOf(node) {\n return this.isCollapsed && this.hasAnchorAtEndOf(node);\n }\n /**\n * Focus the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'focus',\n value: function focus() {\n return this.merge({\n isFocused: true\n });\n }\n /**\n * Blur the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'blur',\n value: function blur() {\n return this.merge({\n isFocused: false\n });\n }\n /**\n * Unset the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'deselect',\n value: function deselect() {\n return this.merge({\n anchorKey: null,\n anchorOffset: 0,\n focusKey: null,\n focusOffset: 0,\n isFocused: false,\n isBackward: false\n });\n }\n /**\n * Flip the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'flip',\n value: function flip() {\n return this.merge({\n anchorKey: this.focusKey,\n anchorOffset: this.focusOffset,\n focusKey: this.anchorKey,\n focusOffset: this.anchorOffset,\n isBackward: this.isBackward == null ? null : !this.isBackward\n });\n }\n /**\n * Move the anchor offset `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchor',\n value: function moveAnchor() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var anchorKey = this.anchorKey,\n focusKey = this.focusKey,\n focusOffset = this.focusOffset,\n isBackward = this.isBackward;\n var anchorOffset = this.anchorOffset + n;\n return this.merge({\n anchorOffset: anchorOffset,\n isBackward: anchorKey == focusKey ? anchorOffset > focusOffset : isBackward\n });\n }\n /**\n * Move the anchor offset `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveFocus',\n value: function moveFocus() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n var anchorKey = this.anchorKey,\n anchorOffset = this.anchorOffset,\n focusKey = this.focusKey,\n isBackward = this.isBackward;\n var focusOffset = this.focusOffset + n;\n return this.merge({\n focusOffset: focusOffset,\n isBackward: focusKey == anchorKey ? anchorOffset > focusOffset : isBackward\n });\n }\n /**\n * Move the range's anchor point to a `key` and `offset`.\n *\n * @param {String} key\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorTo',\n value: function moveAnchorTo(key, offset) {\n var anchorKey = this.anchorKey,\n focusKey = this.focusKey,\n focusOffset = this.focusOffset,\n isBackward = this.isBackward;\n return this.merge({\n anchorKey: key,\n anchorOffset: offset,\n isBackward: key == focusKey ? offset > focusOffset : key == anchorKey ? isBackward : null\n });\n }\n /**\n * Move the range's focus point to a `key` and `offset`.\n *\n * @param {String} key\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusTo',\n value: function moveFocusTo(key, offset) {\n var focusKey = this.focusKey,\n anchorKey = this.anchorKey,\n anchorOffset = this.anchorOffset,\n isBackward = this.isBackward;\n return this.merge({\n focusKey: key,\n focusOffset: offset,\n isBackward: key == anchorKey ? anchorOffset > offset : key == focusKey ? isBackward : null\n });\n }\n /**\n * Move the range to `anchorOffset`.\n *\n * @param {Number} anchorOffset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorOffsetTo',\n value: function moveAnchorOffsetTo(anchorOffset) {\n return this.merge({\n anchorOffset: anchorOffset,\n isBackward: this.anchorKey == this.focusKey ? anchorOffset > this.focusOffset : this.isBackward\n });\n }\n /**\n * Move the range to `focusOffset`.\n *\n * @param {Number} focusOffset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusOffsetTo',\n value: function moveFocusOffsetTo(focusOffset) {\n return this.merge({\n focusOffset: focusOffset,\n isBackward: this.anchorKey == this.focusKey ? this.anchorOffset > focusOffset : this.isBackward\n });\n }\n /**\n * Move the range to `anchorOffset` and `focusOffset`.\n *\n * @param {Number} anchorOffset\n * @param {Number} focusOffset (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveOffsetsTo',\n value: function moveOffsetsTo(anchorOffset) {\n var focusOffset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : anchorOffset;\n return this.moveAnchorOffsetTo(anchorOffset).moveFocusOffsetTo(focusOffset);\n }\n /**\n * Move the focus point to the anchor point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToAnchor',\n value: function moveToAnchor() {\n return this.moveFocusTo(this.anchorKey, this.anchorOffset);\n }\n /**\n * Move the anchor point to the focus point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToFocus',\n value: function moveToFocus() {\n return this.moveAnchorTo(this.focusKey, this.focusOffset);\n }\n /**\n * Move the range's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToStartOf',\n value: function moveAnchorToStartOf(node) {\n node = getFirst(node);\n return this.moveAnchorTo(node.key, 0);\n }\n /**\n * Move the range's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToEndOf',\n value: function moveAnchorToEndOf(node) {\n node = getLast(node);\n return this.moveAnchorTo(node.key, node.text.length);\n }\n /**\n * Move the range's focus point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToStartOf',\n value: function moveFocusToStartOf(node) {\n node = getFirst(node);\n return this.moveFocusTo(node.key, 0);\n }\n /**\n * Move the range's focus point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToEndOf',\n value: function moveFocusToEndOf(node) {\n node = getLast(node);\n return this.moveFocusTo(node.key, node.text.length);\n }\n /**\n * Move to the entire range of `start` and `end` nodes.\n *\n * @param {Node} start\n * @param {Node} end (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveToRangeOf',\n value: function moveToRangeOf(start) {\n var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;\n var range = this.isBackward ? this.flip() : this;\n return range.moveAnchorToStartOf(start).moveFocusToEndOf(end);\n }\n /**\n * Normalize the range, relative to a `node`, ensuring that the anchor\n * and focus nodes of the range always refer to leaf text nodes.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n var range = this;\n var anchorKey = range.anchorKey,\n anchorOffset = range.anchorOffset,\n focusKey = range.focusKey,\n focusOffset = range.focusOffset,\n isBackward = range.isBackward;\n var anchorOffsetType = typeof anchorOffset === 'undefined' ? 'undefined' : _typeof(anchorOffset);\n var focusOffsetType = typeof focusOffset === 'undefined' ? 'undefined' : _typeof(focusOffset);\n\n if (anchorOffsetType != 'number' || focusOffsetType != 'number') {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn('The range offsets should be numbers, but they were of type \"' + anchorOffsetType + '\" and \"' + focusOffsetType + '\".');\n } // If the range is unset, make sure it is properly zeroed out.\n\n\n if (anchorKey == null || focusKey == null) {\n return range.merge({\n anchorKey: null,\n anchorOffset: 0,\n focusKey: null,\n focusOffset: 0,\n isBackward: false\n });\n } // Get the anchor and focus nodes.\n\n\n var anchorNode = node.getDescendant(anchorKey);\n var focusNode = node.getDescendant(focusKey); // If the range is malformed, warn and zero it out.\n\n if (!anchorNode || !focusNode) {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn('The range was invalid and was reset. The range in question was:', range);\n var first = node.getFirstText();\n return range.merge({\n anchorKey: first ? first.key : null,\n anchorOffset: 0,\n focusKey: first ? first.key : null,\n focusOffset: 0,\n isBackward: false\n });\n } // If the anchor node isn't a text node, match it to one.\n\n\n if (anchorNode.object != 'text') {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn('The range anchor was set to a Node that is not a Text node. This should not happen and can degrade performance. The node in question was:', anchorNode);\n var anchorText = anchorNode.getTextAtOffset(anchorOffset);\n var offset = anchorNode.getOffset(anchorText.key);\n anchorOffset = anchorOffset - offset;\n anchorNode = anchorText;\n } // If the focus node isn't a text node, match it to one.\n\n\n if (focusNode.object != 'text') {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].warn('The range focus was set to a Node that is not a Text node. This should not happen and can degrade performance. The node in question was:', focusNode);\n var focusText = focusNode.getTextAtOffset(focusOffset);\n\n var _offset = focusNode.getOffset(focusText.key);\n\n focusOffset = focusOffset - _offset;\n focusNode = focusText;\n } // If `isBackward` is not set, derive it.\n\n\n if (isBackward == null) {\n if (anchorNode.key === focusNode.key) {\n isBackward = anchorOffset > focusOffset;\n } else {\n isBackward = !node.areDescendantsSorted(anchorNode.key, focusNode.key);\n }\n } // Merge in any updated properties.\n\n\n return range.merge({\n anchorKey: anchorNode.key,\n anchorOffset: anchorOffset,\n focusKey: focusNode.key,\n focusOffset: focusOffset,\n isBackward: isBackward\n });\n }\n /**\n * Return a JSON representation of the range.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n anchorKey: this.anchorKey,\n anchorOffset: this.anchorOffset,\n focusKey: this.focusKey,\n focusOffset: this.focusOffset,\n isBackward: this.isBackward,\n isFocused: this.isFocused,\n marks: this.marks == null ? null : this.marks.toArray().map(function (m) {\n return m.toJSON();\n }),\n isAtomic: this.isAtomic\n };\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'range';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n /**\n * Check whether the range is blurred.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlurred',\n get: function get$$1() {\n return !this.isFocused;\n }\n /**\n * Check whether the range is collapsed.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isCollapsed',\n get: function get$$1() {\n return this.anchorKey == this.focusKey && this.anchorOffset == this.focusOffset;\n }\n /**\n * Check whether the range is expanded.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return !this.isCollapsed;\n }\n /**\n * Check whether the range is forward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n return this.isBackward == null ? null : !this.isBackward;\n }\n /**\n * Check whether the range's keys are set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isSet',\n get: function get$$1() {\n return this.anchorKey != null && this.focusKey != null;\n }\n /**\n * Check whether the range's keys are not set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n return !this.isSet;\n }\n /**\n * Get the start key.\n *\n * @return {String}\n */\n\n }, {\n key: 'startKey',\n get: function get$$1() {\n return this.isBackward ? this.focusKey : this.anchorKey;\n }\n /**\n * Get the start offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'startOffset',\n get: function get$$1() {\n return this.isBackward ? this.focusOffset : this.anchorOffset;\n }\n /**\n * Get the end key.\n *\n * @return {String}\n */\n\n }, {\n key: 'endKey',\n get: function get$$1() {\n return this.isBackward ? this.anchorKey : this.focusKey;\n }\n /**\n * Get the end offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'endOffset',\n get: function get$$1() {\n return this.isBackward ? this.anchorOffset : this.focusOffset;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Range` with `attrs`.\n *\n * @param {Object|Range} attrs\n * @return {Range}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Range.fromJSON(attrs);\n }\n\n throw new Error('`Range.create` only accepts objects or ranges, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](elements.map(Range.create));\n return list;\n }\n\n throw new Error('`Range.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable range properties from `attrs`.\n *\n * @param {Object|String|Range} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(attrs)) {\n return {\n anchorKey: attrs.anchorKey,\n anchorOffset: attrs.anchorOffset,\n focusKey: attrs.focusKey,\n focusOffset: attrs.focusOffset,\n isBackward: attrs.isBackward,\n isFocused: attrs.isFocused,\n marks: attrs.marks,\n isAtomic: attrs.isAtomic\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var props = {};\n if ('anchorKey' in attrs) props.anchorKey = attrs.anchorKey;\n if ('anchorOffset' in attrs) props.anchorOffset = attrs.anchorOffset;\n if ('anchorPath' in attrs) props.anchorPath = attrs.anchorPath;\n if ('focusKey' in attrs) props.focusKey = attrs.focusKey;\n if ('focusOffset' in attrs) props.focusOffset = attrs.focusOffset;\n if ('focusPath' in attrs) props.focusPath = attrs.focusPath;\n if ('isBackward' in attrs) props.isBackward = attrs.isBackward;\n if ('isFocused' in attrs) props.isFocused = attrs.isFocused;\n if ('marks' in attrs) props.marks = attrs.marks == null ? null : Mark.createSet(attrs.marks);\n if ('isAtomic' in attrs) props.isAtomic = attrs.isAtomic;\n return props;\n }\n\n throw new Error('`Range.createProperties` only accepts objects or ranges, but you passed it: ' + attrs);\n }\n /**\n * Create a `Range` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Range}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$anchorKey = object.anchorKey,\n anchorKey = _object$anchorKey === undefined ? null : _object$anchorKey,\n _object$anchorOffset = object.anchorOffset,\n anchorOffset = _object$anchorOffset === undefined ? 0 : _object$anchorOffset,\n _object$focusKey = object.focusKey,\n focusKey = _object$focusKey === undefined ? null : _object$focusKey,\n _object$focusOffset = object.focusOffset,\n focusOffset = _object$focusOffset === undefined ? 0 : _object$focusOffset,\n _object$isBackward = object.isBackward,\n isBackward = _object$isBackward === undefined ? null : _object$isBackward,\n _object$isFocused = object.isFocused,\n isFocused = _object$isFocused === undefined ? false : _object$isFocused,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? null : _object$marks,\n _object$isAtomic = object.isAtomic,\n isAtomic = _object$isAtomic === undefined ? false : _object$isAtomic;\n var range = new Range({\n anchorKey: anchorKey,\n anchorOffset: anchorOffset,\n focusKey: focusKey,\n focusOffset: focusOffset,\n isBackward: isBackward,\n isFocused: isFocused,\n marks: marks == null ? null : new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](marks.map(Mark.fromJSON)),\n isAtomic: isAtomic\n });\n return range;\n }\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isRange',\n\n /**\n * Check if an `obj` is a `Range`.\n *\n * @param {Any} obj\n * @return {Boolean}\n */\n value: function isRange(obj) {\n return !!(obj && obj[MODEL_TYPES.RANGE]);\n }\n }]);\n return Range;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$4));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nRange.fromJS = Range.fromJSON;\nRange.prototype[MODEL_TYPES.RANGE] = true;\n/**\n * Mix in some \"move\" convenience methods.\n */\n\nvar MOVE_METHODS = [['move', ''], ['move', 'To'], ['move', 'ToStartOf'], ['move', 'ToEndOf']];\nMOVE_METHODS.forEach(function (_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n p = _ref2[0],\n s = _ref2[1];\n\n Range.prototype['' + p + s] = function () {\n var _ref3;\n\n return (_ref3 = this[p + 'Anchor' + s].apply(this, arguments))[p + 'Focus' + s].apply(_ref3, arguments);\n };\n});\n/**\n * Mix in the \"start\", \"end\" and \"edge\" convenience methods.\n */\n\nvar EDGE_METHODS = [['has', 'AtStartOf', true], ['has', 'AtEndOf', true], ['has', 'Between', true], ['has', 'In', true], ['collapseTo', ''], ['move', ''], ['moveTo', ''], ['move', 'To'], ['move', 'OffsetTo']];\nEDGE_METHODS.forEach(function (_ref4) {\n var _ref5 = slicedToArray(_ref4, 3),\n p = _ref5[0],\n s = _ref5[1],\n hasEdge = _ref5[2];\n\n var anchor = p + 'Anchor' + s;\n var focus = p + 'Focus' + s;\n\n Range.prototype[p + 'Start' + s] = function () {\n return this.isBackward ? this[focus].apply(this, arguments) : this[anchor].apply(this, arguments);\n };\n\n Range.prototype[p + 'End' + s] = function () {\n return this.isBackward ? this[anchor].apply(this, arguments) : this[focus].apply(this, arguments);\n };\n\n if (hasEdge) {\n Range.prototype[p + 'Edge' + s] = function () {\n return this[anchor].apply(this, arguments) || this[focus].apply(this, arguments);\n };\n }\n});\n/**\n * Mix in some aliases for convenience / parallelism with the browser APIs.\n */\n\nvar ALIAS_METHODS = [['collapseTo', 'moveTo'], ['collapseToAnchor', 'moveToAnchor'], ['collapseToFocus', 'moveToFocus'], ['collapseToStart', 'moveToStart'], ['collapseToEnd', 'moveToEnd'], ['collapseToStartOf', 'moveToStartOf'], ['collapseToEndOf', 'moveToEndOf'], ['extend', 'moveFocus'], ['extendTo', 'moveFocusTo'], ['extendToStartOf', 'moveFocusToStartOf'], ['extendToEndOf', 'moveFocusToEndOf']];\nALIAS_METHODS.forEach(function (_ref6) {\n var _ref7 = slicedToArray(_ref6, 2),\n alias = _ref7[0],\n method = _ref7[1];\n\n Range.prototype[alias] = function () {\n return this[method].apply(this, arguments);\n };\n});\n/**\n * Get the first text of a `node`.\n *\n * @param {Node} node\n * @return {Text}\n */\n\nfunction getFirst(node) {\n return node.object == 'text' ? node : node.getFirstText();\n}\n/**\n * Get the last text of a `node`.\n *\n * @param {Node} node\n * @return {Text}\n */\n\n\nfunction getLast(node) {\n return node.object == 'text' ? node : node.getLastText();\n}\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$5 = {\n marks: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](),\n text: ''\n /**\n * Character.\n *\n * @type {Character}\n */\n\n};\n\nvar Character = function (_Record) {\n inherits(Character, _Record);\n\n function Character() {\n classCallCheck(this, Character);\n return possibleConstructorReturn(this, (Character.__proto__ || Object.getPrototypeOf(Character)).apply(this, arguments));\n }\n\n createClass(Character, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the character.\n *\n * @return {Object}\n */\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'character';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a `Character` with `attrs`.\n *\n * @param {Object|String|Character} attrs\n * @return {Character}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Character.isCharacter(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = {\n text: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Character.fromJSON(attrs);\n }\n\n throw new Error('`Character.create` only accepts objects, strings or characters, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Characters` from `elements`.\n *\n * @param {String|Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (typeof elements == 'string') {\n elements = elements.split('');\n }\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](elements.map(Character.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts strings, arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Character` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Character}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var text = object.text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n\n if (typeof text != 'string') {\n throw new Error('`Character.fromJSON` requires a block `text` string.');\n }\n\n var character = new Character({\n text: text,\n marks: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](marks)\n });\n return character;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Character`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isCharacterList',\n\n /**\n * Check if `any` is a character list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isCharacterList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Character.isCharacter(item);\n });\n }\n }]);\n return Character;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$5));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nCharacter.fromJS = Character.fromJSON;\nCharacter.isCharacter = isType.bind(null, 'CHARACTER');\nCharacter.prototype[MODEL_TYPES.CHARACTER] = true;\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$6 = {\n marks: Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])(),\n text: ''\n /**\n * Leaf.\n *\n * @type {Leaf}\n */\n\n};\n\nvar Leaf = function (_Record) {\n inherits(Leaf, _Record);\n\n function Leaf() {\n classCallCheck(this, Leaf);\n return possibleConstructorReturn(this, (Leaf.__proto__ || Object.getPrototypeOf(Leaf)).apply(this, arguments));\n }\n\n createClass(Leaf, [{\n key: 'getCharacters',\n\n /**\n * Return leaf as a list of characters\n *\n * @return {List}\n */\n value: function getCharacters() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.34.0', 'The `characters` property of Slate objects is deprecated');\n var marks = this.marks;\n var characters = Character.createList(this.text.split('').map(function (char) {\n return Character.create({\n text: char,\n marks: marks\n });\n }));\n return characters;\n }\n /**\n * Update a `mark` at leaf, replace with newMark\n *\n * @param {Mark} mark\n * @param {Mark} newMark\n * @returns {Leaf}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(mark, newMark) {\n var marks = this.marks;\n if (newMark.equals(mark)) return this;\n if (!marks.has(mark)) return this;\n var newMarks = marks.withMutations(function (collection) {\n collection.remove(mark).add(newMark);\n });\n return this.set('marks', newMarks);\n }\n /**\n * Add a `set` of marks at `index` and `length`.\n *\n * @param {Set} set\n * @returns {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(set$$1) {\n var marks = this.marks;\n return this.set('marks', marks.union(set$$1));\n }\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(mark) {\n var marks = this.marks;\n return this.set('marks', marks.remove(mark));\n }\n /**\n * Return a JSON representation of the leaf.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'leaf';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Leaf` with `attrs`.\n *\n * @param {Object|Leaf} attrs\n * @return {Leaf}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Leaf.isLeaf(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = {\n text: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Leaf.fromJSON(attrs);\n }\n\n throw new Error('`Leaf.create` only accepts objects, strings or leaves, but you passed it: ' + attrs);\n }\n /**\n * Create a valid List of `Leaf` from `leaves`\n *\n * @param {List} leaves\n * @return {List}\n */\n\n }, {\n key: 'createLeaves',\n value: function createLeaves(leaves) {\n if (leaves.size <= 1) return leaves;\n var invalid = false; // TODO: we can make this faster with [List] and then flatten\n\n var result = Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])().withMutations(function (cache) {\n // Search from the leaves left end to find invalid node;\n leaves.findLast(function (leaf, index) {\n var firstLeaf = cache.first(); // If the first leaf of cache exist, check whether the first leaf is connectable with the current leaf\n\n if (firstLeaf) {\n // If marks equals, then the two leaves can be connected\n if (firstLeaf.marks.equals(leaf.marks)) {\n invalid = true;\n cache.set(0, firstLeaf.set('text', '' + leaf.text + firstLeaf.text));\n return;\n } // If the cached leaf is empty, drop the empty leaf with the upcoming leaf\n\n\n if (firstLeaf.text === '') {\n invalid = true;\n cache.set(0, leaf);\n return;\n } // If the current leaf is empty, drop the leaf\n\n\n if (leaf.text === '') {\n invalid = true;\n return;\n }\n }\n\n cache.unshift(leaf);\n });\n });\n if (!invalid) return leaves;\n return result;\n }\n /**\n * Split a list of leaves to two lists; if the leaves are valid leaves, the returned leaves are also valid\n * Corner Cases:\n * 1. if offset is smaller than 0, then return [List(), leaves]\n * 2. if offset is bigger than the text length, then return [leaves, List()]\n *\n * @param {List leaves\n * @return {Array>}\n */\n\n }, {\n key: 'splitLeaves',\n value: function splitLeaves(leaves, offset) {\n if (offset < 0) return [Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])(), leaves];\n\n if (leaves.size === 0) {\n return [Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])(), Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])()];\n }\n\n var endOffset = 0;\n var index = -1;\n var left = void 0,\n right = void 0;\n leaves.find(function (leaf) {\n index++;\n var startOffset = endOffset;\n var text = leaf.text;\n endOffset += text.length;\n if (endOffset < offset) return false;\n if (startOffset > offset) return false;\n var length = offset - startOffset;\n left = leaf.set('text', text.slice(0, length));\n right = leaf.set('text', text.slice(length));\n return true;\n });\n if (!left) return [leaves, Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])()];\n\n if (left.text === '') {\n if (index === 0) {\n return [immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(left), leaves];\n }\n\n return [leaves.take(index), leaves.skip(index)];\n }\n\n if (right.text === '') {\n if (index === leaves.size - 1) {\n return [leaves, immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(right)];\n }\n\n return [leaves.take(index + 1), leaves.skip(index + 1)];\n }\n\n return [leaves.take(index).push(left), leaves.skip(index + 1).unshift(right)];\n }\n /**\n * Create a `Leaf` list from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(attrs) || Array.isArray(attrs)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](attrs.map(Leaf.create));\n return list;\n }\n\n throw new Error('`Leaf.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n /**\n * Create a `Leaf` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Leaf}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$text = object.text,\n text = _object$text === undefined ? '' : _object$text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n var leaf = new Leaf({\n text: text,\n marks: Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])(marks.map(Mark.fromJSON))\n });\n return leaf;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Leaf`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafList',\n\n /**\n * Check if `any` is a list of leaves.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isLeafList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Leaf.isLeaf(item);\n });\n }\n }]);\n return Leaf;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$6));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nLeaf.fromJS = Leaf.fromJSON;\nLeaf.isLeaf = isType.bind(null, 'LEAF');\nLeaf.prototype[MODEL_TYPES.LEAF] = true;\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$7 = {\n leaves: Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])(),\n key: undefined\n /**\n * Text.\n *\n * @type {Text}\n */\n\n};\n\nvar Text = function (_Record) {\n inherits(Text, _Record);\n\n function Text() {\n classCallCheck(this, Text);\n return possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).apply(this, arguments));\n }\n\n createClass(Text, [{\n key: 'getString',\n\n /**\n * Get the concatenated text of the node, cached for text getter\n *\n * @returns {String}\n */\n value: function getString() {\n return this.leaves.reduce(function (string, leaf) {\n return string + leaf.text;\n }, '');\n }\n /**\n * Get the concatenated characters of the node;\n *\n * @returns {String}\n */\n\n }, {\n key: 'searchLeafAtOffset',\n\n /**\n * Find the 'first' leaf at offset; By 'first' the alorighthm prefers `endOffset === offset` than `startOffset === offset`\n * Corner Cases:\n * 1. if offset is negative, return the first leaf;\n * 2. if offset is larger than text length, the leaf is null, startOffset, endOffset and index is of the last leaf\n *\n * @param {number}\n * @returns {Object}\n * @property {number} startOffset\n * @property {number} endOffset\n * @property {number} index\n * @property {Leaf} leaf\n */\n value: function searchLeafAtOffset(offset) {\n var endOffset = 0;\n var startOffset = 0;\n var index = -1;\n var leaf = this.leaves.find(function (l) {\n index++;\n startOffset = endOffset;\n endOffset = startOffset + l.text.length;\n return endOffset >= offset;\n });\n return {\n leaf: leaf,\n endOffset: endOffset,\n index: index,\n startOffset: startOffset\n };\n }\n /**\n * Add a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(index, length, mark) {\n var marks = immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"].of(mark);\n return this.addMarks(index, length, marks);\n }\n /**\n * Add a `set` of marks at `index` and `length`.\n * Corner Cases:\n * 1. If empty text, and if length === 0 and index === 0, will make sure the text contain an empty leaf with the given mark.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Set} set\n * @return {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(index, length, set$$1) {\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves = this.leaves;\n\n var first = _leaves.first();\n\n if (!first) {\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(Leaf.fromJSON({\n text: '',\n marks: set$$1\n })));\n }\n\n var newFirst = first.addMarks(set$$1);\n if (newFirst === first) return this;\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(newFirst));\n }\n\n if (this.text === '') return this;\n if (length === 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves2 = slicedToArray(_Leaf$splitLeaves, 2),\n before = _Leaf$splitLeaves2[0],\n bundle = _Leaf$splitLeaves2[1];\n\n var _Leaf$splitLeaves3 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves4 = slicedToArray(_Leaf$splitLeaves3, 2),\n middle = _Leaf$splitLeaves4[0],\n after = _Leaf$splitLeaves4[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.addMarks(set$$1);\n }), after);\n return this.setLeaves(leaves);\n }\n /**\n * Get the decorations for the node from a `schema`.\n *\n * @param {Schema} schema\n * @return {Array}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(schema) {\n return schema.__getDecorations(this);\n }\n /**\n * Derive the leaves for a list of `decorations`.\n *\n * @param {Array|Void} decorations (optional)\n * @return {List}\n */\n\n }, {\n key: 'getLeaves',\n value: function getLeaves() {\n var _this2 = this;\n\n var decorations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var leaves = this.leaves;\n if (leaves.size === 0) return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(Leaf.create({}));\n if (!decorations || decorations.length === 0) return leaves;\n if (this.text.length === 0) return leaves;\n var key = this.key;\n decorations.forEach(function (range) {\n var startKey = range.startKey,\n endKey = range.endKey,\n startOffset = range.startOffset,\n endOffset = range.endOffset,\n marks = range.marks;\n var hasStart = startKey == key;\n var hasEnd = endKey == key;\n\n if (hasStart && hasEnd) {\n var index = hasStart ? startOffset : 0;\n var length = hasEnd ? endOffset - index : _this2.text.length - index;\n if (length < 1) return;\n if (index >= _this2.text.length) return;\n\n if (index !== 0 || length < _this2.text.length) {\n var _Leaf$splitLeaves5 = Leaf.splitLeaves(leaves, index),\n _Leaf$splitLeaves6 = slicedToArray(_Leaf$splitLeaves5, 2),\n before = _Leaf$splitLeaves6[0],\n bundle = _Leaf$splitLeaves6[1];\n\n var _Leaf$splitLeaves7 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves8 = slicedToArray(_Leaf$splitLeaves7, 2),\n middle = _Leaf$splitLeaves8[0],\n after = _Leaf$splitLeaves8[1];\n\n leaves = before.concat(middle.map(function (x) {\n return x.addMarks(marks);\n }), after);\n return;\n }\n }\n\n leaves = leaves.map(function (x) {\n return x.addMarks(marks);\n });\n });\n if (leaves === this.leaves) return leaves;\n return Leaf.createLeaves(leaves);\n }\n /**\n * Get all of the active marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarksBetweenOffsets',\n value: function getActiveMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getActiveMarks();\n }\n\n if (startOffset >= endOffset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])(); // For empty text in a paragraph, use getActiveMarks;\n\n if (this.text === '') return this.getActiveMarks();\n var result = null;\n var leafEnd = 0;\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.intersect(leaf.marks);\n if (result && result.size === 0) return false;\n return false;\n });\n return result || Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n }\n /**\n * Get all of the active marks on the text\n *\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarks',\n value: function getActiveMarks() {\n var _this3 = this;\n\n if (this.leaves.size === 0) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n var result = this.leaves.first().marks;\n if (result.size === 0) return result;\n return result.withMutations(function (x) {\n _this3.leaves.forEach(function (c) {\n x.intersect(c.marks);\n if (x.size === 0) return false;\n });\n });\n }\n /**\n * Get all of the marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getMarksBetweenOffsets',\n value: function getMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getMarks();\n }\n\n if (startOffset >= endOffset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])(); // For empty text in a paragraph, use getActiveMarks;\n\n if (this.text === '') return this.getActiveMarks();\n var result = null;\n var leafEnd = 0;\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.union(leaf.marks);\n });\n return result || Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n }\n /**\n * Get all of the marks on the text.\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"](array);\n }\n /**\n * Get all of the marks on the text as an array\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n if (this.leaves.size === 0) return [];\n var first = this.leaves.first().marks;\n if (this.leaves.size === 1) return first.toArray();\n var result = [];\n this.leaves.forEach(function (leaf) {\n result.push(leaf.marks.toArray());\n });\n return Array.prototype.concat.apply(first.toArray(), result);\n }\n /**\n * Get the marks on the text at `index`.\n * Corner Cases:\n * 1. if no text is before the index, and index !== 0, then return Set()\n * 2. (for insert after split node or mark at range) if index === 0, and text === '', then return the leaf.marks\n * 3. if index === 0, text !== '', return Set()\n *\n *\n * @param {Number} index\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtIndex',\n value: function getMarksAtIndex(index) {\n var _searchLeafAtOffset = this.searchLeafAtOffset(index),\n leaf = _searchLeafAtOffset.leaf;\n\n if (!leaf) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n return leaf.marks;\n }\n /**\n * Get a node by `key`, to parallel other nodes.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(key) {\n return this.key == key ? this : null;\n }\n /**\n * Check if the node has a node by `key`, to parallel other nodes.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(key) {\n return !!this.getNode(key);\n }\n /**\n * Insert `text` at `index`.\n *\n * @param {Numbder} offset\n * @param {String} text\n * @param {Set} marks (optional)\n * @return {Text}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(offset, text, marks) {\n if (this.text === '') {\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(Leaf.create({\n text: text,\n marks: marks\n })));\n }\n\n if (text.length === 0) return this;\n if (!marks) marks = Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n\n var _searchLeafAtOffset2 = this.searchLeafAtOffset(offset),\n startOffset = _searchLeafAtOffset2.startOffset,\n leaf = _searchLeafAtOffset2.leaf,\n index = _searchLeafAtOffset2.index;\n\n var delta = offset - startOffset;\n var beforeText = leaf.text.slice(0, delta);\n var afterText = leaf.text.slice(delta);\n var leaves = this.leaves;\n\n if (leaf.marks.equals(marks)) {\n return this.set('leaves', leaves.set(index, leaf.set('text', beforeText + text + afterText)));\n }\n\n var nextLeaves = leaves.splice(index, 1, leaf.set('text', beforeText), Leaf.create({\n text: text,\n marks: marks\n }), leaf.set('text', afterText));\n return this.setLeaves(nextLeaves);\n }\n /**\n * Regenerate the node's key.\n *\n * @return {Text}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = generateKey();\n return this.set('key', key);\n }\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(index, length, mark) {\n if (this.text === '' && index === 0 && length === 0) {\n var first = this.leaves.first();\n if (!first) return this;\n var newFirst = first.removeMark(mark);\n if (newFirst === first) return this;\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves9 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves10 = slicedToArray(_Leaf$splitLeaves9, 2),\n before = _Leaf$splitLeaves10[0],\n bundle = _Leaf$splitLeaves10[1];\n\n var _Leaf$splitLeaves11 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves12 = slicedToArray(_Leaf$splitLeaves11, 2),\n middle = _Leaf$splitLeaves12[0],\n after = _Leaf$splitLeaves12[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.removeMark(mark);\n }), after);\n return this.setLeaves(leaves);\n }\n /**\n * Remove text from the text node at `start` for `length`.\n *\n * @param {Number} start\n * @param {Number} length\n * @return {Text}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(start, length) {\n if (length <= 0) return this;\n if (start >= this.text.length) return this; // PERF: For simple backspace, we can operate directly on the leaf\n\n if (length === 1) {\n var _searchLeafAtOffset3 = this.searchLeafAtOffset(start + 1),\n leaf = _searchLeafAtOffset3.leaf,\n index = _searchLeafAtOffset3.index,\n startOffset = _searchLeafAtOffset3.startOffset;\n\n var offset = start - startOffset;\n\n if (leaf) {\n if (leaf.text.length === 1) {\n var _leaves2 = this.leaves.remove(index);\n\n return this.setLeaves(_leaves2);\n }\n\n var beforeText = leaf.text.slice(0, offset);\n var afterText = leaf.text.slice(offset + length);\n var text = beforeText + afterText;\n\n if (text.length > 0) {\n return this.set('leaves', this.leaves.set(index, leaf.set('text', text)));\n }\n }\n }\n\n var _Leaf$splitLeaves13 = Leaf.splitLeaves(this.leaves, start),\n _Leaf$splitLeaves14 = slicedToArray(_Leaf$splitLeaves13, 2),\n before = _Leaf$splitLeaves14[0],\n bundle = _Leaf$splitLeaves14[1];\n\n var after = Leaf.splitLeaves(bundle, length)[1];\n var leaves = Leaf.createLeaves(before.concat(after));\n\n if (leaves.size === 1) {\n var first = leaves.first();\n\n if (first.text === '') {\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(first.set('marks', this.getActiveMarks())));\n }\n }\n\n return this.set('leaves', leaves);\n }\n /**\n * Return a JSON representation of the text.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n leaves: this.getLeaves().toArray().map(function (r) {\n return r.toJSON();\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n /**\n * Update a `mark` at `index` and `length` with `properties`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Text}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(index, length, mark, properties) {\n var newMark = mark.merge(properties);\n\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves3 = this.leaves;\n\n var first = _leaves3.first();\n\n if (!first) return this;\n var newFirst = first.updateMark(mark, newMark);\n if (newFirst === first) return this;\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves15 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves16 = slicedToArray(_Leaf$splitLeaves15, 2),\n before = _Leaf$splitLeaves16[0],\n bundle = _Leaf$splitLeaves16[1];\n\n var _Leaf$splitLeaves17 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves18 = slicedToArray(_Leaf$splitLeaves17, 2),\n middle = _Leaf$splitLeaves18[0],\n after = _Leaf$splitLeaves18[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.updateMark(mark, newMark);\n }), after);\n return this.setLeaves(leaves);\n }\n /**\n * Split this text and return two different texts\n * @param {Number} position\n * @returns {Array}\n */\n\n }, {\n key: 'splitText',\n value: function splitText(offset) {\n var splitted = Leaf.splitLeaves(this.leaves, offset);\n var one = this.set('leaves', splitted[0]);\n var two = this.set('leaves', splitted[1]).regenerateKey();\n return [one, two];\n }\n /**\n * merge this text and another text at the end\n * @param {Text} text\n * @returns {Text}\n */\n\n }, {\n key: 'mergeText',\n value: function mergeText(text) {\n var leaves = this.leaves.concat(text.leaves);\n return this.setLeaves(leaves);\n }\n /**\n * Validate the text node against a `schema`.\n *\n * @param {Schema} schema\n * @return {Object|Void}\n */\n\n }, {\n key: 'validate',\n value: function validate(schema) {\n return schema.validateNode(this);\n }\n /**\n * Get the first invalid descendant\n * PERF: Do not cache this method; because it can cause cycle reference\n *\n * @param {Schema} schema\n * @returns {Text|Null}\n */\n\n }, {\n key: 'getFirstInvalidDescendant',\n value: function getFirstInvalidDescendant(schema) {\n return this.validate(schema) ? this : null;\n }\n /**\n * Set leaves with normalized `leaves`\n *\n * @param {Schema} schema\n * @returns {Text|Null}\n */\n\n }, {\n key: 'setLeaves',\n value: function setLeaves(leaves) {\n var result = Leaf.createLeaves(leaves);\n\n if (result.size === 1) {\n var first = result.first();\n\n if (!first.marks || first.marks.size === 0) {\n if (first.text === '') {\n return this.set('leaves', Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])());\n }\n }\n }\n\n return this.set('leaves', Leaf.createLeaves(leaves));\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'text';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n /**\n * Is the node empty?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n return this.text == '';\n }\n /**\n * Get the concatenated text of the node.\n *\n * @return {String}\n */\n\n }, {\n key: 'text',\n get: function get$$1() {\n return this.getString();\n }\n }, {\n key: 'characters',\n get: function get$$1() {\n return this.leaves.flatMap(function (x) {\n return x.getCharacters();\n });\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Text` with `attrs`.\n *\n * @param {Object|Array|List|String|Text} attrs\n * @return {Text}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (Text.isText(attrs)) {\n return attrs;\n }\n\n if (typeof attrs == 'string') {\n attrs = {\n leaves: [{\n text: attrs\n }]\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n if (attrs.text) {\n var _attrs = attrs,\n text = _attrs.text,\n marks = _attrs.marks,\n key = _attrs.key;\n attrs = {\n key: key,\n leaves: [{\n text: text,\n marks: marks\n }]\n };\n }\n\n return Text.fromJSON(attrs);\n }\n\n throw new Error('`Text.create` only accepts objects, arrays, strings or texts, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Texts` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](elements.map(Text.create));\n return list;\n }\n\n throw new Error('`Text.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Text` from a JSON `object`.\n *\n * @param {Object|Text} object\n * @return {Text}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Text.isText(object)) {\n return object;\n }\n\n var _object$key = object.key,\n key = _object$key === undefined ? generateKey() : _object$key;\n var _object$leaves = object.leaves,\n leaves = _object$leaves === undefined ? Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])() : _object$leaves;\n\n if (Array.isArray(leaves)) {\n leaves = Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])(leaves.map(function (x) {\n return Leaf.create(x);\n }));\n } else if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(leaves)) {\n leaves = leaves.map(function (x) {\n return Leaf.create(x);\n });\n } else {\n throw new Error('leaves must be either Array or Immutable.List');\n }\n\n var node = new Text({\n leaves: Leaf.createLeaves(leaves),\n key: key\n });\n return node;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `Text`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isTextList',\n\n /**\n * Check if `any` is a list of texts.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isTextList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Text.isText(item);\n });\n }\n }]);\n return Text;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$7));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nText.fromJS = Text.fromJSON;\nText.isText = isType.bind(null, 'TEXT');\nText.prototype[MODEL_TYPES.TEXT] = true;\n/**\n * Memoize read methods.\n */\n\nmemoize(Text.prototype, ['getDecorations', 'getActiveMarks', 'getMarks', 'getMarksAsArray', 'validate', 'getString']);\n/**\n * Node.\n *\n * And interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Node}\n */\n\nvar Node = function () {\n function Node() {\n classCallCheck(this, Node);\n }\n\n createClass(Node, [{\n key: 'areDescendantsSorted',\n\n /**\n * True if the node has both descendants in that order, false otherwise. The\n * order is depth-first, post-order.\n *\n * @param {String} first\n * @param {String} second\n * @return {Boolean}\n */\n value: function areDescendantsSorted(first, second) {\n first = assertKey(first);\n second = assertKey(second);\n var keys = this.getKeysAsArray();\n var firstIndex = keys.indexOf(first);\n var secondIndex = keys.indexOf(second);\n if (firstIndex == -1 || secondIndex == -1) return null;\n return firstIndex < secondIndex;\n }\n /**\n * Assert that a node has a child by `key` and return it.\n *\n * @param {String} key\n * @return {Node}\n */\n\n }, {\n key: 'assertChild',\n value: function assertChild(key) {\n var child = this.getChild(key);\n\n if (!child) {\n key = assertKey(key);\n throw new Error('Could not find a child node with key \"' + key + '\".');\n }\n\n return child;\n }\n /**\n * Assert that a node has a descendant by `key` and return it.\n *\n * @param {String} key\n * @return {Node}\n */\n\n }, {\n key: 'assertDescendant',\n value: function assertDescendant(key) {\n var descendant = this.getDescendant(key);\n\n if (!descendant) {\n key = assertKey(key);\n throw new Error('Could not find a descendant node with key \"' + key + '\".');\n }\n\n return descendant;\n }\n /**\n * Assert that a node's tree has a node by `key` and return it.\n *\n * @param {String} key\n * @return {Node}\n */\n\n }, {\n key: 'assertNode',\n value: function assertNode(key) {\n var node = this.getNode(key);\n\n if (!node) {\n key = assertKey(key);\n throw new Error('Could not find a node with key \"' + key + '\".');\n }\n\n return node;\n }\n /**\n * Assert that a node exists at `path` and return it.\n *\n * @param {Array} path\n * @return {Node}\n */\n\n }, {\n key: 'assertPath',\n value: function assertPath(path) {\n var descendant = this.getDescendantAtPath(path);\n\n if (!descendant) {\n throw new Error('Could not find a descendant at path \"' + path + '\".');\n }\n\n return descendant;\n }\n /**\n * Recursively filter all descendant nodes with `iterator`.\n *\n * @param {Function} iterator\n * @return {List}\n */\n\n }, {\n key: 'filterDescendants',\n value: function filterDescendants(iterator) {\n var matches = [];\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) matches.push(node);\n });\n return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])(matches);\n }\n /**\n * Recursively find all descendant nodes by `iterator`.\n *\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'findDescendant',\n value: function findDescendant(iterator) {\n var found = null;\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Recursively iterate over all descendant nodes with `iterator`. If the\n * iterator returns false it will break the loop.\n *\n * @param {Function} iterator\n */\n\n }, {\n key: 'forEachDescendant',\n value: function forEachDescendant(iterator) {\n var ret = void 0;\n this.nodes.forEach(function (child, i, nodes) {\n if (iterator(child, i, nodes) === false) {\n ret = false;\n return false;\n }\n\n if (child.object != 'text') {\n ret = child.forEachDescendant(iterator);\n return ret;\n }\n });\n return ret;\n }\n /**\n * Get the path of ancestors of a descendant node by `key`.\n *\n * @param {String|Node} key\n * @return {List|Null}\n */\n\n }, {\n key: 'getAncestors',\n value: function getAncestors(key) {\n key = assertKey(key);\n if (key == this.key) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])();\n if (this.hasChild(key)) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])([this]);\n var ancestors = void 0;\n this.nodes.find(function (node) {\n if (node.object == 'text') return false;\n ancestors = node.getAncestors(key);\n return ancestors;\n });\n\n if (ancestors) {\n return ancestors.unshift(this);\n } else {\n return null;\n }\n }\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getBlocks',\n value: function getBlocks() {\n var array = this.getBlocksAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](array);\n }\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getBlocksAsArray',\n value: function getBlocksAsArray() {\n return this.nodes.reduce(function (array, child) {\n if (child.object != 'block') return array;\n if (!child.isLeafBlock()) return array.concat(child.getBlocksAsArray());\n array.push(child);\n return array;\n }, []);\n }\n /**\n * Get the leaf block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getBlocksAtRange',\n value: function getBlocksAtRange(range) {\n var array = this.getBlocksAtRangeAsArray(range); // Eliminate duplicates by converting to an `OrderedSet` first.\n\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](new immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"](array));\n }\n /**\n * Get the leaf block descendants in a `range` as an array\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksAtRangeAsArray',\n value: function getBlocksAtRangeAsArray(range) {\n range = range.normalize(this);\n if (range.isUnset) return [];\n var _range = range,\n startKey = _range.startKey,\n endKey = _range.endKey;\n var startBlock = this.getClosestBlock(startKey); // PERF: the most common case is when the range is in a single block node,\n // where we can avoid a lot of iterating of the tree.\n\n if (startKey == endKey) return [startBlock];\n var endBlock = this.getClosestBlock(endKey);\n var blocks = this.getBlocksAsArray();\n var start = blocks.indexOf(startBlock);\n var end = blocks.indexOf(endBlock);\n return blocks.slice(start, end + 1);\n }\n /**\n * Get all of the leaf blocks that match a `type`.\n *\n * @param {String} type\n * @return {List}\n */\n\n }, {\n key: 'getBlocksByType',\n value: function getBlocksByType(type) {\n var array = this.getBlocksByTypeAsArray(type);\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](array);\n }\n /**\n * Get all of the leaf blocks that match a `type` as an array\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksByTypeAsArray',\n value: function getBlocksByTypeAsArray(type) {\n return this.nodes.reduce(function (array, node) {\n if (node.object != 'block') {\n return array;\n } else if (node.isLeafBlock() && node.type == type) {\n array.push(node);\n return array;\n } else {\n return array.concat(node.getBlocksByTypeAsArray(type));\n }\n }, []);\n }\n /**\n * Get all of the characters for every text node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getCharacters',\n value: function getCharacters() {\n return this.getTexts().flatMap(function (t) {\n return t.characters;\n });\n }\n /**\n * Get a list of the characters in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getCharactersAtRange',\n value: function getCharactersAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])();\n var _range2 = range,\n startKey = _range2.startKey,\n endKey = _range2.endKey,\n startOffset = _range2.startOffset,\n endOffset = _range2.endOffset;\n\n if (startKey === endKey) {\n var endText = this.getDescendant(endKey);\n return endText.characters.slice(startOffset, endOffset);\n }\n\n return this.getTextsAtRange(range).flatMap(function (t) {\n if (t.key === startKey) {\n return t.characters.slice(startOffset);\n }\n\n if (t.key === endKey) {\n return t.characters.slice(0, endOffset);\n }\n\n return t.characters;\n });\n }\n /**\n * Get a child node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getChild',\n value: function getChild(key) {\n key = assertKey(key);\n return this.nodes.find(function (node) {\n return node.key == key;\n });\n }\n /**\n * Get closest parent of node by `key` that matches `iterator`.\n *\n * @param {String} key\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosest',\n value: function getClosest(key, iterator) {\n key = assertKey(key);\n var ancestors = this.getAncestors(key);\n\n if (!ancestors) {\n throw new Error('Could not find a descendant node with key \"' + key + '\".');\n } // Exclude this node itself.\n\n\n return ancestors.rest().findLast(iterator);\n }\n /**\n * Get the closest block parent of a `node`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestBlock',\n value: function getClosestBlock(key) {\n return this.getClosest(key, function (parent) {\n return parent.object == 'block';\n });\n }\n /**\n * Get the closest inline parent of a `node`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestInline',\n value: function getClosestInline(key) {\n return this.getClosest(key, function (parent) {\n return parent.object == 'inline';\n });\n }\n /**\n * Get the closest void parent of a `node`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestVoid',\n value: function getClosestVoid(key) {\n return this.getClosest(key, function (parent) {\n return parent.isVoid;\n });\n }\n /**\n * Get the common ancestor of nodes `one` and `two` by keys.\n *\n * @param {String} one\n * @param {String} two\n * @return {Node}\n */\n\n }, {\n key: 'getCommonAncestor',\n value: function getCommonAncestor(one, two) {\n one = assertKey(one);\n two = assertKey(two);\n if (one == this.key) return this;\n if (two == this.key) return this;\n this.assertDescendant(one);\n this.assertDescendant(two);\n var ancestors = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]();\n var oneParent = this.getParent(one);\n var twoParent = this.getParent(two);\n\n while (oneParent) {\n ancestors = ancestors.push(oneParent);\n oneParent = this.getParent(oneParent.key);\n }\n\n while (twoParent) {\n if (ancestors.includes(twoParent)) return twoParent;\n twoParent = this.getParent(twoParent.key);\n }\n }\n /**\n * Get the decorations for the node from a `stack`.\n *\n * @param {Stack} stack\n * @return {List}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(stack) {\n var decorations = stack.find('decorateNode', this);\n var list = Range.createList(decorations || []);\n return list;\n }\n /**\n * Get the depth of a child node by `key`, with optional `startAt`.\n *\n * @param {String} key\n * @param {Number} startAt (optional)\n * @return {Number} depth\n */\n\n }, {\n key: 'getDepth',\n value: function getDepth(key) {\n var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n this.assertDescendant(key);\n if (this.hasChild(key)) return startAt;\n return this.getFurthestAncestor(key).getDepth(key, startAt + 1);\n }\n /**\n * Get a descendant node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getDescendant',\n value: function getDescendant(key) {\n key = assertKey(key);\n var descendantFound = null;\n var found = this.nodes.find(function (node) {\n if (node.key === key) {\n return node;\n } else if (node.object !== 'text') {\n descendantFound = node.getDescendant(key);\n return descendantFound;\n } else {\n return false;\n }\n });\n return descendantFound || found;\n }\n /**\n * Get a descendant by `path`.\n *\n * @param {Array} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getDescendantAtPath',\n value: function getDescendantAtPath(path) {\n var descendant = this;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = path[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var index = _step.value;\n if (!descendant) return;\n if (!descendant.nodes) return;\n descendant = descendant.nodes.get(index);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return descendant;\n }\n /**\n * Get the first child text node.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFirstText',\n value: function getFirstText() {\n var descendantFound = null;\n var found = this.nodes.find(function (node) {\n if (node.object == 'text') return true;\n descendantFound = node.getFirstText();\n return descendantFound;\n });\n return descendantFound || found;\n }\n /**\n * Get a fragment of the node at a `range`.\n *\n * @param {Range} range\n * @return {Document}\n */\n\n }, {\n key: 'getFragmentAtRange',\n value: function getFragmentAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Document.create();\n var node = this; // Make sure the children exist.\n\n var _range3 = range,\n startKey = _range3.startKey,\n startOffset = _range3.startOffset,\n endKey = _range3.endKey,\n endOffset = _range3.endOffset;\n var startText = node.assertDescendant(startKey);\n var endText = node.assertDescendant(endKey); // Split at the start and end.\n\n var child = startText;\n var previous = void 0;\n var parent = void 0;\n\n while (parent = node.getParent(child.key)) {\n var index = parent.nodes.indexOf(child);\n var position = child.object == 'text' ? startOffset : child.nodes.indexOf(previous);\n parent = parent.splitNode(index, position);\n node = node.updateNode(parent);\n previous = parent.nodes.get(index + 1);\n child = parent;\n }\n\n child = startKey == endKey ? node.getNextText(startKey) : endText;\n\n while (parent = node.getParent(child.key)) {\n var _index = parent.nodes.indexOf(child);\n\n var _position = child.object == 'text' ? startKey == endKey ? endOffset - startOffset : endOffset : child.nodes.indexOf(previous);\n\n parent = parent.splitNode(_index, _position);\n node = node.updateNode(parent);\n previous = parent.nodes.get(_index + 1);\n child = parent;\n } // Get the start and end nodes.\n\n\n var startNode = node.getNextSibling(node.getFurthestAncestor(startKey).key);\n var endNode = startKey == endKey ? node.getNextSibling(node.getNextSibling(node.getFurthestAncestor(endKey).key).key) : node.getNextSibling(node.getFurthestAncestor(endKey).key); // Get children range of nodes from start to end nodes\n\n var startIndex = node.nodes.indexOf(startNode);\n var endIndex = node.nodes.indexOf(endNode);\n var nodes = node.nodes.slice(startIndex, endIndex); // Return a new document fragment.\n\n return Document.create({\n nodes: nodes\n });\n }\n /**\n * Get the furthest parent of a node by `key` that matches an `iterator`.\n *\n * @param {String} key\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthest',\n value: function getFurthest(key, iterator) {\n var ancestors = this.getAncestors(key);\n\n if (!ancestors) {\n key = assertKey(key);\n throw new Error('Could not find a descendant node with key \"' + key + '\".');\n } // Exclude this node itself\n\n\n return ancestors.rest().find(iterator);\n }\n /**\n * Get the furthest block parent of a node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestBlock',\n value: function getFurthestBlock(key) {\n return this.getFurthest(key, function (node) {\n return node.object == 'block';\n });\n }\n /**\n * Get the furthest inline parent of a node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestInline',\n value: function getFurthestInline(key) {\n return this.getFurthest(key, function (node) {\n return node.object == 'inline';\n });\n }\n /**\n * Get the furthest ancestor of a node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestAncestor',\n value: function getFurthestAncestor(key) {\n key = assertKey(key);\n return this.nodes.find(function (node) {\n if (node.key == key) return true;\n if (node.object == 'text') return false;\n return node.hasDescendant(key);\n });\n }\n /**\n * Get the furthest ancestor of a node by `key` that has only one child.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestOnlyChildAncestor',\n value: function getFurthestOnlyChildAncestor(key) {\n var ancestors = this.getAncestors(key);\n\n if (!ancestors) {\n key = assertKey(key);\n throw new Error('Could not find a descendant node with key \"' + key + '\".');\n }\n\n var result = ancestors // Skip this node...\n .shift() // Take parents until there are more than one child...\n .reverse().takeUntil(function (p) {\n return p.nodes.size > 1;\n }) // And pick the highest.\n .last();\n if (!result) return null;\n return result;\n }\n /**\n * Get the closest inline nodes for each text node in the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getInlines',\n value: function getInlines() {\n var array = this.getInlinesAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](array);\n }\n /**\n * Get the closest inline nodes for each text node in the node, as an array.\n *\n * @return {List}\n */\n\n }, {\n key: 'getInlinesAsArray',\n value: function getInlinesAsArray() {\n var array = [];\n this.nodes.forEach(function (child) {\n if (child.object == 'text') return;\n\n if (child.isLeafInline()) {\n array.push(child);\n } else {\n array = array.concat(child.getInlinesAsArray());\n }\n });\n return array;\n }\n /**\n * Get the closest inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getInlinesAtRange',\n value: function getInlinesAtRange(range) {\n var array = this.getInlinesAtRangeAsArray(range); // Remove duplicates by converting it to an `OrderedSet` first.\n\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](new immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"](array));\n }\n /**\n * Get the closest inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesAtRangeAsArray',\n value: function getInlinesAtRangeAsArray(range) {\n var _this = this;\n\n range = range.normalize(this);\n if (range.isUnset) return [];\n return this.getTextsAtRangeAsArray(range).map(function (text) {\n return _this.getClosestInline(text.key);\n }).filter(function (exists) {\n return exists;\n });\n }\n /**\n * Get all of the leaf inline nodes that match a `type`.\n *\n * @param {String} type\n * @return {List}\n */\n\n }, {\n key: 'getInlinesByType',\n value: function getInlinesByType(type) {\n var array = this.getInlinesByTypeAsArray(type);\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](array);\n }\n /**\n * Get all of the leaf inline nodes that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesByTypeAsArray',\n value: function getInlinesByTypeAsArray(type) {\n return this.nodes.reduce(function (inlines, node) {\n if (node.object == 'text') {\n return inlines;\n } else if (node.isLeafInline() && node.type == type) {\n inlines.push(node);\n return inlines;\n } else {\n return inlines.concat(node.getInlinesByTypeAsArray(type));\n }\n }, []);\n }\n /**\n * Return a set of all keys in the node as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getKeysAsArray',\n value: function getKeysAsArray() {\n var keys = [];\n this.forEachDescendant(function (desc) {\n keys.push(desc.key);\n });\n return keys;\n }\n /**\n * Return a set of all keys in the node.\n *\n * @return {Set}\n */\n\n }, {\n key: 'getKeys',\n value: function getKeys() {\n var keys = this.getKeysAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](keys);\n }\n /**\n * Get the last child text node.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getLastText',\n value: function getLastText() {\n var descendantFound = null;\n var found = this.nodes.findLast(function (node) {\n if (node.object == 'text') return true;\n descendantFound = node.getLastText();\n return descendantFound;\n });\n return descendantFound || found;\n }\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {Set}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](array);\n }\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarks',\n value: function getOrderedMarks() {\n var array = this.getMarksAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"](array);\n }\n /**\n * Get all of the marks as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n // PERF: use only one concat rather than multiple concat\n // becuase one concat is faster\n var result = [];\n this.nodes.forEach(function (node) {\n result.push(node.getMarksAsArray());\n });\n return Array.prototype.concat.apply([], result);\n }\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtRange',\n value: function getMarksAtRange(range) {\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](this.getOrderedMarksAtRange(range));\n }\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getInsertMarksAtRange',\n value: function getInsertMarksAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(range.startKey, range.startOffset);\n }\n\n var _range4 = range,\n startKey = _range4.startKey,\n startOffset = _range4.startOffset;\n var text = this.getDescendant(startKey);\n return text.getMarksAtIndex(startOffset + 1);\n }\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksAtRange',\n value: function getOrderedMarksAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"])();\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(range.startKey, range.startOffset);\n }\n\n var _range5 = range,\n startKey = _range5.startKey,\n startOffset = _range5.startOffset,\n endKey = _range5.endKey,\n endOffset = _range5.endOffset;\n return this.getOrderedMarksBetweenPositions(startKey, startOffset, endKey, endOffset);\n }\n /**\n * Get a set of the marks in a `range`.\n * PERF: arguments use key and offset for utilizing cache\n *\n * @param {string} startKey\n * @param {number} startOffset\n * @param {string} endKey\n * @param {number} endOffset\n * @returns {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksBetweenPositions',\n value: function getOrderedMarksBetweenPositions(startKey, startOffset, endKey, endOffset) {\n if (startKey === endKey) {\n var startText = this.getDescendant(startKey);\n return startText.getMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var texts = this.getTextsBetweenPositionsAsArray(startKey, endKey);\n return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"])().withMutations(function (result) {\n texts.forEach(function (text) {\n if (text.key === startKey) {\n result.union(text.getMarksBetweenOffsets(startOffset, text.text.length));\n } else if (text.key === endKey) {\n result.union(text.getMarksBetweenOffsets(0, endOffset));\n } else {\n result.union(text.getMarks());\n }\n });\n });\n }\n /**\n * Get a set of the active marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarksAtRange',\n value: function getActiveMarksAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n\n if (range.isCollapsed) {\n var _range6 = range,\n _startKey = _range6.startKey,\n _startOffset = _range6.startOffset;\n return this.getMarksAtPosition(_startKey, _startOffset).toSet();\n }\n\n var _range7 = range,\n startKey = _range7.startKey,\n endKey = _range7.endKey,\n startOffset = _range7.startOffset,\n endOffset = _range7.endOffset;\n var startText = this.getDescendant(startKey);\n\n if (startKey !== endKey) {\n while (startKey !== endKey && endOffset === 0) {\n var _endText = this.getPreviousText(endKey);\n\n endKey = _endText.key;\n endOffset = _endText.text.length;\n }\n\n while (startKey !== endKey && startOffset === startText.text.length) {\n startText = this.getNextText(startKey);\n startKey = startText.key;\n startOffset = 0;\n }\n }\n\n if (startKey === endKey) {\n return startText.getActiveMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var startMarks = startText.getActiveMarksBetweenOffsets(startOffset, startText.text.length);\n if (startMarks.size === 0) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n var endText = this.getDescendant(endKey);\n var endMarks = endText.getActiveMarksBetweenOffsets(0, endOffset);\n var marks = startMarks.intersect(endMarks); // If marks is already empty, the active marks is empty\n\n if (marks.size === 0) return marks;\n var text = this.getNextText(startKey);\n\n while (text.key !== endKey) {\n if (text.text.length !== 0) {\n marks = marks.intersect(text.getActiveMarks());\n if (marks.size === 0) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n }\n\n text = this.getNextText(text.key);\n }\n\n return marks;\n }\n /**\n * Get a set of marks in a `position`, the equivalent of a collapsed range\n *\n * @param {string} key\n * @param {number} offset\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtPosition',\n value: function getMarksAtPosition(key, offset) {\n var text = this.getDescendant(key);\n var currentMarks = text.getMarksAtIndex(offset);\n if (offset !== 0) return currentMarks;\n var closestBlock = this.getClosestBlock(key);\n\n if (closestBlock.text === '') {\n // insert mark for empty block; the empty block are often created by split node or add marks in a range including empty blocks\n return currentMarks;\n }\n\n var previous = this.getPreviousText(key);\n if (!previous) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"])();\n\n if (closestBlock.hasDescendant(previous.key)) {\n return previous.getMarksAtIndex(previous.text.length);\n }\n\n return currentMarks;\n }\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {Set}\n */\n\n }, {\n key: 'getMarksByType',\n value: function getMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"](array);\n }\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksByType',\n value: function getOrderedMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"OrderedSet\"](array);\n }\n /**\n * Get all of the marks that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getMarksByTypeAsArray',\n value: function getMarksByTypeAsArray(type) {\n return this.nodes.reduce(function (array, node) {\n return node.object == 'text' ? array.concat(node.getMarksAsArray().filter(function (m) {\n return m.type == type;\n })) : array.concat(node.getMarksByTypeAsArray(type));\n }, []);\n }\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextBlock',\n value: function getNextBlock(key) {\n var child = this.assertDescendant(key);\n var last = void 0;\n\n if (child.object == 'block') {\n last = child.getLastText();\n } else {\n var block = this.getClosestBlock(key);\n last = block.getLastText();\n }\n\n var next = this.getNextText(last.key);\n if (!next) return null;\n return this.getClosestBlock(next.key);\n }\n /**\n * Get the node after a descendant by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextSibling',\n value: function getNextSibling(key) {\n key = assertKey(key);\n var parent = this.getParent(key);\n var after = parent.nodes.skipUntil(function (child) {\n return child.key == key;\n });\n\n if (after.size == 0) {\n throw new Error('Could not find a child node with key \"' + key + '\".');\n }\n\n return after.get(1);\n }\n /**\n * Get the text node after a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextText',\n value: function getNextText(key) {\n key = assertKey(key);\n return this.getTexts().skipUntil(function (text) {\n return text.key == key;\n }).get(1);\n }\n /**\n * Get a node in the tree by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(key) {\n key = assertKey(key);\n return this.key == key ? this : this.getDescendant(key);\n }\n /**\n * Get a node in the tree by `path`.\n *\n * @param {Array} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNodeAtPath',\n value: function getNodeAtPath(path) {\n return path.length ? this.getDescendantAtPath(path) : this;\n }\n /**\n * Get the offset for a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Number}\n */\n\n }, {\n key: 'getOffset',\n value: function getOffset(key) {\n this.assertDescendant(key); // Calculate the offset of the nodes before the highest child.\n\n var child = this.getFurthestAncestor(key);\n var offset = this.nodes.takeUntil(function (n) {\n return n == child;\n }).reduce(function (memo, n) {\n return memo + n.text.length;\n }, 0); // Recurse if need be.\n\n return this.hasChild(key) ? offset : offset + child.getOffset(key);\n }\n /**\n * Get the offset from a `range`.\n *\n * @param {Range} range\n * @return {Number}\n */\n\n }, {\n key: 'getOffsetAtRange',\n value: function getOffsetAtRange(range) {\n range = range.normalize(this);\n\n if (range.isUnset) {\n throw new Error('The range cannot be unset to calculcate its offset.');\n }\n\n if (range.isExpanded) {\n throw new Error('The range must be collapsed to calculcate its offset.');\n }\n\n var _range8 = range,\n startKey = _range8.startKey,\n startOffset = _range8.startOffset;\n return this.getOffset(startKey) + startOffset;\n }\n /**\n * Get the parent of a child node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getParent',\n value: function getParent(key) {\n if (this.hasChild(key)) return this;\n var node = null;\n this.nodes.find(function (child) {\n if (child.object == 'text') {\n return false;\n } else {\n node = child.getParent(key);\n return node;\n }\n });\n return node;\n }\n /**\n * Get the path of a descendant node by `key`.\n *\n * @param {String|Node} key\n * @return {Array}\n */\n\n }, {\n key: 'getPath',\n value: function getPath(key) {\n var child = this.assertNode(key);\n var ancestors = this.getAncestors(key);\n var path = [];\n ancestors.reverse().forEach(function (ancestor) {\n var index = ancestor.nodes.indexOf(child);\n path.unshift(index);\n child = ancestor;\n });\n return path;\n }\n /**\n * Refind the path of node if path is changed.\n *\n * @param {Array} path\n * @param {String} key\n * @return {Array}\n */\n\n }, {\n key: 'refindPath',\n value: function refindPath(path, key) {\n var node = this.getDescendantAtPath(path);\n\n if (node && node.key === key) {\n return path;\n }\n\n return this.getPath(key);\n }\n /**\n *\n * Refind the node with the same node.key after change.\n *\n * @param {Array} path\n * @param {String} key\n * @return {Node|Void}\n */\n\n }, {\n key: 'refindNode',\n value: function refindNode(path, key) {\n var node = this.getDescendantAtPath(path);\n\n if (node && node.key === key) {\n return node;\n }\n\n return this.getDescendant(key);\n }\n /**\n * Get the placeholder for the node from a `schema`.\n *\n * @param {Schema} schema\n * @return {Component|Void}\n */\n\n }, {\n key: 'getPlaceholder',\n value: function getPlaceholder(schema) {\n return schema.__getPlaceholder(this);\n }\n /**\n * Get the block node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousBlock',\n value: function getPreviousBlock(key) {\n var child = this.assertDescendant(key);\n var first = void 0;\n\n if (child.object == 'block') {\n first = child.getFirstText();\n } else {\n var block = this.getClosestBlock(key);\n first = block.getFirstText();\n }\n\n var previous = this.getPreviousText(first.key);\n if (!previous) return null;\n return this.getClosestBlock(previous.key);\n }\n /**\n * Get the node before a descendant node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousSibling',\n value: function getPreviousSibling(key) {\n key = assertKey(key);\n var parent = this.getParent(key);\n var before = parent.nodes.takeUntil(function (child) {\n return child.key == key;\n });\n\n if (before.size == parent.nodes.size) {\n throw new Error('Could not find a child node with key \"' + key + '\".');\n }\n\n return before.last();\n }\n /**\n * Get the text node before a descendant text node by `key`.\n *\n * @param {String} key\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousText',\n value: function getPreviousText(key) {\n key = assertKey(key);\n return this.getTexts().takeUntil(function (text) {\n return text.key == key;\n }).last();\n }\n /**\n * Get the indexes of the selection for a `range`, given an extra flag for\n * whether the node `isSelected`, to determine whether not finding matches\n * means everything is selected or nothing is.\n *\n * @param {Range} range\n * @param {Boolean} isSelected\n * @return {Object|Null}\n */\n\n }, {\n key: 'getSelectionIndexes',\n value: function getSelectionIndexes(range) {\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var startKey = range.startKey,\n endKey = range.endKey; // PERF: if we're not selected, we can exit early.\n\n if (!isSelected) {\n return null;\n } // if we've been given an invalid selection we can exit early.\n\n\n if (range.isUnset) {\n return null;\n } // PERF: if the start and end keys are the same, just check for the child\n // that contains that single key.\n\n\n if (startKey == endKey) {\n var child = this.getFurthestAncestor(startKey);\n var index = child ? this.nodes.indexOf(child) : null;\n return {\n start: index,\n end: index + 1\n };\n } // Otherwise, check all of the children...\n\n\n var start = null;\n var end = null;\n this.nodes.forEach(function (child, i) {\n if (child.object == 'text') {\n if (start == null && child.key == startKey) start = i;\n if (end == null && child.key == endKey) end = i + 1;\n } else {\n if (start == null && child.hasDescendant(startKey)) start = i;\n if (end == null && child.hasDescendant(endKey)) end = i + 1;\n } // PERF: exit early if both start and end have been found.\n\n\n return start == null || end == null;\n });\n if (isSelected && start == null) start = 0;\n if (isSelected && end == null) end = this.nodes.size;\n return start == null ? null : {\n start: start,\n end: end\n };\n }\n /**\n * Get the concatenated text string of all child nodes.\n *\n * @return {String}\n */\n\n }, {\n key: 'getText',\n value: function getText() {\n return this.nodes.reduce(function (string, node) {\n return string + node.text;\n }, '');\n }\n /**\n * Get the descendent text node at an `offset`.\n *\n * @param {String} offset\n * @return {Node|Null}\n */\n\n }, {\n key: 'getTextAtOffset',\n value: function getTextAtOffset(offset) {\n // PERF: Add a few shortcuts for the obvious cases.\n if (offset == 0) return this.getFirstText();\n if (offset == this.text.length) return this.getLastText();\n if (offset < 0 || offset > this.text.length) return null;\n var length = 0;\n return this.getTexts().find(function (node, i, nodes) {\n length += node.text.length;\n return length > offset;\n });\n }\n /**\n * Get the direction of the node's text.\n *\n * @return {String}\n */\n\n }, {\n key: 'getTextDirection',\n value: function getTextDirection() {\n var dir = direction__WEBPACK_IMPORTED_MODULE_3___default()(this.text);\n return dir == 'neutral' ? undefined : dir;\n }\n /**\n * Recursively get all of the child text nodes in order of appearance.\n *\n * @return {List}\n */\n\n }, {\n key: 'getTexts',\n value: function getTexts() {\n var array = this.getTextsAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](array);\n }\n /**\n * Recursively get all the leaf text nodes in order of appearance, as array.\n *\n * @return {List}\n */\n\n }, {\n key: 'getTextsAsArray',\n value: function getTextsAsArray() {\n var array = [];\n this.nodes.forEach(function (node) {\n if (node.object == 'text') {\n array.push(node);\n } else {\n array = array.concat(node.getTextsAsArray());\n }\n });\n return array;\n }\n /**\n * Get all of the text nodes in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getTextsAtRange',\n value: function getTextsAtRange(range) {\n range = range.normalize(this);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])();\n var _range9 = range,\n startKey = _range9.startKey,\n endKey = _range9.endKey;\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](this.getTextsBetweenPositionsAsArray(startKey, endKey));\n }\n /**\n * Get all of the text nodes in a `range` as an array.\n * PERF: use key in arguments for cache\n *\n * @param {string} startKey\n * @param {string} endKey\n * @returns {Array}\n */\n\n }, {\n key: 'getTextsBetweenPositionsAsArray',\n value: function getTextsBetweenPositionsAsArray(startKey, endKey) {\n var startText = this.getDescendant(startKey); // PERF: the most common case is when the range is in a single text node,\n // where we can avoid a lot of iterating of the tree.\n\n if (startKey == endKey) return [startText];\n var endText = this.getDescendant(endKey);\n var texts = this.getTextsAsArray();\n var start = texts.indexOf(startText);\n var end = texts.indexOf(endText, start);\n return texts.slice(start, end + 1);\n }\n /**\n * Get all of the text nodes in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getTextsAtRangeAsArray',\n value: function getTextsAtRangeAsArray(range) {\n range = range.normalize(this);\n if (range.isUnset) return [];\n var _range10 = range,\n startKey = _range10.startKey,\n endKey = _range10.endKey;\n return this.getTextsBetweenPositionsAsArray(startKey, endKey);\n }\n /**\n * Check if a child node exists by `key`.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasChild',\n value: function hasChild(key) {\n return !!this.getChild(key);\n }\n /**\n * Check if a node has block node children.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasBlocks',\n value: function hasBlocks(key) {\n var node = this.assertNode(key);\n return !!(node.nodes && node.nodes.find(function (n) {\n return n.object === 'block';\n }));\n }\n /**\n * Check if a node has inline node children.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasInlines',\n value: function hasInlines(key) {\n var node = this.assertNode(key);\n return !!(node.nodes && node.nodes.find(function (n) {\n return Inline.isInline(n) || Text.isText(n);\n }));\n }\n /**\n * Recursively check if a child node exists by `key`.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasDescendant',\n value: function hasDescendant(key) {\n return !!this.getDescendant(key);\n }\n /**\n * Recursively check if a node exists by `key`.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(key) {\n return !!this.getNode(key);\n }\n /**\n * Check if a node has a void parent by `key`.\n *\n * @param {String} key\n * @return {Boolean}\n */\n\n }, {\n key: 'hasVoidParent',\n value: function hasVoidParent(key) {\n return !!this.getClosestVoid(key);\n }\n /**\n * Insert a `node` at `index`.\n *\n * @param {Number} index\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(index, node) {\n var keys = this.getKeysAsArray();\n\n if (keys.includes(node.key)) {\n node = node.regenerateKey();\n }\n\n if (node.object != 'text') {\n node = node.mapDescendants(function (desc) {\n return keys.includes(desc.key) ? desc.regenerateKey() : desc;\n });\n }\n\n var nodes = this.nodes.insert(index, node);\n return this.set('nodes', nodes);\n }\n /**\n * Check whether the node is in a `range`.\n *\n * @param {Range} range\n * @return {Boolean}\n */\n\n }, {\n key: 'isInRange',\n value: function isInRange(range) {\n range = range.normalize(this);\n var node = this;\n var _range11 = range,\n startKey = _range11.startKey,\n endKey = _range11.endKey,\n isCollapsed = _range11.isCollapsed; // PERF: solve the most common cast where the start or end key are inside\n // the node, for collapsed selections.\n\n if (node.key == startKey || node.key == endKey || node.hasDescendant(startKey) || node.hasDescendant(endKey)) {\n return true;\n } // PERF: if the selection is collapsed and the previous check didn't return\n // true, then it must be false.\n\n\n if (isCollapsed) {\n return false;\n } // Otherwise, look through all of the leaf text nodes in the range, to see\n // if any of them are inside the node.\n\n\n var texts = node.getTextsAtRange(range);\n var memo = false;\n texts.forEach(function (text) {\n if (node.hasDescendant(text.key)) memo = true;\n return memo;\n });\n return memo;\n }\n /**\n * Check whether the node is a leaf block.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafBlock',\n value: function isLeafBlock() {\n return this.object == 'block' && this.nodes.every(function (n) {\n return n.object != 'block';\n });\n }\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafInline',\n value: function isLeafInline() {\n return this.object == 'inline' && this.nodes.every(function (n) {\n return n.object != 'inline';\n });\n }\n /**\n * Merge a children node `first` with another children node `second`.\n * `first` and `second` will be concatenated in that order.\n * `first` and `second` must be two Nodes or two Text.\n *\n * @param {Node} first\n * @param {Node} second\n * @return {Node}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(withIndex, index) {\n var node = this;\n var one = node.nodes.get(withIndex);\n var two = node.nodes.get(index);\n\n if (one.object != two.object) {\n throw new Error('Tried to merge two nodes of different objects: \"' + one.object + '\" and \"' + two.object + '\".');\n } // If the nodes are text nodes, concatenate their leaves together\n\n\n if (one.object == 'text') {\n one = one.mergeText(two);\n } else {\n // Otherwise, concatenate their child nodes together.\n var nodes = one.nodes.concat(two.nodes);\n one = one.set('nodes', nodes);\n }\n\n node = node.removeNode(index);\n node = node.removeNode(withIndex);\n node = node.insertNode(withIndex, one);\n return node;\n }\n /**\n * Map all child nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapChildren',\n value: function mapChildren(iterator) {\n var _this2 = this;\n\n var nodes = this.nodes;\n nodes.forEach(function (node, i) {\n var ret = iterator(node, i, _this2.nodes);\n if (ret != node) nodes = nodes.set(ret.key, ret);\n });\n return this.set('nodes', nodes);\n }\n /**\n * Map all descendant nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapDescendants',\n value: function mapDescendants(iterator) {\n var _this3 = this;\n\n var nodes = this.nodes;\n nodes.forEach(function (node, index) {\n var ret = node;\n if (ret.object != 'text') ret = ret.mapDescendants(iterator);\n ret = iterator(ret, index, _this3.nodes);\n if (ret == node) return;\n nodes = nodes.set(index, ret);\n });\n return this.set('nodes', nodes);\n }\n /**\n * Regenerate the node's key.\n *\n * @return {Node}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = generateKey();\n return this.set('key', key);\n }\n /**\n * Remove a `node` from the children node map.\n *\n * @param {String} key\n * @return {Node}\n */\n\n }, {\n key: 'removeDescendant',\n value: function removeDescendant(key) {\n key = assertKey(key);\n var node = this;\n var parent = node.getParent(key);\n if (!parent) throw new Error('Could not find a descendant node with key \"' + key + '\".');\n var index = parent.nodes.findIndex(function (n) {\n return n.key === key;\n });\n var nodes = parent.nodes.delete(index);\n parent = parent.set('nodes', nodes);\n node = node.updateNode(parent);\n return node;\n }\n /**\n * Remove a node at `index`.\n *\n * @param {Number} index\n * @return {Node}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(index) {\n var nodes = this.nodes.delete(index);\n return this.set('nodes', nodes);\n }\n /**\n * Split a child node by `index` at `position`.\n *\n * @param {Number} index\n * @param {Number} position\n * @return {Node}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(index, position) {\n var node = this;\n var child = node.nodes.get(index);\n var one = void 0;\n var two = void 0; // If the child is a text node, the `position` refers to the text offset at\n // which to split it.\n\n if (child.object == 'text') {\n var _child$splitText = child.splitText(position);\n\n var _child$splitText2 = slicedToArray(_child$splitText, 2);\n\n one = _child$splitText2[0];\n two = _child$splitText2[1];\n } else {\n // Otherwise, if the child is not a text node, the `position` refers to the\n // index at which to split its children.\n var befores = child.nodes.take(position);\n var afters = child.nodes.skip(position);\n one = child.set('nodes', befores);\n two = child.set('nodes', afters).regenerateKey();\n } // Remove the old node and insert the newly split children.\n\n\n node = node.removeNode(index);\n node = node.insertNode(index, two);\n node = node.insertNode(index, one);\n return node;\n }\n /**\n * Set a new value for a child node by `key`.\n *\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'updateNode',\n value: function updateNode(node) {\n if (node.key == this.key) {\n return node;\n }\n\n var child = this.assertDescendant(node.key);\n var ancestors = this.getAncestors(node.key);\n ancestors.reverse().forEach(function (parent) {\n var _parent = parent,\n nodes = _parent.nodes;\n var index = nodes.indexOf(child);\n child = parent;\n nodes = nodes.set(index, node);\n parent = parent.set('nodes', nodes);\n node = parent;\n });\n return node;\n }\n /**\n * Validate the node against a `schema`.\n *\n * @param {Schema} schema\n * @return {Function|Null}\n */\n\n }, {\n key: 'validate',\n value: function validate(schema) {\n return schema.validateNode(this);\n }\n /**\n * Get the first invalid descendant\n *\n * @param {Schema} schema\n * @return {Node|Text|Null}\n */\n\n }, {\n key: 'getFirstInvalidDescendant',\n value: function getFirstInvalidDescendant(schema) {\n var result = null;\n this.nodes.find(function (n) {\n result = n.validate(schema) ? n : n.getFirstInvalidDescendant(schema);\n return result;\n });\n return result;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Node` with `attrs`.\n *\n * @param {Object|Node} attrs\n * @return {Node}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Node.isNode(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var object = attrs.object;\n\n if (!object && attrs.kind) {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n object = attrs.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.create(attrs);\n\n case 'document':\n return Document.create(attrs);\n\n case 'inline':\n return Inline.create(attrs);\n\n case 'text':\n return Text.create(attrs);\n\n default:\n {\n throw new Error('`Node.create` requires a `object` string.');\n }\n }\n }\n\n throw new Error('`Node.create` only accepts objects or nodes but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Nodes` from an array.\n *\n * @param {Array} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])(elements.map(Node.create));\n return list;\n }\n\n throw new Error('`Node.createList` only accepts lists or arrays, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable node properties from `attrs`.\n *\n * @param {Object|String|Node} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs) || Inline.isInline(attrs)) {\n return {\n data: attrs.data,\n isVoid: attrs.isVoid,\n type: attrs.type\n };\n }\n\n if (typeof attrs == 'string') {\n return {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n if ('isVoid' in attrs) props.isVoid = attrs.isVoid;\n return props;\n }\n\n throw new Error('`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: ' + attrs);\n }\n /**\n * Create a `Node` from a JSON `value`.\n *\n * @param {Object} value\n * @return {Node}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(value) {\n var object = value.object;\n\n if (!object && value.kind) {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n object = value.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.fromJSON(value);\n\n case 'document':\n return Document.fromJSON(value);\n\n case 'inline':\n return Inline.fromJSON(value);\n\n case 'text':\n return Text.fromJSON(value);\n\n default:\n {\n throw new Error('`Node.fromJSON` requires an `object` of either \\'block\\', \\'document\\', \\'inline\\' or \\'text\\', but you passed: ' + value);\n }\n }\n }\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isNode',\n\n /**\n * Check if `any` is a `Node`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isNode(any) {\n return !!['BLOCK', 'DOCUMENT', 'INLINE', 'TEXT'].find(function (type) {\n return isType(type, any);\n });\n }\n /**\n * Check if `any` is a list of nodes.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNodeList',\n value: function isNodeList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Node.isNode(item);\n });\n }\n }]);\n return Node;\n}();\n/**\n * Assert a key `arg`.\n *\n * @param {String} arg\n * @return {String}\n */\n\n\nNode.fromJS = Node.fromJSON;\n\nfunction assertKey(arg) {\n if (typeof arg == 'string') return arg;\n throw new Error('Invalid `key` argument! It must be a key string, but you passed: ' + arg);\n}\n/**\n * Memoize read methods.\n */\n\n\nmemoize(Node.prototype, ['areDescendantsSorted', 'getAncestors', 'getBlocksAsArray', 'getBlocksAtRangeAsArray', 'getBlocksByTypeAsArray', 'getChild', 'getClosestBlock', 'getClosestInline', 'getClosestVoid', 'getCommonAncestor', 'getDecorations', 'getDepth', 'getDescendant', 'getDescendantAtPath', 'getFirstText', 'getFragmentAtRange', 'getFurthestBlock', 'getFurthestInline', 'getFurthestAncestor', 'getFurthestOnlyChildAncestor', 'getInlinesAsArray', 'getInlinesAtRangeAsArray', 'getInlinesByTypeAsArray', 'getMarksAsArray', 'getMarksAtPosition', 'getOrderedMarksBetweenPositions', 'getInsertMarksAtRange', 'getKeysAsArray', 'getLastText', 'getMarksByTypeAsArray', 'getNextBlock', 'getNextSibling', 'getNextText', 'getNode', 'getNodeAtPath', 'getOffset', 'getOffsetAtRange', 'getParent', 'getPath', 'getPlaceholder', 'getPreviousBlock', 'getPreviousSibling', 'getPreviousText', 'getText', 'getTextAtOffset', 'getTextDirection', 'getTextsAsArray', 'getTextsBetweenPositionsAsArray', 'isLeafBlock', 'isLeafInline', 'validate', 'getFirstInvalidDescendant']);\n/**\n * Mix in `Node` methods.\n */\n\nObject.getOwnPropertyNames(Node.prototype).forEach(function (method) {\n if (method == 'constructor') return;\n Block.prototype[method] = Node.prototype[method];\n Inline.prototype[method] = Node.prototype[method];\n Document.prototype[method] = Node.prototype[method];\n});\nBlock.createChildren = Node.createList;\nInline.createChildren = Node.createList;\nDocument.createChildren = Node.createList;\n/**\n * Surrogate pair start and end points.\n *\n * @type {Number}\n */\n\nvar SURROGATE_START = 0xd800;\nvar SURROGATE_END = 0xdfff;\n/**\n * A regex to match space characters.\n *\n * @type {RegExp}\n */\n\nvar SPACE = /\\s/;\n/**\n * A regex to match chameleon characters, that count as word characters as long\n * as they are inside of a word.\n *\n * @type {RegExp}\n */\n\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\n * A regex that matches punctuation.\n *\n * @type {RegExp}\n */\n\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\n/**\n * Is a character `code` in a surrogate character.\n *\n * @param {Number} code\n * @return {Boolean}\n */\n\nfunction isSurrogate(code) {\n return SURROGATE_START <= code && code <= SURROGATE_END;\n}\n/**\n * Is a character a word character? Needs the `remaining` characters too.\n *\n * @param {String} char\n * @param {String|Void} remaining\n * @return {Boolean}\n */\n\n\nfunction isWord(char, remaining) {\n if (SPACE.test(char)) return false; // If it's a chameleon character, recurse to see if the next one is or not.\n\n if (CHAMELEON.test(char)) {\n var next = remaining.charAt(0);\n var length = getCharLength(next);\n next = remaining.slice(0, length);\n var rest = remaining.slice(length);\n if (isWord(next, rest)) return true;\n }\n\n if (PUNCTUATION.test(char)) return false;\n return true;\n}\n/**\n * Get the length of a `character`.\n *\n * @param {String} char\n * @return {Number}\n */\n\n\nfunction getCharLength(char) {\n return isSurrogate(char.charCodeAt(0)) ? 2 : 1;\n}\n/**\n * Get the offset to the end of the first character in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\n\nfunction getCharOffset(text) {\n var char = text.charAt(0);\n return getCharLength(char);\n}\n/**\n * Get the offset to the end of the character before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getCharOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = Object(esrever__WEBPACK_IMPORTED_MODULE_4__[\"reverse\"])(text);\n return getCharOffset(text);\n}\n/**\n * Get the offset to the end of the character after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getCharOffsetForward(text, offset) {\n text = text.slice(offset);\n return getCharOffset(text);\n}\n/**\n * Get the offset to the end of the first word in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\n\nfunction getWordOffset(text) {\n var length = 0;\n var i = 0;\n var started = false;\n var char = void 0;\n\n while (char = text.charAt(i)) {\n var l = getCharLength(char);\n char = text.slice(i, i + l);\n var rest = text.slice(i + l);\n\n if (isWord(char, rest)) {\n started = true;\n length += l;\n } else if (!started) {\n length += l;\n } else {\n break;\n }\n\n i += l;\n }\n\n return length;\n}\n/**\n * Get the offset to the end of the word before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getWordOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = Object(esrever__WEBPACK_IMPORTED_MODULE_4__[\"reverse\"])(text);\n var o = getWordOffset(text);\n return o;\n}\n/**\n * Get the offset to the end of the word after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getWordOffsetForward(text, offset) {\n text = text.slice(offset);\n var o = getWordOffset(text);\n return o;\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar String = {\n getCharOffsetForward: getCharOffsetForward,\n getCharOffsetBackward: getCharOffsetBackward,\n getWordOffsetBackward: getWordOffsetBackward,\n getWordOffsetForward: getWordOffsetForward\n};\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$1 = {};\n/**\n * Add a new `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$1.addMarkAtRange = function (change, range, mark) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (range.isCollapsed) return;\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n var texts = document.getTextsAtRange(range);\n texts.forEach(function (node) {\n var key = node.key;\n var index = 0;\n var length = node.text.length;\n if (key == startKey) index = startOffset;\n if (key == endKey) length = endOffset;\n if (key == startKey && key == endKey) length = endOffset - startOffset;\n change.addMarkByKey(key, index, length, mark, {\n normalize: normalize\n });\n });\n};\n/**\n * Add a list of `marks` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Array} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.addMarksAtRange = function (change, range, marks) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n marks.forEach(function (mark) {\n return change.addMarkAtRange(range, mark, options);\n });\n};\n/**\n * Delete everything in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteAtRange = function (change, range) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n if (range.isCollapsed) return; // Snapshot the selection, which creates an extra undo save point, so that\n // when you undo a delete, the expanded selection will be retained.\n\n change.snapshotSelection();\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n var document = value.document;\n var isStartVoid = document.hasVoidParent(startKey);\n var isEndVoid = document.hasVoidParent(endKey);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey); // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n\n var isHanging = startOffset == 0 && endOffset == 0 && isStartVoid == false && startKey == startBlock.getFirstText().key && endKey == endBlock.getFirstText().key; // If it's a hanging selection, nudge it back to end in the previous text.\n\n if (isHanging && isEndVoid) {\n var prevText = document.getPreviousText(endKey);\n endKey = prevText.key;\n endOffset = prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey);\n } // If the start node is inside a void node, remove the void node and update\n // the starting point to be right after it, continuously until the start point\n // is not a void, or until the entire range is handled.\n\n\n while (isStartVoid) {\n var startVoid = document.getClosestVoid(startKey);\n var nextText = document.getNextText(startKey);\n change.removeNodeByKey(startVoid.key, {\n normalize: false\n }); // If the start and end keys are the same, we're done.\n\n if (startKey == endKey) return; // If there is no next text node, we're done.\n\n if (!nextText) return; // Continue...\n\n document = change.value.document;\n startKey = nextText.key;\n startOffset = 0;\n isStartVoid = document.hasVoidParent(startKey);\n } // If the end node is inside a void node, do the same thing but backwards. But\n // we don't need any aborting checks because if we've gotten this far there\n // must be a non-void node that will exit the loop.\n\n\n while (isEndVoid) {\n var endVoid = document.getClosestVoid(endKey);\n\n var _prevText = document.getPreviousText(endKey);\n\n change.removeNodeByKey(endVoid.key, {\n normalize: false\n }); // Continue...\n\n document = change.value.document;\n endKey = _prevText.key;\n endOffset = _prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey);\n } // If the start and end key are the same, and it was a hanging selection, we\n // can just remove the entire block.\n\n\n if (startKey == endKey && isHanging) {\n change.removeNodeByKey(startBlock.key, {\n normalize: normalize\n });\n return;\n } else if (startKey == endKey) {\n // Otherwise, if it wasn't hanging, we're inside a single text node, so we can\n // simply remove the text in the range.\n var index = startOffset;\n var length = endOffset - startOffset;\n change.removeTextByKey(startKey, index, length, {\n normalize: normalize\n });\n return;\n } else {\n // Otherwise, we need to recursively remove text and nodes inside the start\n // block after the start offset and inside the end block before the end\n // offset. Then remove any blocks that are in between the start and end\n // blocks. Then finally merge the start and end nodes.\n startBlock = document.getClosestBlock(startKey);\n endBlock = document.getClosestBlock(endKey);\n var startText = document.getNode(startKey);\n var endText = document.getNode(endKey);\n var startLength = startText.text.length - startOffset;\n var endLength = endOffset;\n var ancestor = document.getCommonAncestor(startKey, endKey);\n var startChild = ancestor.getFurthestAncestor(startKey);\n var endChild = ancestor.getFurthestAncestor(endKey);\n var startParent = document.getParent(startBlock.key);\n var startParentIndex = startParent.nodes.indexOf(startBlock);\n var endParentIndex = startParent.nodes.indexOf(endBlock);\n var child = void 0; // Iterate through all of the nodes in the tree after the start text node\n // but inside the end child, and remove them.\n\n child = startText;\n\n while (child.key != startChild.key) {\n var parent = document.getParent(child.key);\n\n var _index = parent.nodes.indexOf(child);\n\n var afters = parent.nodes.slice(_index + 1);\n afters.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key, {\n normalize: false\n });\n });\n child = parent;\n } // Remove all of the middle children.\n\n\n var startChildIndex = ancestor.nodes.indexOf(startChild);\n var endChildIndex = ancestor.nodes.indexOf(endChild);\n var middles = ancestor.nodes.slice(startChildIndex + 1, endChildIndex);\n middles.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key, {\n normalize: false\n });\n }); // Remove the nodes before the end text node in the tree.\n\n child = endText;\n\n while (child.key != endChild.key) {\n var _parent = document.getParent(child.key);\n\n var _index2 = _parent.nodes.indexOf(child);\n\n var befores = _parent.nodes.slice(0, _index2);\n\n befores.reverse().forEach(function (node) {\n change.removeNodeByKey(node.key, {\n normalize: false\n });\n });\n child = _parent;\n } // Remove any overlapping text content from the leaf text nodes.\n\n\n if (startLength != 0) {\n change.removeTextByKey(startKey, startOffset, startLength, {\n normalize: false\n });\n }\n\n if (endLength != 0) {\n change.removeTextByKey(endKey, 0, endOffset, {\n normalize: false\n });\n } // If the start and end blocks aren't the same, move and merge the end block\n // into the start block.\n\n\n if (startBlock.key != endBlock.key) {\n document = change.value.document;\n var lonely = document.getFurthestOnlyChildAncestor(endBlock.key); // Move the end block to be right after the start block.\n\n if (endParentIndex != startParentIndex + 1) {\n change.moveNodeByKey(endBlock.key, startParent.key, startParentIndex + 1, {\n normalize: false\n });\n } // If the selection is hanging, just remove the start block, otherwise\n // merge the end block into it.\n\n\n if (isHanging) {\n change.removeNodeByKey(startBlock.key, {\n normalize: false\n });\n } else {\n change.mergeNodeByKey(endBlock.key, {\n normalize: false\n });\n } // If nested empty blocks are left over above the end block, remove them.\n\n\n if (lonely) {\n change.removeNodeByKey(lonely.key, {\n normalize: false\n });\n }\n } // If we should normalize, do it now after everything.\n\n\n if (normalize) {\n change.normalizeNodeByKey(ancestor.key);\n }\n }\n};\n/**\n * Delete backward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteCharBackwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n var n = String.getCharOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n, options);\n};\n/**\n * Delete backward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteLineBackwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n change.deleteBackwardAtRange(range, o, options);\n};\n/**\n * Delete backward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteWordBackwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n var n = String.getWordOffsetBackward(text, o);\n change.deleteBackwardAtRange(range, n, options);\n};\n/**\n * Delete backward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteBackwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (n === 0) return;\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var _range = range,\n startKey = _range.startKey,\n focusOffset = _range.focusOffset; // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range, {\n normalize: normalize\n });\n return;\n }\n\n var voidParent = document.getClosestVoid(startKey); // If there is a void parent, delete it.\n\n if (voidParent) {\n change.removeNodeByKey(voidParent.key, {\n normalize: normalize\n });\n return;\n }\n\n var block = document.getClosestBlock(startKey); // If the closest is not void, but empty, remove it\n\n if (block && block.isEmpty && document.nodes.size !== 1) {\n change.removeNodeByKey(block.key, {\n normalize: normalize\n });\n return;\n } // If the range is at the start of the document, abort.\n\n\n if (range.isAtStartOf(document)) {\n return;\n } // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n\n\n var text = document.getDescendant(startKey);\n\n if (range.isAtStartOf(text)) {\n var prev = document.getPreviousText(text.key);\n var prevBlock = document.getClosestBlock(prev.key);\n var prevVoid = document.getClosestVoid(prev.key); // If the previous text node has a void parent, remove it.\n\n if (prevVoid) {\n change.removeNodeByKey(prevVoid.key, {\n normalize: normalize\n });\n return;\n } // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n\n\n if (n == 1 && prevBlock != block) {\n range = range.merge({\n anchorKey: prev.key,\n anchorOffset: prev.text.length\n });\n change.deleteAtRange(range, {\n normalize: normalize\n });\n return;\n }\n } // If the focus offset is farther than the number of characters to delete,\n // just remove the characters backwards inside the current node.\n\n\n if (n < focusOffset) {\n range = range.merge({\n focusOffset: focusOffset - n,\n isBackward: true\n });\n change.deleteAtRange(range, {\n normalize: normalize\n });\n return;\n } // Otherwise, we need to see how many nodes backwards to go.\n\n\n var node = text;\n var offset = 0;\n var traversed = focusOffset;\n\n while (n > traversed) {\n node = document.getPreviousText(node.key);\n var next = traversed + node.text.length;\n\n if (n <= next) {\n offset = next - n;\n break;\n } else {\n traversed = next;\n }\n }\n\n range = range.merge({\n focusKey: node.key,\n focusOffset: offset,\n isBackward: true\n });\n change.deleteAtRange(range, {\n normalize: normalize\n });\n};\n/**\n * Delete forward until the character boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteCharForwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n var n = String.getCharOffsetForward(text, o);\n change.deleteForwardAtRange(range, n, options);\n};\n/**\n * Delete forward until the line boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteLineForwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n change.deleteForwardAtRange(range, startBlock.text.length - o, options);\n};\n/**\n * Delete forward until the word boundary at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteWordForwardAtRange = function (change, range, options) {\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var offset = startBlock.getOffset(startKey);\n var o = offset + startOffset;\n var text = startBlock.text;\n var n = String.getWordOffsetForward(text, o);\n change.deleteForwardAtRange(range, n, options);\n};\n/**\n * Delete forward `n` characters at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} n (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.deleteForwardAtRange = function (change, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (n === 0) return;\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var _range2 = range,\n startKey = _range2.startKey,\n focusOffset = _range2.focusOffset; // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n change.deleteAtRange(range, {\n normalize: normalize\n });\n return;\n }\n\n var voidParent = document.getClosestVoid(startKey); // If the node has a void parent, delete it.\n\n if (voidParent) {\n change.removeNodeByKey(voidParent.key, {\n normalize: normalize\n });\n return;\n }\n\n var block = document.getClosestBlock(startKey); // If the closest is not void, but empty, remove it\n\n if (block && block.isEmpty && document.nodes.size !== 1) {\n var nextBlock = document.getNextBlock(block.key);\n change.removeNodeByKey(block.key, {\n normalize: normalize\n });\n\n if (nextBlock && nextBlock.key) {\n change.moveToStartOf(nextBlock);\n }\n\n return;\n } // If the range is at the start of the document, abort.\n\n\n if (range.isAtEndOf(document)) {\n return;\n } // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n\n\n var text = document.getDescendant(startKey);\n\n if (range.isAtEndOf(text)) {\n var next = document.getNextText(text.key);\n\n var _nextBlock = document.getClosestBlock(next.key);\n\n var nextVoid = document.getClosestVoid(next.key); // If the next text node has a void parent, remove it.\n\n if (nextVoid) {\n change.removeNodeByKey(nextVoid.key, {\n normalize: normalize\n });\n return;\n } // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n\n\n if (n == 1 && _nextBlock != block) {\n range = range.merge({\n focusKey: next.key,\n focusOffset: 0\n });\n change.deleteAtRange(range, {\n normalize: normalize\n });\n return;\n }\n } // If the remaining characters to the end of the node is greater than or equal\n // to the number of characters to delete, just remove the characters forwards\n // inside the current node.\n\n\n if (n <= text.text.length - focusOffset) {\n range = range.merge({\n focusOffset: focusOffset + n\n });\n change.deleteAtRange(range, {\n normalize: normalize\n });\n return;\n } // Otherwise, we need to see how many nodes forwards to go.\n\n\n var node = text;\n var offset = focusOffset;\n var traversed = text.text.length - focusOffset;\n\n while (n > traversed) {\n node = document.getNextText(node.key);\n\n var _next = traversed + node.text.length;\n\n if (n <= _next) {\n offset = n - traversed;\n break;\n } else {\n traversed = _next;\n }\n } // If the focus node is inside a void, go up until right before it.\n\n\n if (document.hasVoidParent(node.key)) {\n var parent = document.getClosestVoid(node.key);\n node = document.getPreviousText(parent.key);\n offset = node.text.length;\n }\n\n range = range.merge({\n focusKey: node.key,\n focusOffset: offset\n });\n change.deleteAtRange(range, {\n normalize: normalize\n });\n};\n/**\n * Insert a `block` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|String|Object} block\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.insertBlockAtRange = function (change, range, block) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n block = Block.create(block);\n var normalize = change.getFlag('normalize', options);\n\n if (range.isExpanded) {\n change.deleteAtRange(range);\n range = range.collapseToStart();\n }\n\n var value = change.value;\n var document = value.document;\n var _range3 = range,\n startKey = _range3.startKey,\n startOffset = _range3.startOffset;\n var startBlock = document.getClosestBlock(startKey);\n var startInline = document.getClosestInline(startKey);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n\n if (startBlock.isVoid) {\n var extra = range.isAtEndOf(startBlock) ? 1 : 0;\n change.insertNodeByKey(parent.key, index + extra, block, {\n normalize: normalize\n });\n } else if (startBlock.isEmpty) {\n change.insertNodeByKey(parent.key, index + 1, block, {\n normalize: normalize\n });\n } else if (range.isAtStartOf(startBlock)) {\n change.insertNodeByKey(parent.key, index, block, {\n normalize: normalize\n });\n } else if (range.isAtEndOf(startBlock)) {\n change.insertNodeByKey(parent.key, index + 1, block, {\n normalize: normalize\n });\n } else {\n if (startInline && startInline.isVoid) {\n var atEnd = range.isAtEndOf(startInline);\n var siblingText = atEnd ? document.getNextText(startKey) : document.getPreviousText(startKey);\n var splitRange = atEnd ? range.moveToStartOf(siblingText) : range.moveToEndOf(siblingText);\n startKey = splitRange.startKey;\n startOffset = splitRange.startOffset;\n }\n\n change.splitDescendantsByKey(startBlock.key, startKey, startOffset, {\n normalize: false\n });\n change.insertNodeByKey(parent.key, index + 1, block, {\n normalize: normalize\n });\n }\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Insert a `fragment` at a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Document} fragment\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.insertFragmentAtRange = function (change, range, fragment) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var normalize = change.getFlag('normalize', options); // If the range is expanded, delete it first.\n\n if (range.isExpanded) {\n change.deleteAtRange(range, {\n normalize: false\n });\n\n if (change.value.document.getDescendant(range.startKey)) {\n range = range.collapseToStart();\n } else {\n range = range.collapseTo(range.endKey, 0);\n }\n } // If the fragment is empty, there's nothing to do after deleting.\n\n\n if (!fragment.nodes.size) return; // Regenerate the keys for all of the fragments nodes, so that they're\n // guaranteed not to collide with the existing keys in the document. Otherwise\n // they will be rengerated automatically and we won't have an easy way to\n // reference them.\n\n fragment = fragment.mapDescendants(function (child) {\n return child.regenerateKey();\n }); // Calculate a few things...\n\n var _range4 = range,\n startKey = _range4.startKey,\n startOffset = _range4.startOffset;\n var value = change.value;\n var document = value.document;\n var startText = document.getDescendant(startKey);\n var startBlock = document.getClosestBlock(startText.key);\n var startChild = startBlock.getFurthestAncestor(startText.key);\n var isAtStart = range.isAtStartOf(startBlock);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n var blocks = fragment.getBlocks();\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var firstBlock = blocks.first();\n var lastBlock = blocks.last(); // If the fragment only contains a void block, use `insertBlock` instead.\n\n if (firstBlock == lastBlock && firstBlock.isVoid) {\n change.insertBlockAtRange(range, firstBlock, options);\n return;\n } // If the fragment starts or ends with single nested block, (e.g., table),\n // do not merge this fragment with existing blocks.\n\n\n if (fragment.hasBlocks(firstChild.key) || fragment.hasBlocks(lastChild.key)) {\n fragment.nodes.reverse().forEach(function (node) {\n change.insertBlockAtRange(range, node, options);\n });\n return;\n } // If the first and last block aren't the same, we need to insert all of the\n // nodes after the fragment's first block at the index.\n\n\n if (firstBlock != lastBlock) {\n var lonelyParent = fragment.getFurthest(firstBlock.key, function (p) {\n return p.nodes.size == 1;\n });\n var lonelyChild = lonelyParent || firstBlock;\n var startIndex = parent.nodes.indexOf(startBlock);\n fragment = fragment.removeDescendant(lonelyChild.key);\n fragment.nodes.forEach(function (node, i) {\n var newIndex = startIndex + i + 1;\n change.insertNodeByKey(parent.key, newIndex, node, {\n normalize: false\n });\n });\n } // Check if we need to split the node.\n\n\n if (startOffset != 0) {\n change.splitDescendantsByKey(startChild.key, startKey, startOffset, {\n normalize: false\n });\n } // Update our variables with the new value.\n\n\n document = change.value.document;\n startText = document.getDescendant(startKey);\n startBlock = document.getClosestBlock(startKey);\n startChild = startBlock.getFurthestAncestor(startText.key); // If the first and last block aren't the same, we need to move any of the\n // starting block's children after the split into the last block of the\n // fragment, which has already been inserted.\n\n if (firstBlock != lastBlock) {\n var nextChild = isAtStart ? startChild : startBlock.getNextSibling(startChild.key);\n var nextNodes = nextChild ? startBlock.nodes.skipUntil(function (n) {\n return n.key == nextChild.key;\n }) : Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])();\n var lastIndex = lastBlock.nodes.size;\n nextNodes.forEach(function (node, i) {\n var newIndex = lastIndex + i;\n change.moveNodeByKey(node.key, lastBlock.key, newIndex, {\n normalize: false\n });\n });\n } // If the starting block is empty, we replace it entirely with the first block\n // of the fragment, since this leads to a more expected behavior for the user.\n\n\n if (startBlock.isEmpty) {\n change.removeNodeByKey(startBlock.key, {\n normalize: false\n });\n change.insertNodeByKey(parent.key, index, firstBlock, {\n normalize: false\n });\n } else {\n // Otherwise, we maintain the starting block, and insert all of the first\n // block's inline nodes into it at the split point.\n var inlineChild = startBlock.getFurthestAncestor(startText.key);\n var inlineIndex = startBlock.nodes.indexOf(inlineChild);\n firstBlock.nodes.forEach(function (inline, i) {\n var o = startOffset == 0 ? 0 : 1;\n var newIndex = inlineIndex + i + o;\n change.insertNodeByKey(startBlock.key, newIndex, inline, {\n normalize: false\n });\n });\n } // Normalize if requested.\n\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Insert an `inline` node at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|String|Object} inline\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.insertInlineAtRange = function (change, range, inline) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var normalize = change.getFlag('normalize', options);\n inline = Inline.create(inline);\n\n if (range.isExpanded) {\n change.deleteAtRange(range, {\n normalize: false\n });\n range = range.collapseToStart();\n }\n\n var value = change.value;\n var document = value.document;\n var _range5 = range,\n startKey = _range5.startKey,\n startOffset = _range5.startOffset;\n var parent = document.getParent(startKey);\n var startText = document.assertDescendant(startKey);\n var index = parent.nodes.indexOf(startText);\n if (parent.isVoid) return;\n change.splitNodeByKey(startKey, startOffset, {\n normalize: false\n });\n change.insertNodeByKey(parent.key, index + 1, inline, {\n normalize: false\n });\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Insert `text` at a `range`, with optional `marks`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} text\n * @param {Set} marks (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.insertTextAtRange = function (change, range, text, marks) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = options.normalize;\n var value = change.value;\n var document = value.document;\n var startKey = range.startKey,\n startOffset = range.startOffset;\n var key = startKey;\n var offset = startOffset;\n var parent = document.getParent(startKey);\n if (parent.isVoid) return;\n\n if (range.isExpanded) {\n change.deleteAtRange(range, {\n normalize: false\n }); // Update range start after delete\n\n if (change.value.startKey !== key) {\n key = change.value.startKey;\n offset = change.value.startOffset;\n }\n } // PERF: Unless specified, don't normalize if only inserting text.\n\n\n if (normalize === undefined) {\n normalize = range.isExpanded && marks && marks.size !== 0;\n }\n\n change.insertTextByKey(key, offset, text, marks, {\n normalize: false\n });\n\n if (normalize) {\n // normalize in the narrowest existing block that originally contains startKey and endKey\n var commonAncestor = document.getCommonAncestor(startKey, range.endKey);\n var ancestors = document.getAncestors(commonAncestor.key).push(commonAncestor);\n var normalizeAncestor = ancestors.findLast(function (n) {\n return change.value.document.getDescendant(n.key);\n }); // it is possible that normalizeAncestor doesn't return any node\n // on that case fallback to startKey to be normalized\n\n var normalizeKey = normalizeAncestor ? normalizeAncestor.key : startKey;\n change.normalizeNodeByKey(normalizeKey);\n }\n};\n/**\n * Remove an existing `mark` to the characters at `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mark|String} mark (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.removeMarkAtRange = function (change, range, mark) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (range.isCollapsed) return;\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var texts = document.getTextsAtRange(range);\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n texts.forEach(function (node) {\n var key = node.key;\n var index = 0;\n var length = node.text.length;\n if (key == startKey) index = startOffset;\n if (key == endKey) length = endOffset;\n if (key == startKey && key == endKey) length = endOffset - startOffset;\n change.removeMarkByKey(key, index, length, mark, {\n normalize: normalize\n });\n });\n};\n/**\n * Set the `properties` of block nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.setBlocksAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var blocks = document.getBlocksAtRange(range);\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset,\n isCollapsed = range.isCollapsed;\n var isStartVoid = document.hasVoidParent(startKey);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey); // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n\n var isHanging = isCollapsed == false && startOffset == 0 && endOffset == 0 && isStartVoid == false && startKey == startBlock.getFirstText().key && endKey == endBlock.getFirstText().key; // If it's a hanging selection, ignore the last block.\n\n var sets = isHanging ? blocks.slice(0, -1) : blocks;\n sets.forEach(function (block) {\n change.setNodeByKey(block.key, properties, {\n normalize: normalize\n });\n });\n};\n\nChanges$1.setBlockAtRange = function () {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.33.0', 'The `setBlockAtRange` method of Slate changes has been renamed to `setBlocksAtRange`.');\n Changes$1.setBlocksAtRange.apply(Changes$1, arguments);\n};\n/**\n * Set the `properties` of inline nodes in a `range`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.setInlinesAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var inlines = document.getInlinesAtRange(range);\n inlines.forEach(function (inline) {\n change.setNodeByKey(inline.key, properties, {\n normalize: normalize\n });\n });\n};\n\nChanges$1.setInlineAtRange = function () {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.33.0', 'The `setInlineAtRange` method of Slate changes has been renamed to `setInlinesAtRange`.');\n Changes$1.setInlinesAtRange.apply(Changes$1, arguments);\n};\n/**\n * Split the block nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.splitBlockAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var normalize = change.getFlag('normalize', options);\n var _range6 = range,\n startKey = _range6.startKey,\n startOffset = _range6.startOffset,\n endOffset = _range6.endOffset,\n endKey = _range6.endKey;\n var value = change.value;\n var document = value.document;\n var node = document.assertDescendant(startKey);\n var parent = document.getClosestBlock(node.key);\n var h = 0;\n\n while (parent && parent.object == 'block' && h < height) {\n node = parent;\n parent = document.getClosestBlock(parent.key);\n h++;\n }\n\n change.splitDescendantsByKey(node.key, startKey, startOffset, {\n normalize: normalize && range.isCollapsed\n });\n\n if (range.isExpanded) {\n if (range.isBackward) range = range.flip();\n var nextBlock = change.value.document.getNextBlock(node.key);\n range = range.moveAnchorToStartOf(nextBlock);\n\n if (startKey === endKey) {\n range = range.moveFocusTo(range.anchorKey, endOffset - startOffset);\n }\n\n change.deleteAtRange(range, {\n normalize: normalize\n });\n }\n};\n/**\n * Split the inline nodes at a `range`, to optional `height`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Number} height (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.splitInlineAtRange = function (change, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var normalize = change.getFlag('normalize', options);\n\n if (range.isExpanded) {\n change.deleteAtRange(range, {\n normalize: normalize\n });\n range = range.collapseToStart();\n }\n\n var _range7 = range,\n startKey = _range7.startKey,\n startOffset = _range7.startOffset;\n var value = change.value;\n var document = value.document;\n var node = document.assertDescendant(startKey);\n var parent = document.getClosestInline(node.key);\n var h = 0;\n\n while (parent && parent.object == 'inline' && h < height) {\n node = parent;\n parent = document.getClosestInline(parent.key);\n h++;\n }\n\n change.splitDescendantsByKey(node.key, startKey, startOffset, {\n normalize: normalize\n });\n};\n/**\n * Add or remove a `mark` from the characters at `range`, depending on whether\n * it's already there.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Mixed} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.toggleMarkAtRange = function (change, range, mark) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n if (range.isCollapsed) return;\n mark = Mark.create(mark);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var marks = document.getActiveMarksAtRange(range);\n var exists = marks.some(function (m) {\n return m.equals(mark);\n });\n\n if (exists) {\n change.removeMarkAtRange(range, mark, {\n normalize: normalize\n });\n } else {\n change.addMarkAtRange(range, mark, {\n normalize: normalize\n });\n }\n};\n/**\n * Unwrap all of the block nodes in a `range` from a block with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.unwrapBlockAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n properties = Node.createProperties(properties);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var blocks = document.getBlocksAtRange(range);\n var wrappers = blocks.map(function (block) {\n return document.getClosest(block.key, function (parent) {\n if (parent.object != 'block') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.isVoid != null && parent.isVoid != properties.isVoid) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n wrappers.forEach(function (block) {\n var first = block.nodes.first();\n var last = block.nodes.last();\n var parent = document.getParent(block.key);\n var index = parent.nodes.indexOf(block);\n var children = block.nodes.filter(function (child) {\n return blocks.some(function (b) {\n return child == b || child.hasDescendant(b.key);\n });\n });\n var firstMatch = children.first();\n var lastMatch = children.last();\n\n if (first == firstMatch && last == lastMatch) {\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i, {\n normalize: false\n });\n });\n change.removeNodeByKey(block.key, {\n normalize: false\n });\n } else if (last == lastMatch) {\n block.nodes.skipUntil(function (n) {\n return n == firstMatch;\n }).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + 1 + i, {\n normalize: false\n });\n });\n } else if (first == firstMatch) {\n block.nodes.takeUntil(function (n) {\n return n == lastMatch;\n }).push(lastMatch).forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i, {\n normalize: false\n });\n });\n } else {\n var firstText = firstMatch.getFirstText();\n change.splitDescendantsByKey(block.key, firstText.key, 0, {\n normalize: false\n });\n document = change.value.document;\n children.forEach(function (child, i) {\n if (i == 0) {\n var extra = child;\n child = document.getNextBlock(child.key);\n change.removeNodeByKey(extra.key, {\n normalize: false\n });\n }\n\n change.moveNodeByKey(child.key, parent.key, index + 1 + i, {\n normalize: false\n });\n });\n }\n }); // TODO: optmize to only normalize the right block\n\n if (normalize) {\n change.normalizeDocument();\n }\n};\n/**\n * Unwrap the inline nodes in a `range` from an inline with `properties`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String|Object} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.unwrapInlineAtRange = function (change, range, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n properties = Node.createProperties(properties);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var texts = document.getTextsAtRange(range);\n var inlines = texts.map(function (text) {\n return document.getClosest(text.key, function (parent) {\n if (parent.object != 'inline') return false;\n if (properties.type != null && parent.type != properties.type) return false;\n if (properties.isVoid != null && parent.isVoid != properties.isVoid) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n inlines.forEach(function (inline) {\n var parent = change.value.document.getParent(inline.key);\n var index = parent.nodes.indexOf(inline);\n inline.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, parent.key, index + i, {\n normalize: false\n });\n });\n }); // TODO: optmize to only normalize the right block\n\n if (normalize) {\n change.normalizeDocument();\n }\n};\n/**\n * Wrap all of the blocks in a `range` in a new `block`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Block|Object|String} block\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.wrapBlockAtRange = function (change, range, block) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var blocks = document.getBlocksAtRange(range);\n var firstblock = blocks.first();\n var lastblock = blocks.last();\n var parent = void 0,\n siblings = void 0,\n index = void 0; // If there is only one block in the selection then we know the parent and\n // siblings.\n\n if (blocks.length === 1) {\n parent = document.getParent(firstblock.key);\n siblings = blocks;\n } else {\n // Determine closest shared parent to all blocks in selection.\n parent = document.getClosest(firstblock.key, function (p1) {\n return !!document.getClosest(lastblock.key, function (p2) {\n return p1 == p2;\n });\n });\n } // If no shared parent could be found then the parent is the document.\n\n\n if (parent == null) parent = document; // Create a list of direct children siblings of parent that fall in the\n // selection.\n\n if (siblings == null) {\n var indexes = parent.nodes.reduce(function (ind, node, i) {\n if (node == firstblock || node.hasDescendant(firstblock.key)) ind[0] = i;\n if (node == lastblock || node.hasDescendant(lastblock.key)) ind[1] = i;\n return ind;\n }, []);\n index = indexes[0];\n siblings = parent.nodes.slice(indexes[0], indexes[1] + 1);\n } // Get the index to place the new wrapped node at.\n\n\n if (index == null) {\n index = parent.nodes.indexOf(siblings.first());\n } // Inject the new block node into the parent.\n\n\n change.insertNodeByKey(parent.key, index, block, {\n normalize: false\n }); // Move the sibling nodes into the new block node.\n\n siblings.forEach(function (node, i) {\n change.moveNodeByKey(node.key, block.key, i, {\n normalize: false\n });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Wrap the text and inlines in a `range` in a new `inline`.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {Inline|Object|String} inline\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.wrapInlineAtRange = function (change, range, inline) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var value = change.value;\n var document = value.document;\n var normalize = change.getFlag('normalize', options);\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n\n if (range.isCollapsed) {\n // Wrapping an inline void\n var inlineParent = document.getClosestInline(startKey);\n\n if (!inlineParent.isVoid) {\n return;\n }\n\n return change.wrapInlineByKey(inlineParent.key, inline, options);\n }\n\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var blocks = document.getBlocksAtRange(range);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey);\n var startInline = document.getClosestInline(startKey);\n var endInline = document.getClosestInline(endKey);\n var startChild = startBlock.getFurthestAncestor(startKey);\n var endChild = endBlock.getFurthestAncestor(endKey);\n\n if (!startInline || startInline != endInline) {\n change.splitDescendantsByKey(endChild.key, endKey, endOffset, {\n normalize: false\n });\n change.splitDescendantsByKey(startChild.key, startKey, startOffset, {\n normalize: false\n });\n }\n\n document = change.value.document;\n startBlock = document.getDescendant(startBlock.key);\n endBlock = document.getDescendant(endBlock.key);\n startChild = startBlock.getFurthestAncestor(startKey);\n endChild = endBlock.getFurthestAncestor(endKey);\n var startIndex = startBlock.nodes.indexOf(startChild);\n var endIndex = endBlock.nodes.indexOf(endChild);\n\n if (startInline && startInline == endInline) {\n var text = startBlock.getTextsAtRange(range).get(0).splitText(startOffset)[1].splitText(endOffset - startOffset)[0];\n inline = inline.set('nodes', Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"])([text]));\n Changes$1.insertInlineAtRange(change, range, inline, {\n normalize: false\n });\n var inlinekey = inline.getFirstText().key;\n var rng = {\n anchorKey: inlinekey,\n focusKey: inlinekey,\n anchorOffset: 0,\n focusOffset: endOffset - startOffset,\n isFocused: true\n };\n change.select(rng);\n } else if (startBlock == endBlock) {\n document = change.value.document;\n startBlock = document.getClosestBlock(startKey);\n startChild = startBlock.getFurthestAncestor(startKey);\n var startInner = document.getNextSibling(startChild.key);\n var startInnerIndex = startBlock.nodes.indexOf(startInner);\n var endInner = startKey == endKey ? startInner : startBlock.getFurthestAncestor(endKey);\n var inlines = startBlock.nodes.skipUntil(function (n) {\n return n == startInner;\n }).takeUntil(function (n) {\n return n == endInner;\n }).push(endInner);\n var node = inline.regenerateKey();\n change.insertNodeByKey(startBlock.key, startInnerIndex, node, {\n normalize: false\n });\n inlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i, {\n normalize: false\n });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(startBlock.key);\n }\n } else {\n var startInlines = startBlock.nodes.slice(startIndex + 1);\n var endInlines = endBlock.nodes.slice(0, endIndex + 1);\n var startNode = inline.regenerateKey();\n var endNode = inline.regenerateKey();\n change.insertNodeByKey(startBlock.key, startIndex + 1, startNode, {\n normalize: false\n });\n change.insertNodeByKey(endBlock.key, endIndex, endNode, {\n normalize: false\n });\n startInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, startNode.key, i, {\n normalize: false\n });\n });\n endInlines.forEach(function (child, i) {\n change.moveNodeByKey(child.key, endNode.key, i, {\n normalize: false\n });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(startBlock.key).normalizeNodeByKey(endBlock.key);\n }\n\n blocks.slice(1, -1).forEach(function (block) {\n var node = inline.regenerateKey();\n change.insertNodeByKey(block.key, 0, node, {\n normalize: false\n });\n block.nodes.forEach(function (child, i) {\n change.moveNodeByKey(child.key, node.key, i, {\n normalize: false\n });\n });\n\n if (normalize) {\n change.normalizeNodeByKey(block.key);\n }\n });\n }\n};\n/**\n * Wrap the text in a `range` in a prefix/suffix.\n *\n * @param {Change} change\n * @param {Range} range\n * @param {String} prefix\n * @param {String} suffix (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$1.wrapTextAtRange = function (change, range, prefix) {\n var suffix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : prefix;\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = change.getFlag('normalize', options);\n var startKey = range.startKey,\n endKey = range.endKey;\n var start = range.collapseToStart();\n var end = range.collapseToEnd();\n\n if (startKey == endKey) {\n end = end.move(prefix.length);\n }\n\n change.insertTextAtRange(start, prefix, [], {\n normalize: normalize\n });\n change.insertTextAtRange(end, suffix, [], {\n normalize: normalize\n });\n};\n/**\n * Changes.\n *\n * @type {Object}\n */\n\n\nvar Changes$2 = {};\n/**\n * Add mark to text at `offset` and `length` in node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {Mixed} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\nChanges$2.addMarkByKey = function (change, key, offset, length, mark) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n mark = Mark.create(mark);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getNode(key);\n var leaves = node.getLeaves();\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n o += leaf.text.length; // If the leaf doesn't overlap with the operation, continue on.\n\n if (ay < bx || by < ax) return; // If the leaf already has the mark, continue on.\n\n if (leaf.marks.has(mark)) return; // Otherwise, determine which offset and characters overlap.\n\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n operations.push({\n type: 'add_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n change.applyOperations(operations);\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Insert a `fragment` at `index` in a node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} index\n * @param {Fragment} fragment\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.insertFragmentByKey = function (change, key, index, fragment) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = change.getFlag('normalize', options);\n fragment.nodes.forEach(function (node, i) {\n change.insertNodeByKey(key, index + i, node);\n });\n\n if (normalize) {\n change.normalizeNodeByKey(key);\n }\n};\n/**\n * Insert a `node` at `index` in a node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} index\n * @param {Node} node\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.insertNodeByKey = function (change, key, index, node) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n change.applyOperation({\n type: 'insert_node',\n value: value,\n path: [].concat(toConsumableArray(path), [index]),\n node: node\n });\n\n if (normalize) {\n change.normalizeNodeByKey(key);\n }\n};\n/**\n * Insert `text` at `offset` in node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.insertTextByKey = function (change, key, offset, text, marks) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getNode(key);\n marks = marks || node.getMarksAtIndex(offset);\n change.applyOperation({\n type: 'insert_text',\n value: value,\n path: path,\n offset: offset,\n text: text,\n marks: marks\n });\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Merge a node by `key` with the previous node.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.mergeNodeByKey = function (change, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var original = document.getDescendant(key);\n var previous = document.getPreviousSibling(key);\n\n if (!previous) {\n throw new Error('Unable to merge node with key \"' + key + '\", no previous key.');\n }\n\n var position = previous.object == 'text' ? previous.text.length : previous.nodes.size;\n change.applyOperation({\n type: 'merge_node',\n value: value,\n path: path,\n position: position,\n // for undos to succeed we only need the type and data because\n // these are the only properties that get changed in the merge operation\n properties: {\n type: original.type,\n data: original.data\n },\n target: null\n });\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Move a node by `key` to a new parent by `newKey` and `index`.\n * `newKey` is the key of the container (it can be the document itself)\n *\n * @param {Change} change\n * @param {String} key\n * @param {String} newKey\n * @param {Number} index\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.moveNodeByKey = function (change, key, newKey, newIndex) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var newPath = document.getPath(newKey);\n change.applyOperation({\n type: 'move_node',\n value: value,\n path: path,\n newPath: [].concat(toConsumableArray(newPath), [newIndex])\n });\n\n if (normalize) {\n var parent = document.getCommonAncestor(key, newKey);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Remove mark from text at `offset` and `length` in node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.removeMarkByKey = function (change, key, offset, length, mark) {\n var options = arguments.length > 5 && arguments[5] !== undefined ? arguments[5] : {};\n mark = Mark.create(mark);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getNode(key);\n var leaves = node.getLeaves();\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n o += leaf.text.length; // If the leaf doesn't overlap with the operation, continue on.\n\n if (ay < bx || by < ax) return; // If the leaf already has the mark, continue on.\n\n if (!leaf.marks.has(mark)) return; // Otherwise, determine which offset and characters overlap.\n\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n operations.push({\n type: 'remove_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n change.applyOperations(operations);\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Remove all `marks` from node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.removeAllMarksByKey = function (change, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var state = change.state;\n var document = state.document;\n var node = document.getNode(key);\n var texts = node.object === 'text' ? [node] : node.getTextsAsArray();\n texts.forEach(function (text) {\n text.getMarksAsArray().forEach(function (mark) {\n change.removeMarkByKey(text.key, 0, text.text.length, mark, options);\n });\n });\n};\n/**\n * Remove a node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.removeNodeByKey = function (change, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getNode(key);\n change.applyOperation({\n type: 'remove_node',\n value: value,\n path: path,\n node: node\n });\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Insert `text` at `offset` in node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {String} text\n * @param {Set} marks (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.setTextByKey = function (change, key, text, marks) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var textNode = change.value.document.getDescendant(key);\n change.replaceTextByKey(key, 0, textNode.text.length, text, marks, options);\n};\n/**\n * Replace A Length of Text with another string or text\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {string} text\n * @param {Set} marks (optional)\n * @param {Object} options\n * @property {Boolean} normalize\n *\n */\n\n\nChanges$2.replaceTextByKey = function (change, key, offset, length, text, marks, options) {\n var document = change.value.document;\n var textNode = document.getDescendant(key);\n\n if (length + offset > textNode.text.length) {\n length = textNode.text.length - offset;\n }\n\n var range = Range.create({\n anchorKey: key,\n focusKey: key,\n anchorOffset: offset,\n focusOffset: offset + length\n });\n var activeMarks = document.getActiveMarksAtRange(range);\n change.removeTextByKey(key, offset, length, {\n normalize: false\n });\n\n if (!marks) {\n // Do not use mark at index when marks and activeMarks are both empty\n marks = activeMarks ? activeMarks : [];\n } else if (activeMarks) {\n // Do not use `has` because we may want to reset marks like font-size with an updated data;\n activeMarks = activeMarks.filter(function (activeMark) {\n return !marks.find(function (m) {\n return activeMark.type === m.type;\n });\n });\n marks = activeMarks.merge(marks);\n }\n\n change.insertTextByKey(key, offset, text, marks, options);\n};\n/**\n * Remove text at `offset` and `length` in node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.removeTextByKey = function (change, key, offset, length) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getNode(key);\n var leaves = node.getLeaves();\n var text = node.text;\n var removals = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n o += leaf.text.length; // If the leaf doesn't overlap with the removal, continue on.\n\n if (ay < bx || by < ax) return; // Otherwise, determine which offset and characters overlap.\n\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n var string = text.slice(start, end);\n removals.push({\n type: 'remove_text',\n value: value,\n path: path,\n offset: start,\n text: string,\n marks: leaf.marks\n });\n }); // Apply in reverse order, so subsequent removals don't impact previous ones.\n\n change.applyOperations(removals.reverse());\n\n if (normalize) {\n var block = document.getClosestBlock(key);\n change.normalizeNodeByKey(block.key);\n }\n};\n/**\n`* Replace a `node` with another `node`\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object|Node} node\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.replaceNodeByKey = function (change, key, newNode) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n newNode = Node.create(newNode);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var node = document.getNode(key);\n var parent = document.getParent(key);\n var index = parent.nodes.indexOf(node);\n change.removeNodeByKey(key, {\n normalize: false\n });\n change.insertNodeByKey(parent.key, index, newNode, {\n normalize: false\n });\n\n if (normalize) {\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Set `properties` on mark on text at `offset` and `length` in node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.setMarkByKey = function (change, key, offset, length, mark, properties) {\n var options = arguments.length > 6 && arguments[6] !== undefined ? arguments[6] : {};\n mark = Mark.create(mark);\n properties = Mark.createProperties(properties);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n change.applyOperation({\n type: 'set_mark',\n value: value,\n path: path,\n offset: offset,\n length: length,\n mark: mark,\n properties: properties\n });\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Set `properties` on a node by `key`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.setNodeByKey = function (change, key, properties) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n properties = Node.createProperties(properties);\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getNode(key);\n change.applyOperation({\n type: 'set_node',\n value: value,\n path: path,\n node: node,\n properties: properties\n });\n\n if (normalize) {\n change.normalizeNodeByKey(node.key);\n }\n};\n/**\n * Split a node by `key` at `position`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} position\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.splitNodeByKey = function (change, key, position) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$normalize = options.normalize,\n normalize = _options$normalize === undefined ? true : _options$normalize,\n _options$target = options.target,\n target = _options$target === undefined ? null : _options$target;\n var value = change.value;\n var document = value.document;\n var path = document.getPath(key);\n var node = document.getDescendantAtPath(path);\n change.applyOperation({\n type: 'split_node',\n value: value,\n path: path,\n position: position,\n properties: {\n type: node.type,\n data: node.data\n },\n target: target\n });\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Split a node deeply down the tree by `key`, `textKey` and `textOffset`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Number} position\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.splitDescendantsByKey = function (change, key, textKey, textOffset) {\n var options = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {};\n\n if (key == textKey) {\n change.splitNodeByKey(textKey, textOffset, options);\n return;\n }\n\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var text = document.getNode(textKey);\n var ancestors = document.getAncestors(textKey);\n var nodes = ancestors.skipUntil(function (a) {\n return a.key == key;\n }).reverse().unshift(text);\n var previous = void 0;\n var index = void 0;\n nodes.forEach(function (node) {\n var prevIndex = index == null ? null : index;\n index = previous ? node.nodes.indexOf(previous) + 1 : textOffset;\n previous = node;\n change.splitNodeByKey(node.key, index, {\n normalize: false,\n target: prevIndex\n });\n });\n\n if (normalize) {\n var parent = document.getParent(key);\n change.normalizeNodeByKey(parent.key);\n }\n};\n/**\n * Unwrap content from an inline parent with `properties`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.unwrapInlineByKey = function (change, key, properties, options) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var node = document.assertDescendant(key);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOf(first, last);\n change.unwrapInlineAtRange(range, properties, options);\n};\n/**\n * Unwrap content from a block parent with `properties`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object|String} properties\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.unwrapBlockByKey = function (change, key, properties, options) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var node = document.assertDescendant(key);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOf(first, last);\n change.unwrapBlockAtRange(range, properties, options);\n};\n/**\n * Unwrap a single node from its parent.\n *\n * If the node is surrounded with siblings, its parent will be\n * split. If the node is the only child, the parent is removed, and\n * simply replaced by the node itself. Cannot unwrap a root node.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.unwrapNodeByKey = function (change, key) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var normalize = change.getFlag('normalize', options);\n var value = change.value;\n var document = value.document;\n var parent = document.getParent(key);\n var node = parent.getChild(key);\n var index = parent.nodes.indexOf(node);\n var isFirst = index === 0;\n var isLast = index === parent.nodes.size - 1;\n var parentParent = document.getParent(parent.key);\n var parentIndex = parentParent.nodes.indexOf(parent);\n\n if (parent.nodes.size === 1) {\n change.moveNodeByKey(key, parentParent.key, parentIndex, {\n normalize: false\n });\n change.removeNodeByKey(parent.key, options);\n } else if (isFirst) {\n // Just move the node before its parent.\n change.moveNodeByKey(key, parentParent.key, parentIndex, options);\n } else if (isLast) {\n // Just move the node after its parent.\n change.moveNodeByKey(key, parentParent.key, parentIndex + 1, options);\n } else {\n // Split the parent.\n change.splitNodeByKey(parent.key, index, {\n normalize: false\n }); // Extract the node in between the splitted parent.\n\n change.moveNodeByKey(key, parentParent.key, parentIndex + 1, {\n normalize: false\n });\n\n if (normalize) {\n change.normalizeNodeByKey(parentParent.key);\n }\n }\n};\n/**\n * Wrap a node in a block with `properties`.\n *\n * @param {Change} change\n * @param {String} key The node to wrap\n * @param {Block|Object|String} block The wrapping block (its children are discarded)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.wrapBlockByKey = function (change, key, block, options) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var document = change.value.document;\n var node = document.assertDescendant(key);\n var parent = document.getParent(node.key);\n var index = parent.nodes.indexOf(node);\n change.insertNodeByKey(parent.key, index, block, {\n normalize: false\n });\n change.moveNodeByKey(node.key, block.key, 0, options);\n};\n/**\n * Wrap a node in an inline with `properties`.\n *\n * @param {Change} change\n * @param {String} key The node to wrap\n * @param {Block|Object|String} inline The wrapping inline (its children are discarded)\n * @param {Object} options\n * @property {Boolean} normalize\n */\n\n\nChanges$2.wrapInlineByKey = function (change, key, inline, options) {\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var document = change.value.document;\n var node = document.assertDescendant(key);\n var parent = document.getParent(node.key);\n var index = parent.nodes.indexOf(node);\n change.insertNodeByKey(parent.key, index, inline, {\n normalize: false\n });\n change.moveNodeByKey(node.key, inline.key, 0, options);\n};\n/**\n * Wrap a node by `key` with `parent`.\n *\n * @param {Change} change\n * @param {String} key\n * @param {Node|Object} parent\n * @param {Object} options\n */\n\n\nChanges$2.wrapNodeByKey = function (change, key, parent) {\n parent = Node.create(parent);\n parent = parent.set('nodes', parent.nodes.clear());\n\n if (parent.object == 'block') {\n change.wrapBlockByKey(key, parent);\n return;\n }\n\n if (parent.object == 'inline') {\n change.wrapInlineByKey(key, parent);\n return;\n }\n};\n/**\n * Slate operation attributes.\n *\n * @type {Array}\n */\n\n\nvar OPERATION_ATTRIBUTES = {\n add_mark: ['value', 'path', 'offset', 'length', 'mark'],\n insert_node: ['value', 'path', 'node'],\n insert_text: ['value', 'path', 'offset', 'text', 'marks'],\n merge_node: ['value', 'path', 'position', 'properties', 'target'],\n move_node: ['value', 'path', 'newPath'],\n remove_mark: ['value', 'path', 'offset', 'length', 'mark'],\n remove_node: ['value', 'path', 'node'],\n remove_text: ['value', 'path', 'offset', 'text', 'marks'],\n set_mark: ['value', 'path', 'offset', 'length', 'mark', 'properties'],\n set_node: ['value', 'path', 'node', 'properties'],\n set_selection: ['value', 'selection', 'properties'],\n set_value: ['value', 'properties'],\n split_node: ['value', 'path', 'position', 'properties', 'target']\n /**\n * Export.\n *\n * @type {Object}\n */\n\n};\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug = debug__WEBPACK_IMPORTED_MODULE_5___default()('slate:history');\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$8 = {\n redos: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Stack\"](),\n undos: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Stack\"]()\n /**\n * History.\n *\n * @type {History}\n */\n\n};\n\nvar History = function (_Record) {\n inherits(History, _Record);\n\n function History() {\n classCallCheck(this, History);\n return possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).apply(this, arguments));\n }\n\n createClass(History, [{\n key: 'save',\n\n /**\n * Save an `operation` into the history.\n *\n * @param {Object} operation\n * @param {Object} options\n * @return {History}\n */\n value: function save(operation) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var history = this;\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n var merge = options.merge,\n skip = options.skip;\n var prevBatch = undos.peek();\n var prevOperation = prevBatch && prevBatch.last();\n\n if (skip == null) {\n skip = shouldSkip(operation, prevOperation);\n }\n\n if (skip) {\n return history;\n }\n\n if (merge == null) {\n merge = shouldMerge(operation, prevOperation);\n }\n\n debug('save', {\n operation: operation,\n merge: merge\n }); // If the `merge` flag is true, add the operation to the previous batch.\n\n if (merge && prevBatch) {\n var batch = prevBatch.push(operation);\n undos = undos.pop();\n undos = undos.push(batch);\n } else {\n // Otherwise, create a new batch with the operation.\n var _batch = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]([operation]);\n\n undos = undos.push(_batch);\n } // Constrain the history to 100 entries for memory's sake.\n\n\n if (undos.size > 100) {\n undos = undos.take(100);\n } // Clear the redos and update the history.\n\n\n redos = redos.clear();\n history = history.set('undos', undos).set('redos', redos);\n return history;\n }\n /**\n * Return a JSON representation of the history.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n redos: this.redos.toJSON(),\n undos: this.undos.toJSON()\n };\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'history';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `History` with `attrs`.\n *\n * @param {Object|History} attrs\n * @return {History}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (History.isHistory(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return History.fromJSON(attrs);\n }\n\n throw new Error('`History.create` only accepts objects or histories, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Operations` from `operations`.\n *\n * @param {Array|List} operations\n * @return {List}\n */\n\n }, {\n key: 'createOperationsList',\n value: function createOperationsList() {\n var operations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(operations)) {\n return operations;\n }\n\n if (Array.isArray(operations)) {\n return new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](operations);\n }\n\n throw new Error('`History.createList` only accepts arrays or lists, but you passed it: ' + operations);\n }\n /**\n * Create a `History` from a JSON `object`.\n *\n * @param {Object} object\n * @return {History}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$redos = object.redos,\n redos = _object$redos === undefined ? [] : _object$redos,\n _object$undos = object.undos,\n undos = _object$undos === undefined ? [] : _object$undos;\n var history = new History({\n redos: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Stack\"](redos.map(this.createOperationsList)),\n undos: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Stack\"](undos.map(this.createOperationsList))\n });\n return history;\n }\n /**\n * Alias `fromJS`.\n */\n\n /**\n * Check if `any` is a `History`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }]);\n return History;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$8));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nHistory.fromJS = History.fromJSON;\nHistory.isHistory = isType.bind(null, 'HISTORY');\nHistory.prototype[MODEL_TYPES.HISTORY] = true;\n/**\n * Check whether to merge a new operation `o` into the previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\nfunction shouldMerge(o, p) {\n if (!p) return false;\n var merge = o.type == 'set_selection' && p.type == 'set_selection' || o.type == 'insert_text' && p.type == 'insert_text' && o.offset == p.offset + p.text.length && lodash_isEqual__WEBPACK_IMPORTED_MODULE_6___default()(o.path, p.path) || o.type == 'remove_text' && p.type == 'remove_text' && o.offset + o.text.length == p.offset && lodash_isEqual__WEBPACK_IMPORTED_MODULE_6___default()(o.path, p.path);\n return merge;\n}\n/**\n * Check whether to skip a new operation `o`, given previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\n\nfunction shouldSkip(o, p) {\n if (!p) return false;\n var skip = o.type == 'set_selection' && p.type == 'set_selection';\n return skip;\n}\n/**\n * Define the core schema rules, order-sensitive.\n *\n * @type {Array}\n */\n\n\nvar CORE_SCHEMA_RULES = [\n/**\n * Only allow block nodes in documents.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'document') return;\n var invalids = node.nodes.filter(function (n) {\n return n.object != 'block';\n });\n if (!invalids.size) return;\n return function (change) {\n invalids.forEach(function (child) {\n change.removeNodeByKey(child.key, {\n normalize: false\n });\n });\n };\n }\n},\n/**\n * Only allow block nodes or inline and text nodes in blocks.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'block') return;\n var first = node.nodes.first();\n if (!first) return;\n var objects = first.object == 'block' ? ['block'] : ['inline', 'text'];\n var invalids = node.nodes.filter(function (n) {\n return !objects.includes(n.object);\n });\n if (!invalids.size) return;\n return function (change) {\n invalids.forEach(function (child) {\n change.removeNodeByKey(child.key, {\n normalize: false\n });\n });\n };\n }\n},\n/**\n * Only allow inline and text nodes in inlines.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'inline') return;\n var invalids = node.nodes.filter(function (n) {\n return n.object != 'inline' && n.object != 'text';\n });\n if (!invalids.size) return;\n return function (change) {\n invalids.forEach(function (child) {\n change.removeNodeByKey(child.key, {\n normalize: false\n });\n });\n };\n }\n},\n/**\n * Ensure that block and inline nodes have at least one text child.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'block' && node.object != 'inline') return;\n if (node.nodes.size > 0) return;\n return function (change) {\n var text = Text.create();\n change.insertNodeByKey(node.key, 0, text, {\n normalize: false\n });\n };\n }\n},\n/**\n * Ensure that inline non-void nodes are never empty.\n *\n * This rule is applied to all blocks and inlines, because when they contain an empty\n * inline, we need to remove the empty inline from that parent node. If `validate`\n * was to be memoized, it should be against the parent node, not the empty inline itself.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'inline' && node.object != 'block') return;\n var invalids = node.nodes.filter(function (child) {\n return child.object === 'inline' && child.isEmpty;\n });\n if (!invalids.size) return;\n return function (change) {\n // If all of the block's nodes are invalid, insert an empty text node so\n // that the selection will be preserved when they are all removed.\n if (node.nodes.size == invalids.size) {\n var text = Text.create();\n change.insertNodeByKey(node.key, 1, text, {\n normalize: false\n });\n }\n\n invalids.forEach(function (child) {\n change.removeNodeByKey(child.key, {\n normalize: false\n });\n });\n };\n }\n},\n/**\n * Ensure that inline void nodes are surrounded by text nodes, by adding extra\n * blank text nodes if necessary.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'block' && node.object != 'inline') return;\n var invalids = node.nodes.reduce(function (list, child, index) {\n if (child.object !== 'inline') return list;\n var prev = index > 0 ? node.nodes.get(index - 1) : null;\n var next = node.nodes.get(index + 1); // We don't test if \"prev\" is inline, since it has already been\n // processed in the loop\n\n var insertBefore = !prev;\n var insertAfter = !next || next.object == 'inline';\n\n if (insertAfter || insertBefore) {\n list = list.push({\n insertAfter: insertAfter,\n insertBefore: insertBefore,\n index: index\n });\n }\n\n return list;\n }, new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]());\n if (!invalids.size) return;\n return function (change) {\n // Shift for every text node inserted previously.\n var shift = 0;\n invalids.forEach(function (_ref) {\n var index = _ref.index,\n insertAfter = _ref.insertAfter,\n insertBefore = _ref.insertBefore;\n\n if (insertBefore) {\n change.insertNodeByKey(node.key, shift + index, Text.create(), {\n normalize: false\n });\n shift++;\n }\n\n if (insertAfter) {\n change.insertNodeByKey(node.key, shift + index + 1, Text.create(), {\n normalize: false\n });\n shift++;\n }\n });\n };\n }\n},\n/**\n * Merge adjacent text nodes.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'block' && node.object != 'inline') return;\n var invalids = node.nodes.map(function (child, i) {\n var next = node.nodes.get(i + 1);\n if (child.object != 'text') return;\n if (!next || next.object != 'text') return;\n return next;\n }).filter(Boolean);\n if (!invalids.size) return;\n return function (change) {\n // Reverse the list to handle consecutive merges, since the earlier nodes\n // will always exist after each merge.\n invalids.reverse().forEach(function (n) {\n change.mergeNodeByKey(n.key, {\n normalize: false\n });\n });\n };\n }\n},\n/**\n * Prevent extra empty text nodes, except when adjacent to inline void nodes.\n *\n * @type {Object}\n */\n{\n validateNode: function validateNode(node) {\n if (node.object != 'block' && node.object != 'inline') return;\n var nodes = node.nodes;\n if (nodes.size <= 1) return;\n var invalids = nodes.filter(function (desc, i) {\n if (desc.object != 'text') return;\n if (desc.text.length > 0) return;\n var prev = i > 0 ? nodes.get(i - 1) : null;\n var next = nodes.get(i + 1); // If it's the first node, and the next is a void, preserve it.\n\n if (!prev && next.object == 'inline') return; // It it's the last node, and the previous is an inline, preserve it.\n\n if (!next && prev.object == 'inline') return; // If it's surrounded by inlines, preserve it.\n\n if (next && prev && next.object == 'inline' && prev.object == 'inline') return; // Otherwise, remove it.\n\n return true;\n });\n if (!invalids.size) return;\n return function (change) {\n invalids.forEach(function (text) {\n change.removeNodeByKey(text.key, {\n normalize: false\n });\n });\n };\n }\n}];\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$9 = {\n plugins: []\n /**\n * Stack.\n *\n * @type {Stack}\n */\n\n};\n\nvar Stack$1 = function (_Record) {\n inherits(Stack$$1, _Record);\n\n function Stack$$1() {\n classCallCheck(this, Stack$$1);\n return possibleConstructorReturn(this, (Stack$$1.__proto__ || Object.getPrototypeOf(Stack$$1)).apply(this, arguments));\n }\n\n createClass(Stack$$1, [{\n key: 'getPluginsWith',\n\n /**\n * Get all plugins with `property`.\n *\n * @param {String} property\n * @return {Array}\n */\n value: function getPluginsWith(property) {\n return this.plugins.filter(function (plugin) {\n return plugin[property] != null;\n });\n }\n /**\n * Iterate the plugins with `property`, returning the first non-null value.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'find',\n value: function find(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return ret;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n /**\n * Iterate the plugins with `property`, returning all the non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n * @return {Array}\n */\n\n }, {\n key: 'map',\n value: function map(property) {\n var plugins = this.getPluginsWith(property);\n var array = [];\n\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = plugins[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var plugin = _step2.value;\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) array.push(ret);\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return array;\n }\n /**\n * Iterate the plugins with `property`, breaking on any a non-null values.\n *\n * @param {String} property\n * @param {Any} ...args\n */\n\n }, {\n key: 'run',\n value: function run(property) {\n var plugins = this.getPluginsWith(property);\n\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = plugins[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var plugin = _step3.value;\n var ret = plugin[property].apply(plugin, args);\n if (ret != null) return;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n /**\n * Iterate the plugins with `property`, reducing to a set of React children.\n *\n * @param {String} property\n * @param {Object} props\n * @param {Any} ...args\n */\n\n }, {\n key: 'render',\n value: function render(property, props) {\n for (var _len4 = arguments.length, args = Array(_len4 > 2 ? _len4 - 2 : 0), _key4 = 2; _key4 < _len4; _key4++) {\n args[_key4 - 2] = arguments[_key4];\n }\n\n var plugins = this.getPluginsWith(property);\n return plugins.reduceRight(function (children, plugin) {\n if (!plugin[property]) return children;\n var ret = plugin[property].apply(plugin, [props].concat(args));\n if (ret == null) return children;\n props.children = ret;\n return ret;\n }, props.children === undefined ? null : props.children);\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'stack';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Constructor.\n *\n * @param {Object} attrs\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _attrs$plugins = attrs.plugins,\n plugins = _attrs$plugins === undefined ? [] : _attrs$plugins;\n var stack = new Stack$$1({\n plugins: plugins\n });\n return stack;\n }\n /**\n * Check if `any` is a `Stack`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isStack',\n value: function isStack(any) {\n return !!(any && any[MODEL_TYPES.STACK]);\n }\n }]);\n return Stack$$1;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$9));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nStack$1.prototype[MODEL_TYPES.STACK] = true;\n/**\n * Memoize read methods.\n */\n\nmemoize(Stack$1.prototype, ['getPluginsWith']);\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$1 = debug__WEBPACK_IMPORTED_MODULE_5___default()('slate:schema');\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$10 = {\n stack: Stack$1.create(),\n document: {},\n blocks: {},\n inlines: {}\n /**\n * Schema.\n *\n * @type {Schema}\n */\n\n};\n\nvar Schema = function (_Record) {\n inherits(Schema, _Record);\n\n function Schema() {\n classCallCheck(this, Schema);\n return possibleConstructorReturn(this, (Schema.__proto__ || Object.getPrototypeOf(Schema)).apply(this, arguments));\n }\n\n createClass(Schema, [{\n key: 'getRule',\n\n /**\n * Get the rule for an `object`.\n *\n * @param {Mixed} object\n * @return {Object}\n */\n value: function getRule(object) {\n switch (object.object) {\n case 'document':\n return this.document;\n\n case 'block':\n return this.blocks[object.type];\n\n case 'inline':\n return this.inlines[object.type];\n }\n }\n /**\n * Get a dictionary of the parent rule validations by child type.\n *\n * @return {Object|Null}\n */\n\n }, {\n key: 'getParentRules',\n value: function getParentRules() {\n var blocks = this.blocks,\n inlines = this.inlines;\n var parents = {};\n\n for (var key in blocks) {\n var rule = blocks[key];\n if (rule.parent == null) continue;\n parents[key] = rule;\n }\n\n for (var _key in inlines) {\n var _rule = inlines[_key];\n if (_rule.parent == null) continue;\n parents[_key] = _rule;\n }\n\n return Object.keys(parents).length == 0 ? null : parents;\n }\n /**\n * Fail validation by returning a normalizing change function.\n *\n * @param {String} violation\n * @param {Object} context\n * @return {Function}\n */\n\n }, {\n key: 'fail',\n value: function fail(violation, context) {\n var _this2 = this;\n\n return function (change) {\n debug$1('normalizing', {\n violation: violation,\n context: context\n });\n var rule = context.rule;\n var size = change.operations.size;\n if (rule.normalize) rule.normalize(change, violation, context);\n if (change.operations.size > size) return;\n\n _this2.normalize(change, violation, context);\n };\n }\n /**\n * Normalize an invalid value with `violation` and `context`.\n *\n * @param {Change} change\n * @param {String} violation\n * @param {Mixed} context\n */\n\n }, {\n key: 'normalize',\n value: function normalize(change, violation, context) {\n switch (violation) {\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_OBJECT_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_TYPE_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_UNKNOWN\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"FIRST_CHILD_OBJECT_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"FIRST_CHILD_TYPE_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"LAST_CHILD_OBJECT_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"LAST_CHILD_TYPE_INVALID\"]:\n {\n var child = context.child,\n node = context.node;\n return child.object == 'text' && node.object == 'block' && node.nodes.size == 1 ? change.removeNodeByKey(node.key) : change.removeNodeByKey(child.key);\n }\n\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_REQUIRED\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_TEXT_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"PARENT_OBJECT_INVALID\"]:\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"PARENT_TYPE_INVALID\"]:\n {\n var _node = context.node;\n return _node.object == 'document' ? _node.nodes.forEach(function (child) {\n return change.removeNodeByKey(child.key);\n }) : change.removeNodeByKey(_node.key);\n }\n\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_DATA_INVALID\"]:\n {\n var _node2 = context.node,\n key = context.key;\n return _node2.data.get(key) === undefined && _node2.object != 'document' ? change.removeNodeByKey(_node2.key) : change.setNodeByKey(_node2.key, {\n data: _node2.data.delete(key)\n });\n }\n\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_IS_VOID_INVALID\"]:\n {\n var _node3 = context.node;\n return change.setNodeByKey(_node3.key, {\n isVoid: !_node3.isVoid\n });\n }\n\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_MARK_INVALID\"]:\n {\n var _node4 = context.node,\n mark = context.mark;\n return _node4.getTexts().forEach(function (t) {\n return change.removeMarkByKey(t.key, 0, t.text.length, mark);\n });\n }\n }\n }\n /**\n * Validate a `node` with the schema, returning a function that will fix the\n * invalid node, or void if the node is valid.\n *\n * @param {Node} node\n * @return {Function|Void}\n */\n\n }, {\n key: 'validateNode',\n value: function validateNode(node) {\n var _this3 = this;\n\n var ret = this.stack.find('validateNode', node);\n if (ret) return ret;\n if (node.object == 'text') return;\n var rule = this.getRule(node) || {};\n var parents = this.getParentRules();\n var ctx = {\n node: node,\n rule: rule\n };\n\n if (rule.isVoid != null) {\n if (node.isVoid != rule.isVoid) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_IS_VOID_INVALID\"], ctx);\n }\n }\n\n if (rule.data != null) {\n for (var key in rule.data) {\n var fn = rule.data[key];\n var value = node.data.get(key);\n\n if (!fn(value)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_DATA_INVALID\"], _extends({}, ctx, {\n key: key,\n value: value\n }));\n }\n }\n }\n\n if (rule.marks != null) {\n var marks = node.getMarks().toArray();\n\n var _loop = function _loop(mark) {\n if (!rule.marks.some(function (def) {\n return def.type === mark.type;\n })) {\n return {\n v: _this3.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_MARK_INVALID\"], _extends({}, ctx, {\n mark: mark\n }))\n };\n }\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = marks[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var mark = _step.value;\n\n var _ret = _loop(mark);\n\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n\n if (rule.text != null) {\n var text = node.text;\n\n if (!rule.text.test(text)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"NODE_TEXT_INVALID\"], _extends({}, ctx, {\n text: text\n }));\n }\n }\n\n if (rule.first != null) {\n var _rule$first = rule.first,\n objects = _rule$first.objects,\n types = _rule$first.types;\n var child = node.nodes.first();\n\n if (child && objects && !objects.includes(child.object)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"FIRST_CHILD_OBJECT_INVALID\"], _extends({}, ctx, {\n child: child\n }));\n }\n\n if (child && types && !types.includes(child.type)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"FIRST_CHILD_TYPE_INVALID\"], _extends({}, ctx, {\n child: child\n }));\n }\n }\n\n if (rule.last != null) {\n var _rule$last = rule.last,\n _objects = _rule$last.objects,\n _types = _rule$last.types;\n\n var _child = node.nodes.last();\n\n if (_child && _objects && !_objects.includes(_child.object)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"LAST_CHILD_OBJECT_INVALID\"], _extends({}, ctx, {\n child: _child\n }));\n }\n\n if (_child && _types && !_types.includes(_child.type)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"LAST_CHILD_TYPE_INVALID\"], _extends({}, ctx, {\n child: _child\n }));\n }\n }\n\n if (rule.nodes != null || parents != null) {\n var nextDef = function nextDef() {\n offset = offset == null ? null : 0;\n def = defs.shift();\n min = def && (def.min == null ? 0 : def.min);\n max = def && (def.max == null ? Infinity : def.max);\n return !!def;\n };\n\n var nextChild = function nextChild() {\n index = index == null ? 0 : index + 1;\n offset = offset == null ? 0 : offset + 1;\n _child2 = children[index];\n if (max != null && offset == max) nextDef();\n return !!_child2;\n };\n\n var rewind = function rewind() {\n offset -= 1;\n index -= 1;\n };\n\n var children = node.nodes.toArray();\n var defs = rule.nodes != null ? rule.nodes.slice() : [];\n var offset = void 0;\n var min = void 0;\n var index = void 0;\n var def = void 0;\n var max = void 0;\n\n var _child2 = void 0;\n\n if (rule.nodes != null) {\n nextDef();\n }\n\n while (nextChild()) {\n if (parents != null && _child2.object != 'text' && _child2.type in parents) {\n var r = parents[_child2.type];\n\n if (r.parent.objects != null && !r.parent.objects.includes(node.object)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"PARENT_OBJECT_INVALID\"], {\n node: _child2,\n parent: node,\n rule: r\n });\n }\n\n if (r.parent.types != null && !r.parent.types.includes(node.type)) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"PARENT_TYPE_INVALID\"], {\n node: _child2,\n parent: node,\n rule: r\n });\n }\n }\n\n if (rule.nodes != null) {\n if (!def) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_UNKNOWN\"], _extends({}, ctx, {\n child: _child2,\n index: index\n }));\n }\n\n if (def.objects != null && !def.objects.includes(_child2.object)) {\n if (offset >= min && nextDef()) {\n rewind();\n continue;\n }\n\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_OBJECT_INVALID\"], _extends({}, ctx, {\n child: _child2,\n index: index\n }));\n }\n\n if (def.types != null && !def.types.includes(_child2.type)) {\n if (offset >= min && nextDef()) {\n rewind();\n continue;\n }\n\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_TYPE_INVALID\"], _extends({}, ctx, {\n child: _child2,\n index: index\n }));\n }\n }\n }\n\n if (rule.nodes != null) {\n while (min != null) {\n if (offset < min) {\n return this.fail(slate_schema_violations__WEBPACK_IMPORTED_MODULE_8__[\"CHILD_REQUIRED\"], _extends({}, ctx, {\n index: index\n }));\n }\n\n nextDef();\n }\n }\n }\n }\n /**\n * Return a JSON representation of the schema.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n document: this.document,\n blocks: this.blocks,\n inlines: this.inlines\n };\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS() {\n return this.toJSON();\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'schema';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Schema` with `attrs`.\n *\n * @param {Object|Schema} attrs\n * @return {Schema}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Schema.isSchema(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Schema.fromJSON(attrs);\n }\n\n throw new Error('`Schema.create` only accepts objects or schemas, but you passed it: ' + attrs);\n }\n /**\n * Create a `Schema` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Schema}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Schema.isSchema(object)) {\n return object;\n }\n\n var plugins = object.plugins;\n\n if (object.rules) {\n throw new Error('Schemas in Slate have changed! They are no longer accept a `rules` property.');\n }\n\n if (object.nodes) {\n throw new Error('Schemas in Slate have changed! They are no longer accept a `nodes` property.');\n }\n\n if (!plugins) {\n plugins = [{\n schema: object\n }];\n }\n\n var schema = resolveSchema(plugins);\n var stack = Stack$1.create({\n plugins: [].concat(toConsumableArray(CORE_SCHEMA_RULES), toConsumableArray(plugins))\n });\n var ret = new Schema(_extends({}, schema, {\n stack: stack\n }));\n return ret;\n }\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isSchema',\n\n /**\n * Check if `any` is a `Schema`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isSchema(any) {\n return !!(any && any[MODEL_TYPES.SCHEMA]);\n }\n }]);\n return Schema;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$10));\n/**\n * Resolve a set of schema rules from an array of `plugins`.\n *\n * @param {Array} plugins\n * @return {Object}\n */\n\n\nSchema.fromJS = Schema.fromJSON;\n\nfunction resolveSchema() {\n var plugins = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var schema = {\n document: {},\n blocks: {},\n inlines: {}\n };\n plugins.slice().reverse().forEach(function (plugin) {\n if (!plugin.schema) return;\n\n if (plugin.schema.rules) {\n throw new Error('Schemas in Slate have changed! They are no longer accept a `rules` property.');\n }\n\n if (plugin.schema.nodes) {\n throw new Error('Schemas in Slate have changed! They are no longer accept a `nodes` property.');\n }\n\n var _plugin$schema = plugin.schema,\n _plugin$schema$docume = _plugin$schema.document,\n document = _plugin$schema$docume === undefined ? {} : _plugin$schema$docume,\n _plugin$schema$blocks = _plugin$schema.blocks,\n blocks = _plugin$schema$blocks === undefined ? {} : _plugin$schema$blocks,\n _plugin$schema$inline = _plugin$schema.inlines,\n inlines = _plugin$schema$inline === undefined ? {} : _plugin$schema$inline;\n var d = resolveDocumentRule(document);\n var bs = {};\n var is = {};\n\n for (var key in blocks) {\n bs[key] = resolveNodeRule('block', key, blocks[key]);\n }\n\n for (var _key2 in inlines) {\n is[_key2] = resolveNodeRule('inline', _key2, inlines[_key2]);\n }\n\n lodash_mergeWith__WEBPACK_IMPORTED_MODULE_7___default()(schema.document, d, customizer);\n lodash_mergeWith__WEBPACK_IMPORTED_MODULE_7___default()(schema.blocks, bs, customizer);\n lodash_mergeWith__WEBPACK_IMPORTED_MODULE_7___default()(schema.inlines, is, customizer);\n });\n return schema;\n}\n/**\n * Resolve a document rule `obj`.\n *\n * @param {Object} obj\n * @return {Object}\n */\n\n\nfunction resolveDocumentRule(obj) {\n return _extends({\n data: {},\n nodes: null\n }, obj);\n}\n/**\n * Resolve a node rule with `type` from `obj`.\n *\n * @param {String} object\n * @param {String} type\n * @param {Object} obj\n * @return {Object}\n */\n\n\nfunction resolveNodeRule(object, type, obj) {\n return _extends({\n data: {},\n isVoid: null,\n nodes: null,\n first: null,\n last: null,\n parent: null,\n text: null\n }, obj);\n}\n/**\n * A Lodash customizer for merging schema definitions. Special cases `objects`,\n * `marks` and `types` arrays to be unioned, and ignores new `null` values.\n *\n * @param {Mixed} target\n * @param {Mixed} source\n * @return {Array|Void}\n */\n\n\nfunction customizer(target, source, key) {\n if (key == 'objects' || key == 'types' || key == 'marks') {\n return target == null ? source : target.concat(source);\n } else {\n return source == null ? target : source;\n }\n}\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nSchema.prototype[MODEL_TYPES.SCHEMA] = true;\n/**\n * Memoize read methods.\n */\n\nmemoize(Schema.prototype, ['getParentRules']);\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$11 = {\n data: new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"](),\n decorations: null,\n document: Document.create(),\n history: History.create(),\n schema: Schema.create(),\n selection: Range.create()\n /**\n * Value.\n *\n * @type {Value}\n */\n\n};\n\nvar Value = function (_Record) {\n inherits(Value, _Record);\n\n function Value() {\n classCallCheck(this, Value);\n return possibleConstructorReturn(this, (Value.__proto__ || Object.getPrototypeOf(Value)).apply(this, arguments));\n }\n\n createClass(Value, [{\n key: 'change',\n\n /**\n * Create a new `Change` with the current value as a starting point.\n *\n * @param {Object} attrs\n * @return {Change}\n */\n value: function change() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return new Change(_extends({}, attrs, {\n value: this\n }));\n }\n /**\n * Return a JSON representation of the value.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n document: this.document.toJSON(options)\n };\n\n if (options.preserveData) {\n object.data = this.data.toJSON();\n }\n\n if (options.preserveDecorations) {\n object.decorations = this.decorations ? this.decorations.toArray().map(function (d) {\n return d.toJSON();\n }) : null;\n }\n\n if (options.preserveHistory) {\n object.history = this.history.toJSON();\n }\n\n if (options.preserveSelection) {\n object.selection = this.selection.toJSON();\n }\n\n if (options.preserveSchema) {\n object.schema = this.schema.toJSON();\n }\n\n if (options.preserveSelection && !options.preserveKeys) {\n var document = this.document,\n selection = this.selection;\n object.selection.anchorPath = selection.isSet ? document.getPath(selection.anchorKey) : null;\n object.selection.focusPath = selection.isSet ? document.getPath(selection.focusKey) : null;\n delete object.selection.anchorKey;\n delete object.selection.focusKey;\n }\n\n if (options.preserveDecorations && object.decorations && !options.preserveKeys) {\n var _document = this.document;\n object.decorations = object.decorations.map(function (decoration) {\n var withPath = _extends({}, decoration, {\n anchorPath: _document.getPath(decoration.anchorKey),\n focusPath: _document.getPath(decoration.focusKey)\n });\n\n delete withPath.anchorKey;\n delete withPath.focusKey;\n return withPath;\n });\n }\n\n return object;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'value';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n /**\n * Are there undoable events?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasUndos',\n get: function get$$1() {\n return this.history.undos.size > 0;\n }\n /**\n * Are there redoable events?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasRedos',\n get: function get$$1() {\n return this.history.redos.size > 0;\n }\n /**\n * Is the current selection blurred?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlurred',\n get: function get$$1() {\n return this.selection.isBlurred;\n }\n /**\n * Is the current selection focused?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isFocused',\n get: function get$$1() {\n return this.selection.isFocused;\n }\n /**\n * Is the current selection collapsed?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isCollapsed',\n get: function get$$1() {\n return this.selection.isCollapsed;\n }\n /**\n * Is the current selection expanded?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return this.selection.isExpanded;\n }\n /**\n * Is the current selection backward?\n *\n * @return {Boolean} isBackward\n */\n\n }, {\n key: 'isBackward',\n get: function get$$1() {\n return this.selection.isBackward;\n }\n /**\n * Is the current selection forward?\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n return this.selection.isForward;\n }\n /**\n * Get the current start key.\n *\n * @return {String}\n */\n\n }, {\n key: 'startKey',\n get: function get$$1() {\n return this.selection.startKey;\n }\n /**\n * Get the current end key.\n *\n * @return {String}\n */\n\n }, {\n key: 'endKey',\n get: function get$$1() {\n return this.selection.endKey;\n }\n /**\n * Get the current start offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'startOffset',\n get: function get$$1() {\n return this.selection.startOffset;\n }\n /**\n * Get the current end offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'endOffset',\n get: function get$$1() {\n return this.selection.endOffset;\n }\n /**\n * Get the current anchor key.\n *\n * @return {String}\n */\n\n }, {\n key: 'anchorKey',\n get: function get$$1() {\n return this.selection.anchorKey;\n }\n /**\n * Get the current focus key.\n *\n * @return {String}\n */\n\n }, {\n key: 'focusKey',\n get: function get$$1() {\n return this.selection.focusKey;\n }\n /**\n * Get the current anchor offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'anchorOffset',\n get: function get$$1() {\n return this.selection.anchorOffset;\n }\n /**\n * Get the current focus offset.\n *\n * @return {String}\n */\n\n }, {\n key: 'focusOffset',\n get: function get$$1() {\n return this.selection.focusOffset;\n }\n /**\n * Get the current start text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'startBlock',\n get: function get$$1() {\n return this.startKey && this.document.getClosestBlock(this.startKey);\n }\n /**\n * Get the current end text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'endBlock',\n get: function get$$1() {\n return this.endKey && this.document.getClosestBlock(this.endKey);\n }\n /**\n * Get the current anchor text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'anchorBlock',\n get: function get$$1() {\n return this.anchorKey && this.document.getClosestBlock(this.anchorKey);\n }\n /**\n * Get the current focus text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'focusBlock',\n get: function get$$1() {\n return this.focusKey && this.document.getClosestBlock(this.focusKey);\n }\n /**\n * Get the current start text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'startInline',\n get: function get$$1() {\n return this.startKey && this.document.getClosestInline(this.startKey);\n }\n /**\n * Get the current end text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'endInline',\n get: function get$$1() {\n return this.endKey && this.document.getClosestInline(this.endKey);\n }\n /**\n * Get the current anchor text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'anchorInline',\n get: function get$$1() {\n return this.anchorKey && this.document.getClosestInline(this.anchorKey);\n }\n /**\n * Get the current focus text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'focusInline',\n get: function get$$1() {\n return this.focusKey && this.document.getClosestInline(this.focusKey);\n }\n /**\n * Get the current start text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'startText',\n get: function get$$1() {\n return this.startKey && this.document.getDescendant(this.startKey);\n }\n /**\n * Get the current end node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'endText',\n get: function get$$1() {\n return this.endKey && this.document.getDescendant(this.endKey);\n }\n /**\n * Get the current anchor node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'anchorText',\n get: function get$$1() {\n return this.anchorKey && this.document.getDescendant(this.anchorKey);\n }\n /**\n * Get the current focus node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'focusText',\n get: function get$$1() {\n return this.focusKey && this.document.getDescendant(this.focusKey);\n }\n /**\n * Get the next block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'nextBlock',\n get: function get$$1() {\n return this.endKey && this.document.getNextBlock(this.endKey);\n }\n /**\n * Get the previous block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'previousBlock',\n get: function get$$1() {\n return this.startKey && this.document.getPreviousBlock(this.startKey);\n }\n /**\n * Get the next inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'nextInline',\n get: function get$$1() {\n return this.endKey && this.document.getNextInline(this.endKey);\n }\n /**\n * Get the previous inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'previousInline',\n get: function get$$1() {\n return this.startKey && this.document.getPreviousInline(this.startKey);\n }\n /**\n * Get the next text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'nextText',\n get: function get$$1() {\n return this.endKey && this.document.getNextText(this.endKey);\n }\n /**\n * Get the previous text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'previousText',\n get: function get$$1() {\n return this.startKey && this.document.getPreviousText(this.startKey);\n }\n /**\n * Get the characters in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'characters',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]() : this.document.getCharactersAtRange(this.selection);\n }\n /**\n * Get the marks of the current selection.\n *\n * @return {Set}\n */\n\n }, {\n key: 'marks',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"]() : this.selection.marks || this.document.getMarksAtRange(this.selection);\n }\n /**\n * Get the active marks of the current selection.\n *\n * @return {Set}\n */\n\n }, {\n key: 'activeMarks',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Set\"]() : this.selection.marks || this.document.getActiveMarksAtRange(this.selection);\n }\n /**\n * Get the block nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'blocks',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]() : this.document.getBlocksAtRange(this.selection);\n }\n /**\n * Get the fragment of the current selection.\n *\n * @return {Document}\n */\n\n }, {\n key: 'fragment',\n get: function get$$1() {\n return this.selection.isUnset ? Document.create() : this.document.getFragmentAtRange(this.selection);\n }\n /**\n * Get the inline nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'inlines',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]() : this.document.getInlinesAtRange(this.selection);\n }\n /**\n * Get the text nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'texts',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]() : this.document.getTextsAtRange(this.selection);\n }\n /**\n * Check whether the selection is empty.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isEmpty',\n get: function get$$1() {\n if (this.isCollapsed) return true;\n if (this.endOffset != 0 && this.startOffset != 0) return false;\n return this.fragment.isEmpty;\n }\n /**\n * Check whether the selection is collapsed in a void node.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isInVoid',\n get: function get$$1() {\n if (this.isExpanded) return false;\n return this.document.hasVoidParent(this.startKey);\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Value` with `attrs`.\n *\n * @param {Object|Value} attrs\n * @param {Object} options\n * @return {Value}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Value.isValue(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Value.fromJSON(attrs, options);\n }\n\n throw new Error('`Value.create` only accepts objects or values, but you passed it: ' + attrs);\n }\n /**\n * Create a dictionary of settable value properties from `attrs`.\n *\n * @param {Object|Value} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Value.isValue(attrs)) {\n return {\n data: attrs.data,\n decorations: attrs.decorations,\n schema: attrs.schema\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var props = {};\n if ('data' in attrs) props.data = Data.create(attrs.data);\n if ('decorations' in attrs) props.decorations = Range.createList(attrs.decorations);\n if ('schema' in attrs) props.schema = Schema.create(attrs.schema);\n return props;\n }\n\n throw new Error('`Value.createProperties` only accepts objects or values, but you passed it: ' + attrs);\n }\n /**\n * Create a `Value` from a JSON `object`.\n *\n * @param {Object} object\n * @param {Object} options\n * @property {Boolean} normalize\n * @property {Array} plugins\n * @return {Value}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _object$document = object.document,\n document = _object$document === undefined ? {} : _object$document,\n _object$selection = object.selection,\n selection = _object$selection === undefined ? {} : _object$selection,\n _object$schema = object.schema,\n schema = _object$schema === undefined ? {} : _object$schema,\n _object$history = object.history,\n history = _object$history === undefined ? {} : _object$history;\n var data = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"Map\"]();\n document = Document.fromJSON(document); // rebuild selection from anchorPath and focusPath if keys were dropped\n\n var _selection = selection,\n anchorPath = _selection.anchorPath,\n focusPath = _selection.focusPath,\n anchorKey = _selection.anchorKey,\n focusKey = _selection.focusKey;\n\n if (anchorPath !== undefined && anchorKey === undefined) {\n selection.anchorKey = document.assertPath(anchorPath).key;\n }\n\n if (focusPath !== undefined && focusKey === undefined) {\n selection.focusKey = document.assertPath(focusPath).key;\n }\n\n selection = Range.fromJSON(selection);\n schema = Schema.fromJSON(schema);\n history = History.fromJSON(history); // Allow plugins to set a default value for `data`.\n\n if (options.plugins) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = options.plugins[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var plugin = _step.value;\n if (plugin.data) data = data.merge(plugin.data);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n } // Then merge in the `data` provided.\n\n\n if ('data' in object) {\n data = data.merge(object.data);\n }\n\n if (selection.isUnset) {\n var text = document.getFirstText();\n if (text) selection = selection.collapseToStartOf(text);\n }\n\n var value = new Value({\n data: data,\n document: document,\n selection: selection,\n schema: schema,\n history: history\n });\n\n if (options.normalize !== false) {\n value = value.change({\n save: false\n }).normalize().value;\n }\n\n return value;\n }\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isValue',\n\n /**\n * Check if a `value` is a `Value`.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n value: function isValue(value) {\n return !!(value && value[MODEL_TYPES.VALUE]);\n }\n }]);\n return Value;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$11));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nValue.fromJS = Value.fromJSON;\nValue.prototype[MODEL_TYPES.VALUE] = true;\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$12 = {\n length: undefined,\n mark: undefined,\n marks: undefined,\n newPath: undefined,\n node: undefined,\n offset: undefined,\n path: undefined,\n position: undefined,\n properties: undefined,\n selection: undefined,\n target: undefined,\n text: undefined,\n type: undefined,\n value: undefined\n /**\n * Operation.\n *\n * @type {Operation}\n */\n\n};\n\nvar Operation = function (_Record) {\n inherits(Operation, _Record);\n\n function Operation() {\n classCallCheck(this, Operation);\n return possibleConstructorReturn(this, (Operation.__proto__ || Object.getPrototypeOf(Operation)).apply(this, arguments));\n }\n\n createClass(Operation, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the operation.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var object = this.object,\n type = this.type;\n var json = {\n object: object,\n type: type\n };\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = ATTRIBUTES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var value = this[key]; // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n\n if (key == 'mark' || key == 'marks' || key == 'node') {\n value = value.toJSON();\n }\n\n if (key == 'properties' && type == 'merge_node') {\n var v = {};\n if ('data' in value) v.data = value.data.toJS();\n if ('type' in value) v.type = value.type;\n value = v;\n }\n\n if (key == 'properties' && type == 'set_mark') {\n var _v = {};\n if ('data' in value) _v.data = value.data.toJS();\n if ('type' in value) _v.type = value.type;\n value = _v;\n }\n\n if (key == 'properties' && type == 'set_node') {\n var _v2 = {};\n if ('data' in value) _v2.data = value.data.toJS();\n if ('isVoid' in value) _v2.isVoid = value.isVoid;\n if ('type' in value) _v2.type = value.type;\n value = _v2;\n }\n\n if (key == 'properties' && type == 'set_selection') {\n var _v3 = {};\n if ('anchorOffset' in value) _v3.anchorOffset = value.anchorOffset;\n if ('anchorPath' in value) _v3.anchorPath = value.anchorPath;\n if ('focusOffset' in value) _v3.focusOffset = value.focusOffset;\n if ('focusPath' in value) _v3.focusPath = value.focusPath;\n if ('isBackward' in value) _v3.isBackward = value.isBackward;\n if ('isFocused' in value) _v3.isFocused = value.isFocused;\n if ('marks' in value) _v3.marks = value.marks == null ? null : value.marks.toJSON();\n value = _v3;\n }\n\n if (key == 'properties' && type == 'set_value') {\n var _v4 = {};\n if ('data' in value) _v4.data = value.data.toJS();\n if ('decorations' in value) _v4.decorations = value.decorations.toJS();\n if ('schema' in value) _v4.schema = value.schema.toJS();\n value = _v4;\n }\n\n if (key == 'properties' && type == 'split_node') {\n var _v5 = {};\n if ('data' in value) _v5.data = value.data.toJS();\n if ('type' in value) _v5.type = value.type;\n value = _v5;\n }\n\n json[key] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return json;\n }\n /**\n * Alias `toJS`.\n */\n\n }, {\n key: 'toJS',\n value: function toJS(options) {\n return this.toJSON(options);\n }\n }, {\n key: 'object',\n\n /**\n * Object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return 'operation';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Operation` with `attrs`.\n *\n * @param {Object|Array|List|String|Operation} attrs\n * @return {Operation}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Operation.isOperation(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Operation.fromJSON(attrs);\n }\n\n throw new Error('`Operation.create` only accepts objects or operations, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Operations` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"](elements.map(Operation.create));\n return list;\n }\n\n throw new Error('`Operation.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Operation` from a JSON `object`.\n *\n * @param {Object|Operation} object\n * @return {Operation}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Operation.isOperation(object)) {\n return object;\n }\n\n var type = object.type,\n value = object.value;\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var attrs = {\n type: type\n };\n\n if (!ATTRIBUTES) {\n throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: \"' + type + '\"');\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = ATTRIBUTES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n var v = object[key];\n\n if (v === undefined) {\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key == 'document') continue;\n if (key == 'selection') continue;\n if (key == 'value') continue;\n if (key == 'node' && type != 'insert_node') continue;\n throw new Error('`Operation.fromJSON` was passed a \"' + type + '\" operation without the required \"' + key + '\" attribute.');\n }\n\n if (key == 'mark') {\n v = Mark.create(v);\n }\n\n if (key == 'marks' && v != null) {\n v = Mark.createSet(v);\n }\n\n if (key == 'node') {\n v = Node.create(v);\n }\n\n if (key == 'selection') {\n v = Range.create(v);\n }\n\n if (key == 'value') {\n v = Value.create(v);\n }\n\n if (key == 'properties' && type == 'merge_node') {\n v = Node.createProperties(v);\n }\n\n if (key == 'properties' && type == 'set_mark') {\n v = Mark.createProperties(v);\n }\n\n if (key == 'properties' && type == 'set_node') {\n v = Node.createProperties(v);\n }\n\n if (key == 'properties' && type == 'set_selection') {\n var _v6 = v,\n anchorKey = _v6.anchorKey,\n focusKey = _v6.focusKey,\n rest = objectWithoutProperties(_v6, ['anchorKey', 'focusKey']);\n v = Range.createProperties(rest);\n\n if (anchorKey !== undefined) {\n v.anchorPath = anchorKey === null ? null : value.document.getPath(anchorKey);\n }\n\n if (focusKey !== undefined) {\n v.focusPath = focusKey === null ? null : value.document.getPath(focusKey);\n }\n }\n\n if (key == 'properties' && type == 'set_value') {\n v = Value.createProperties(v);\n }\n\n if (key == 'properties' && type == 'split_node') {\n v = Node.createProperties(v);\n }\n\n attrs[key] = v;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var node = new Operation(attrs);\n return node;\n }\n /**\n * Alias `fromJS`.\n */\n\n }, {\n key: 'isOperation',\n\n /**\n * Check if `any` is a `Operation`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n value: function isOperation(any) {\n return !!(any && any[MODEL_TYPES.OPERATION]);\n }\n /**\n * Check if `any` is a list of operations.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isOperationList',\n value: function isOperationList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"].isList(any) && any.every(function (item) {\n return Operation.isOperation(item);\n });\n }\n }]);\n return Operation;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_2__[\"Record\"])(DEFAULTS$12));\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nOperation.fromJS = Operation.fromJSON;\nOperation.prototype[MODEL_TYPES.OPERATION] = true;\n/**\n * Debug.\n *\n * @type {Function}\n */\n\nvar debug$2 = debug__WEBPACK_IMPORTED_MODULE_5___default()('slate:operation:invert');\n/**\n * Invert an `op`.\n *\n * @param {Object} op\n * @return {Object}\n */\n\nfunction invertOperation(op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n debug$2(type, op);\n /**\n * Insert node.\n */\n\n if (type == 'insert_node') {\n var inverse = op.set('type', 'remove_node');\n return inverse;\n }\n /**\n * Remove node.\n */\n\n\n if (type == 'remove_node') {\n var _inverse = op.set('type', 'insert_node');\n\n return _inverse;\n }\n /**\n * Move node.\n */\n\n\n if (type == 'move_node') {\n var _op2 = op,\n newPath = _op2.newPath,\n path = _op2.path;\n var inversePath = newPath;\n var inverseNewPath = path;\n var pathLast = path.length - 1;\n var newPathLast = newPath.length - 1; // If the node's old position was a left sibling of an ancestor of\n // its new position, we need to adjust part of the path by -1.\n\n if (path.length < inversePath.length && path.slice(0, pathLast).every(function (e, i) {\n return e == inversePath[i];\n }) && path[pathLast] < inversePath[pathLast]) {\n inversePath = inversePath.slice(0, pathLast).concat([inversePath[pathLast] - 1]).concat(inversePath.slice(pathLast + 1, inversePath.length));\n } // If the node's new position is an ancestor of the old position,\n // or a left sibling of an ancestor of its old position, we need\n // to adjust part of the path by 1.\n\n\n if (newPath.length < inverseNewPath.length && newPath.slice(0, newPathLast).every(function (e, i) {\n return e == inverseNewPath[i];\n }) && newPath[newPathLast] <= inverseNewPath[newPathLast]) {\n inverseNewPath = inverseNewPath.slice(0, newPathLast).concat([inverseNewPath[newPathLast] + 1]).concat(inverseNewPath.slice(newPathLast + 1, inverseNewPath.length));\n }\n\n var _inverse2 = op.set('path', inversePath).set('newPath', inverseNewPath);\n\n return _inverse2;\n }\n /**\n * Merge node.\n */\n\n\n if (type == 'merge_node') {\n var _op3 = op,\n _path = _op3.path;\n var length = _path.length;\n var last = length - 1;\n\n var _inversePath = _path.slice(0, last).concat([_path[last] - 1]);\n\n var _inverse3 = op.set('type', 'split_node').set('path', _inversePath);\n\n return _inverse3;\n }\n /**\n * Split node.\n */\n\n\n if (type == 'split_node') {\n var _op4 = op,\n _path2 = _op4.path;\n var _length = _path2.length;\n\n var _last = _length - 1;\n\n var _inversePath2 = _path2.slice(0, _last).concat([_path2[_last] + 1]);\n\n var _inverse4 = op.set('type', 'merge_node').set('path', _inversePath2);\n\n return _inverse4;\n }\n /**\n * Set node.\n */\n\n\n if (type == 'set_node') {\n var _op5 = op,\n properties = _op5.properties,\n node = _op5.node;\n var inverseNode = node.merge(properties);\n var inverseProperties = lodash_pick__WEBPACK_IMPORTED_MODULE_9___default()(node, Object.keys(properties));\n\n var _inverse5 = op.set('node', inverseNode).set('properties', inverseProperties);\n\n return _inverse5;\n }\n /**\n * Insert text.\n */\n\n\n if (type == 'insert_text') {\n var _inverse6 = op.set('type', 'remove_text');\n\n return _inverse6;\n }\n /**\n * Remove text.\n */\n\n\n if (type == 'remove_text') {\n var _inverse7 = op.set('type', 'insert_text');\n\n return _inverse7;\n }\n /**\n * Add mark.\n */\n\n\n if (type == 'add_mark') {\n var _inverse8 = op.set('type', 'remove_mark');\n\n return _inverse8;\n }\n /**\n * Remove mark.\n */\n\n\n if (type == 'remove_mark') {\n var _inverse9 = op.set('type', 'add_mark');\n\n return _inverse9;\n }\n /**\n * Set mark.\n */\n\n\n if (type == 'set_mark') {\n var _op6 = op,\n _properties = _op6.properties,\n mark = _op6.mark;\n var inverseMark = mark.merge(_properties);\n\n var _inverseProperties = lodash_pick__WEBPACK_IMPORTED_MODULE_9___default()(mark, Object.keys(_properties));\n\n var _inverse10 = op.set('mark', inverseMark).set('properties', _inverseProperties);\n\n return _inverse10;\n }\n /**\n * Set selection.\n */\n\n\n if (type == 'set_selection') {\n var _op7 = op,\n _properties2 = _op7.properties,\n selection = _op7.selection,\n value = _op7.value;\n var anchorPath = _properties2.anchorPath,\n focusPath = _properties2.focusPath,\n props = objectWithoutProperties(_properties2, ['anchorPath', 'focusPath']);\n var document = value.document;\n\n if (anchorPath !== undefined) {\n props.anchorKey = anchorPath === null ? null : document.assertPath(anchorPath).key;\n }\n\n if (focusPath !== undefined) {\n props.focusKey = focusPath === null ? null : document.assertPath(focusPath).key;\n }\n\n var inverseSelection = selection.merge(props);\n var inverseProps = lodash_pick__WEBPACK_IMPORTED_MODULE_9___default()(selection, Object.keys(props));\n\n if (anchorPath !== undefined) {\n inverseProps.anchorPath = inverseProps.anchorKey === null ? null : document.getPath(inverseProps.anchorKey);\n delete inverseProps.anchorKey;\n }\n\n if (focusPath !== undefined) {\n inverseProps.focusPath = inverseProps.focusKey === null ? null : document.getPath(inverseProps.focusKey);\n delete inverseProps.focusKey;\n }\n\n var _inverse11 = op.set('selection', inverseSelection).set('properties', inverseProps);\n\n return _inverse11;\n }\n /**\n * Set value.\n */\n\n\n if (type == 'set_value') {\n var _op8 = op,\n _properties3 = _op8.properties,\n _value = _op8.value;\n\n var inverseValue = _value.merge(_properties3);\n\n var _inverseProperties2 = lodash_pick__WEBPACK_IMPORTED_MODULE_9___default()(_value, Object.keys(_properties3));\n\n var _inverse12 = op.set('value', inverseValue).set('properties', _inverseProperties2);\n\n return _inverse12;\n }\n}\n/**\n * Changes.\n *\n * @type {Object}\n */\n\n\nvar Changes$3 = {};\n/**\n * Redo to the next value in the history.\n *\n * @param {Change} change\n */\n\nChanges$3.redo = function (change) {\n var value = change.value;\n var _value = value,\n history = _value.history;\n if (!history) return;\n var _history = history,\n undos = _history.undos,\n redos = _history.redos;\n var next = redos.peek();\n if (!next) return; // Shift the next value into the undo stack.\n\n redos = redos.pop();\n undos = undos.push(next); // Replay the next operations.\n\n next.forEach(function (op) {\n var _op = op,\n type = _op.type,\n properties = _op.properties; // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during redoing.\n\n if (type == 'set_selection') {\n op = op.set('properties', lodash_omit__WEBPACK_IMPORTED_MODULE_10___default()(properties, 'isFocused'));\n }\n\n change.applyOperation(op, {\n save: false\n });\n }); // Update the history.\n\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n/**\n * Undo the previous operations in the history.\n *\n * @param {Change} change\n */\n\n\nChanges$3.undo = function (change) {\n var value = change.value;\n var _value2 = value,\n history = _value2.history;\n if (!history) return;\n var _history2 = history,\n undos = _history2.undos,\n redos = _history2.redos;\n var previous = undos.peek();\n if (!previous) return; // Shift the previous operations into the redo stack.\n\n undos = undos.pop();\n redos = redos.push(previous); // Replay the inverse of the previous operations.\n\n previous.slice().reverse().map(invertOperation).forEach(function (inverse) {\n var _inverse = inverse,\n type = _inverse.type,\n properties = _inverse.properties; // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during undoing.\n\n if (type == 'set_selection') {\n inverse = inverse.set('properties', lodash_omit__WEBPACK_IMPORTED_MODULE_10___default()(properties, 'isFocused'));\n }\n\n change.applyOperation(inverse, {\n save: false\n });\n }); // Update the history.\n\n value = change.value;\n history = history.set('undos', undos).set('redos', redos);\n value = value.set('history', history);\n change.value = value;\n};\n/**\n * Changes.\n *\n * @type {Object}\n */\n\n\nvar Changes$4 = {};\n/**\n * Set `properties` on the selection.\n *\n * @param {Change} change\n * @param {Object} properties\n */\n\nChanges$4.select = function (change, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n properties = Range.createProperties(properties);\n var _options$snapshot = options.snapshot,\n snapshot = _options$snapshot === undefined ? false : _options$snapshot;\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var props = {};\n var sel = selection.toJSON();\n var next = selection.merge(properties).normalize(document);\n properties = lodash_pick__WEBPACK_IMPORTED_MODULE_9___default()(next, Object.keys(properties)); // Remove any properties that are already equal to the current selection. And\n // create a dictionary of the previous values for all of the properties that\n // are being changed, for the inverse operation.\n\n for (var k in properties) {\n if (snapshot == false && properties[k] == sel[k]) continue;\n props[k] = properties[k];\n } // If the selection moves, clear any marks, unless the new selection\n // properties change the marks in some way.\n\n\n var moved = ['anchorKey', 'anchorOffset', 'focusKey', 'focusOffset'].some(function (p) {\n return props.hasOwnProperty(p);\n });\n\n if (sel.marks && properties.marks == sel.marks && moved) {\n props.marks = null;\n } // If there are no new properties to set, abort.\n\n\n if (is_empty__WEBPACK_IMPORTED_MODULE_11___default()(props)) {\n return;\n } // Apply the operation.\n\n\n change.applyOperation({\n type: 'set_selection',\n value: value,\n properties: props,\n selection: sel\n }, snapshot ? {\n skip: false,\n merge: false\n } : {});\n};\n/**\n * Select the whole document.\n *\n * @param {Change} change\n */\n\n\nChanges$4.selectAll = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var next = selection.moveToRangeOf(document);\n change.select(next);\n};\n/**\n * Snapshot the current selection.\n *\n * @param {Change} change\n */\n\n\nChanges$4.snapshotSelection = function (change) {\n var value = change.value;\n var selection = value.selection;\n change.select(selection, {\n snapshot: true\n });\n};\n/**\n * Move the anchor point backward, accounting for being at the start of a block.\n *\n * @param {Change} change\n */\n\n\nChanges$4.moveAnchorCharBackward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n anchorText = value.anchorText,\n anchorBlock = value.anchorBlock;\n var anchorOffset = selection.anchorOffset;\n var previousText = document.getPreviousText(anchorText.key);\n var isInVoid = document.hasVoidParent(anchorText.key);\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key);\n\n if (!isInVoid && anchorOffset > 0) {\n change.moveAnchor(-1);\n return;\n }\n\n if (!previousText) {\n return;\n }\n\n change.moveAnchorToEndOf(previousText);\n\n if (!isInVoid && !isPreviousInVoid && anchorBlock.hasNode(previousText.key)) {\n change.moveAnchor(-1);\n }\n};\n/**\n * Move the anchor point forward, accounting for being at the end of a block.\n *\n * @param {Change} change\n */\n\n\nChanges$4.moveAnchorCharForward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n anchorText = value.anchorText,\n anchorBlock = value.anchorBlock;\n var anchorOffset = selection.anchorOffset;\n var nextText = document.getNextText(anchorText.key);\n var isInVoid = document.hasVoidParent(anchorText.key);\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key);\n\n if (!isInVoid && anchorOffset < anchorText.text.length) {\n change.moveAnchor(1);\n return;\n }\n\n if (!nextText) {\n return;\n }\n\n change.moveAnchorToStartOf(nextText);\n\n if (!isInVoid && !isNextInVoid && anchorBlock.hasNode(nextText.key)) {\n change.moveAnchor(1);\n }\n};\n/**\n * Move the focus point backward, accounting for being at the start of a block.\n *\n * @param {Change} change\n */\n\n\nChanges$4.moveFocusCharBackward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n focusText = value.focusText,\n focusBlock = value.focusBlock;\n var focusOffset = selection.focusOffset;\n var previousText = document.getPreviousText(focusText.key);\n var isInVoid = document.hasVoidParent(focusText.key);\n var isPreviousInVoid = previousText && document.hasVoidParent(previousText.key);\n\n if (!isInVoid && focusOffset > 0) {\n change.moveFocus(-1);\n return;\n }\n\n if (!previousText) {\n return;\n }\n\n change.moveFocusToEndOf(previousText);\n\n if (!isInVoid && !isPreviousInVoid && focusBlock.hasNode(previousText.key)) {\n change.moveFocus(-1);\n }\n};\n/**\n * Move the focus point forward, accounting for being at the end of a block.\n *\n * @param {Change} change\n */\n\n\nChanges$4.moveFocusCharForward = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection,\n focusText = value.focusText,\n focusBlock = value.focusBlock;\n var focusOffset = selection.focusOffset;\n var nextText = document.getNextText(focusText.key);\n var isInVoid = document.hasVoidParent(focusText.key);\n var isNextInVoid = nextText && document.hasVoidParent(nextText.key);\n\n if (!isInVoid && focusOffset < focusText.text.length) {\n change.moveFocus(1);\n return;\n }\n\n if (!nextText) {\n return;\n }\n\n change.moveFocusToStartOf(nextText);\n\n if (!isInVoid && !isNextInVoid && focusBlock.hasNode(nextText.key)) {\n change.moveFocus(1);\n }\n};\n/**\n * Mix in move methods.\n */\n\n\nvar MOVE_DIRECTIONS = ['Forward', 'Backward'];\nMOVE_DIRECTIONS.forEach(function (direction$$1) {\n var anchor = 'moveAnchorChar' + direction$$1;\n var focus = 'moveFocusChar' + direction$$1;\n\n Changes$4['moveChar' + direction$$1] = function (change) {\n change[anchor]()[focus]();\n };\n\n Changes$4['moveStartChar' + direction$$1] = function (change) {\n if (change.value.isBackward) {\n change[focus]();\n } else {\n change[anchor]();\n }\n };\n\n Changes$4['moveEndChar' + direction$$1] = function (change) {\n if (change.value.isBackward) {\n change[anchor]();\n } else {\n change[focus]();\n }\n };\n\n Changes$4['extendChar' + direction$$1] = function (change) {\n change['moveFocusChar' + direction$$1]();\n };\n\n Changes$4['collapseChar' + direction$$1] = function (change) {\n var collapse = direction$$1 == 'Forward' ? 'collapseToEnd' : 'collapseToStart';\n change[collapse]()['moveChar' + direction$$1]();\n };\n});\n/**\n * Mix in alias methods.\n */\n\nvar ALIAS_METHODS$1 = [['collapseLineBackward', 'collapseToStartOfBlock'], ['collapseLineForward', 'collapseToEndOfBlock'], ['extendLineBackward', 'extendToStartOfBlock'], ['extendLineForward', 'extendToEndOfBlock']];\nALIAS_METHODS$1.forEach(function (_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n alias = _ref2[0],\n method = _ref2[1];\n\n Changes$4[alias] = function (change) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n change[method].apply(change, [change].concat(args));\n };\n});\n/**\n * Mix in selection changes that are just a proxy for the selection method.\n */\n\nvar PROXY_TRANSFORMS$1 = ['blur', 'collapseTo', 'collapseToAnchor', 'collapseToEnd', 'collapseToEndOf', 'collapseToFocus', 'collapseToStart', 'collapseToStartOf', 'extend', 'extendTo', 'extendToEndOf', 'extendToStartOf', 'flip', 'focus', 'move', 'moveAnchor', 'moveAnchorOffsetTo', 'moveAnchorTo', 'moveAnchorToEndOf', 'moveAnchorToStartOf', 'moveEnd', 'moveEndOffsetTo', 'moveEndTo', 'moveFocus', 'moveFocusOffsetTo', 'moveFocusTo', 'moveFocusToEndOf', 'moveFocusToStartOf', 'moveOffsetsTo', 'moveStart', 'moveStartOffsetTo', 'moveStartTo', 'moveTo', 'moveToEnd', 'moveToEndOf', 'moveToRangeOf', 'moveToStart', 'moveToStartOf', 'deselect'];\nPROXY_TRANSFORMS$1.forEach(function (method) {\n Changes$4[method] = function (change) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var normalize = method != 'deselect';\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var next = selection[method].apply(selection, args);\n if (normalize) next = next.normalize(document);\n change.select(next);\n };\n});\n/**\n * Mix in node-related changes.\n */\n\nvar PREFIXES = ['moveTo', 'moveAnchorTo', 'moveFocusTo', 'moveStartTo', 'moveEndTo', 'collapseTo', 'extendTo'];\nvar DIRECTIONS = ['Next', 'Previous'];\nvar OBJECTS = ['Block', 'Inline', 'Text'];\nPREFIXES.forEach(function (prefix) {\n var edges = ['Start', 'End'];\n\n if (prefix == 'moveTo') {\n edges.push('Range');\n }\n\n edges.forEach(function (edge) {\n var method = '' + prefix + edge + 'Of';\n OBJECTS.forEach(function (object) {\n var getNode = object == 'Text' ? 'getNode' : 'getClosest' + object;\n\n Changes$4['' + method + object] = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var node = document[getNode](selection.startKey);\n if (!node) return;\n change[method](node);\n };\n\n DIRECTIONS.forEach(function (direction$$1) {\n var getDirectionNode = 'get' + direction$$1 + object;\n var directionKey = direction$$1 == 'Next' ? 'startKey' : 'endKey';\n\n Changes$4['' + method + direction$$1 + object] = function (change) {\n var value = change.value;\n var document = value.document,\n selection = value.selection;\n var node = document[getNode](selection[directionKey]);\n if (!node) return;\n var target = document[getDirectionNode](node.key);\n if (!target) return;\n change[method](target);\n };\n });\n });\n });\n});\n/**\n * Changes.\n *\n * @type {Object}\n */\n\nvar Changes$5 = {};\n/**\n * Set `properties` on the value.\n *\n * @param {Change} change\n * @param {Object|Value} properties\n * @param {Object} options\n */\n\nChanges$5.setValue = function (change, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n properties = Value.createProperties(properties);\n var value = change.value;\n change.applyOperation({\n type: 'set_value',\n properties: properties,\n value: value\n }, options);\n};\n/**\n * Changes.\n *\n * @type {Object}\n */\n\n\nvar Changes$6 = {};\n/**\n * Normalize the value with its schema.\n *\n * @param {Change} change\n */\n\nChanges$6.normalize = function (change) {\n change.normalizeDocument();\n};\n/**\n * Normalize the document with the value's schema.\n *\n * @param {Change} change\n */\n\n\nChanges$6.normalizeDocument = function (change) {\n var value = change.value;\n var document = value.document;\n change.normalizeNodeByKey(document.key);\n};\n/**\n * Normalize a `node` and its children with the value's schema.\n *\n * @param {Change} change\n * @param {Node|String} key\n */\n\n\nChanges$6.normalizeNodeByKey = function (change, key) {\n var value = change.value;\n var document = value.document,\n schema = value.schema;\n var node = document.assertNode(key);\n normalizeNodeAndChildren(change, node, schema);\n document = change.value.document;\n var ancestors = document.getAncestors(key);\n if (!ancestors) return;\n ancestors.forEach(function (ancestor) {\n if (change.value.document.getDescendant(ancestor.key)) {\n normalizeNode(change, ancestor, schema);\n }\n });\n};\n/**\n * Normalize a `node` and its children with a `schema`.\n *\n * @param {Change} change\n * @param {Node} node\n * @param {Schema} schema\n */\n\n\nfunction normalizeNodeAndChildren(change, node, schema) {\n if (node.object == 'text') {\n normalizeNode(change, node, schema);\n return;\n }\n\n var child = node.getFirstInvalidDescendant(schema);\n var path = change.value.document.getPath(node.key);\n\n while (node && child) {\n normalizeNodeAndChildren(change, child, schema);\n node = change.value.document.refindNode(path, node.key);\n\n if (!node) {\n path = [];\n child = null;\n } else {\n path = change.value.document.refindPath(path, node.key);\n child = node.getFirstInvalidDescendant(schema);\n }\n } // Normalize the node itself if it still exists.\n\n\n if (node) {\n normalizeNode(change, node, schema);\n }\n}\n/**\n * Normalize a `node` with a `schema`, but not its children.\n *\n * @param {Change} change\n * @param {Node} node\n * @param {Schema} schema\n */\n\n\nfunction normalizeNode(change, node, schema) {\n var max = schema.stack.plugins.length + 1;\n var iterations = 0;\n\n function iterate(c, n) {\n var normalize = n.validate(schema);\n if (!normalize) return; // Run the `normalize` function to fix the node.\n\n var path = c.value.document.getPath(n.key);\n normalize(c); // Re-find the node reference, in case it was updated. If the node no longer\n // exists, we're done for this branch.\n\n n = c.value.document.refindNode(path, n.key);\n if (!n) return;\n path = c.value.document.refindPath(path, n.key); // Increment the iterations counter, and check to make sure that we haven't\n // exceeded the max. Without this check, it's easy for the `validate` or\n // `normalize` function of a schema rule to be written incorrectly and for\n // an infinite invalid loop to occur.\n\n iterations++;\n\n if (iterations > max) {\n throw new Error('A schema rule could not be validated after sufficient iterations. This is usually due to a `rule.validate` or `rule.normalize` function of a schema being incorrectly written, causing an infinite loop.');\n } // Otherwise, iterate again.\n\n\n iterate(c, n);\n }\n\n iterate(change, node);\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar Changes$7 = _extends({}, Changes, Changes$1, Changes$2, Changes$3, Changes$4, Changes$5, Changes$6);\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$3 = debug__WEBPACK_IMPORTED_MODULE_5___default()('slate:operation:apply');\n/**\n * Apply adjustments to affected ranges (selections, decorations);\n * accepts (value, checking function(range) -> bool, applying function(range) -> range)\n * returns value with affected ranges updated\n *\n * @param {Value} value\n * @param {Function} checkAffected\n * @param {Function} adjustRange\n * @return {Value}\n */\n\nfunction applyRangeAdjustments(value, checkAffected, adjustRange) {\n // check selection, apply adjustment if affected\n if (value.selection && checkAffected(value.selection)) {\n value = value.set('selection', adjustRange(value.selection));\n }\n\n if (!value.decorations) return value; // check all ranges, apply adjustment if affected\n\n var decorations = value.decorations.map(function (decoration) {\n return checkAffected(decoration) ? adjustRange(decoration) : decoration;\n }).filter(function (decoration) {\n return decoration.anchorKey !== null;\n });\n return value.set('decorations', decorations);\n}\n/**\n * clear any atomic ranges (in decorations) if they contain the point (key, offset, offset-end?)\n * specified\n *\n * @param {Value} value\n * @param {String} key\n * @param {Number} offset\n * @param {Number?} offsetEnd\n * @return {Value}\n */\n\n\nfunction clearAtomicRangesIfContains(value, key, offset) {\n var offsetEnd = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : null;\n return applyRangeAdjustments(value, function (range) {\n if (!range.isAtomic) return false;\n var startKey = range.startKey,\n startOffset = range.startOffset,\n endKey = range.endKey,\n endOffset = range.endOffset;\n return startKey == key && startOffset < offset && (endKey != key || endOffset > offset) || offsetEnd && startKey == key && startOffset < offsetEnd && (endKey != key || endOffset > offsetEnd);\n }, function (range) {\n return range.deselect();\n });\n}\n/**\n * Applying functions.\n *\n * @type {Object}\n */\n\n\nvar APPLIERS = {\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n add_mark: function add_mark(value, operation) {\n var path = operation.path,\n offset = operation.offset,\n length = operation.length,\n mark = operation.mark;\n var _value = value,\n document = _value.document;\n var node = document.assertPath(path);\n node = node.addMark(offset, length, mark);\n document = document.updateNode(node);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Insert a `node` at `index` in a node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n insert_node: function insert_node(value, operation) {\n var path = operation.path,\n node = operation.node;\n var index = path[path.length - 1];\n var rest = path.slice(0, -1);\n var _value2 = value,\n document = _value2.document;\n var parent = document.assertPath(rest);\n parent = parent.insertNode(index, node);\n document = document.updateNode(parent);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n insert_text: function insert_text(value, operation) {\n var path = operation.path,\n offset = operation.offset,\n text = operation.text,\n marks = operation.marks;\n var _value3 = value,\n document = _value3.document;\n var node = document.assertPath(path); // Update the document\n\n node = node.insertText(offset, text, marks);\n document = document.updateNode(node);\n value = value.set('document', document); // if insert happens within atomic ranges, clear\n\n value = clearAtomicRangesIfContains(value, node.key, offset); // Update the selection, decorations\n\n value = applyRangeAdjustments(value, function (_ref) {\n var anchorKey = _ref.anchorKey,\n anchorOffset = _ref.anchorOffset,\n isBackward = _ref.isBackward,\n isAtomic = _ref.isAtomic;\n return anchorKey == node.key && (anchorOffset > offset || anchorOffset == offset && (!isAtomic || !isBackward));\n }, function (range) {\n return range.moveAnchor(text.length);\n });\n value = applyRangeAdjustments(value, function (_ref2) {\n var focusKey = _ref2.focusKey,\n focusOffset = _ref2.focusOffset,\n isBackward = _ref2.isBackward,\n isAtomic = _ref2.isAtomic;\n return focusKey == node.key && (focusOffset > offset || focusOffset == offset && (!isAtomic || isBackward));\n }, function (range) {\n return range.moveFocus(text.length);\n });\n return value;\n },\n\n /**\n * Merge a node at `path` with the previous node.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n merge_node: function merge_node(value, operation) {\n var path = operation.path;\n var withPath = path.slice(0, path.length - 1).concat([path[path.length - 1] - 1]);\n var _value4 = value,\n document = _value4.document;\n var one = document.assertPath(withPath);\n var two = document.assertPath(path);\n var parent = document.getParent(one.key);\n var oneIndex = parent.nodes.indexOf(one);\n var twoIndex = parent.nodes.indexOf(two); // Perform the merge in the document.\n\n parent = parent.mergeNode(oneIndex, twoIndex);\n document = document.updateNode(parent);\n value = value.set('document', document);\n\n if (one.object == 'text') {\n value = applyRangeAdjustments(value, // If the nodes are text nodes and the range is inside the second node:\n function (_ref3) {\n var anchorKey = _ref3.anchorKey,\n focusKey = _ref3.focusKey;\n return anchorKey == two.key || focusKey == two.key;\n }, // update it to refer to the first node instead:\n function (range) {\n if (range.anchorKey == two.key) range = range.moveAnchorTo(one.key, one.text.length + range.anchorOffset);\n if (range.focusKey == two.key) range = range.moveFocusTo(one.key, one.text.length + range.focusOffset);\n return range.normalize(document);\n });\n }\n\n return value;\n },\n\n /**\n * Move a node by `path` to `newPath`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n move_node: function move_node(value, operation) {\n var path = operation.path,\n newPath = operation.newPath;\n var newIndex = newPath[newPath.length - 1];\n var newParentPath = newPath.slice(0, -1);\n var oldParentPath = path.slice(0, -1);\n var oldIndex = path[path.length - 1];\n var _value5 = value,\n document = _value5.document;\n var node = document.assertPath(path); // Remove the node from its current parent.\n\n var parent = document.getParent(node.key);\n parent = parent.removeNode(oldIndex);\n document = document.updateNode(parent); // Find the new target...\n\n var target = void 0; // If the old path and the rest of the new path are the same, then the new\n // target is the old parent.\n\n if (oldParentPath.every(function (x, i) {\n return x === newParentPath[i];\n }) && oldParentPath.length === newParentPath.length) {\n target = parent;\n } else if (oldParentPath.every(function (x, i) {\n return x === newParentPath[i];\n }) && oldIndex < newParentPath[oldParentPath.length]) {\n // Otherwise, if the old path removal resulted in the new path being no longer\n // correct, we need to decrement the new path at the old path's last index.\n newParentPath[oldParentPath.length]--;\n target = document.assertPath(newParentPath);\n } else {\n // Otherwise, we can just grab the target normally...\n target = document.assertPath(newParentPath);\n } // Insert the new node to its new parent.\n\n\n target = target.insertNode(newIndex, node);\n document = document.updateNode(target);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Remove mark from text at `offset` and `length` in node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n remove_mark: function remove_mark(value, operation) {\n var path = operation.path,\n offset = operation.offset,\n length = operation.length,\n mark = operation.mark;\n var _value6 = value,\n document = _value6.document;\n var node = document.assertPath(path);\n node = node.removeMark(offset, length, mark);\n document = document.updateNode(node);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Remove a node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n remove_node: function remove_node(value, operation) {\n var path = operation.path;\n var _value7 = value,\n document = _value7.document,\n selection = _value7.selection;\n var node = document.assertPath(path);\n\n if (selection.isSet || value.decorations !== null) {\n var first = node.object == 'text' ? node : node.getFirstText() || node;\n var last = node.object == 'text' ? node : node.getLastText() || node;\n var prev = document.getPreviousText(first.key);\n var next = document.getNextText(last.key);\n value = applyRangeAdjustments(value, // If the start or end point was in this node\n function (_ref4) {\n var startKey = _ref4.startKey,\n endKey = _ref4.endKey;\n return node.hasNode(startKey) || node.hasNode(endKey);\n }, // update it to be just before/after\n function (range) {\n var _range = range,\n startKey = _range.startKey,\n endKey = _range.endKey;\n\n if (node.hasNode(startKey)) {\n range = prev ? range.moveStartTo(prev.key, prev.text.length) : next ? range.moveStartTo(next.key, 0) : range.deselect();\n }\n\n if (node.hasNode(endKey)) {\n range = prev ? range.moveEndTo(prev.key, prev.text.length) : next ? range.moveEndTo(next.key, 0) : range.deselect();\n } // If the range wasn't deselected, normalize it.\n\n\n if (range.isSet) return range.normalize(document);\n return range;\n });\n } // Remove the node from the document.\n\n\n var parent = document.getParent(node.key);\n var index = parent.nodes.indexOf(node);\n parent = parent.removeNode(index);\n document = document.updateNode(parent); // Update the document and range.\n\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Remove `text` at `offset` in node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n remove_text: function remove_text(value, operation) {\n var path = operation.path,\n offset = operation.offset,\n text = operation.text;\n var length = text.length;\n var rangeOffset = offset + length;\n var _value8 = value,\n document = _value8.document;\n var node = document.assertPath(path); // if insert happens within atomic ranges, clear\n\n value = clearAtomicRangesIfContains(value, node.key, offset, offset + length);\n value = applyRangeAdjustments(value, // if anchor of range is here\n function (_ref5) {\n var anchorKey = _ref5.anchorKey;\n return anchorKey == node.key;\n }, // adjust if it is in or past the removal range\n function (range) {\n return range.anchorOffset >= rangeOffset ? range.moveAnchor(-length) : range.anchorOffset > offset ? range.moveAnchorTo(range.anchorKey, offset) : range;\n });\n value = applyRangeAdjustments(value, // if focus of range is here\n function (_ref6) {\n var focusKey = _ref6.focusKey;\n return focusKey == node.key;\n }, // adjust if it is in or past the removal range\n function (range) {\n return range.focusOffset >= rangeOffset ? range.moveFocus(-length) : range.focusOffset > offset ? range.moveFocusTo(range.focusKey, offset) : range;\n });\n node = node.removeText(offset, length);\n document = document.updateNode(node);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Set `properties` on mark on text at `offset` and `length` in node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n set_mark: function set_mark(value, operation) {\n var path = operation.path,\n offset = operation.offset,\n length = operation.length,\n mark = operation.mark,\n properties = operation.properties;\n var _value9 = value,\n document = _value9.document;\n var node = document.assertPath(path);\n node = node.updateMark(offset, length, mark, properties);\n document = document.updateNode(node);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Set `properties` on a node by `path`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n set_node: function set_node(value, operation) {\n var path = operation.path,\n properties = operation.properties;\n var _value10 = value,\n document = _value10.document;\n var node = document.assertPath(path);\n node = node.merge(properties);\n document = document.updateNode(node);\n value = value.set('document', document);\n return value;\n },\n\n /**\n * Set `properties` on the selection.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n set_selection: function set_selection(value, operation) {\n var properties = operation.properties;\n var anchorPath = properties.anchorPath,\n focusPath = properties.focusPath,\n props = objectWithoutProperties(properties, ['anchorPath', 'focusPath']);\n var _value11 = value,\n document = _value11.document,\n selection = _value11.selection;\n\n if (anchorPath !== undefined) {\n props.anchorKey = anchorPath === null ? null : document.assertPath(anchorPath).key;\n }\n\n if (focusPath !== undefined) {\n props.focusKey = focusPath === null ? null : document.assertPath(focusPath).key;\n }\n\n selection = selection.merge(props);\n selection = selection.normalize(document);\n value = value.set('selection', selection);\n return value;\n },\n\n /**\n * Set `properties` on `value`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n set_value: function set_value(value, operation) {\n var properties = operation.properties;\n value = value.merge(properties);\n return value;\n },\n\n /**\n * Split a node by `path` at `offset`.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n split_node: function split_node(value, operation) {\n var path = operation.path,\n position = operation.position,\n properties = operation.properties;\n var _value12 = value,\n document = _value12.document; // Calculate a few things...\n\n var node = document.assertPath(path);\n var parent = document.getParent(node.key);\n var index = parent.nodes.indexOf(node); // Split the node by its parent.\n\n parent = parent.splitNode(index, position);\n\n if (properties) {\n var splitNode = parent.nodes.get(index + 1);\n\n if (splitNode.object !== 'text') {\n parent = parent.updateNode(splitNode.merge(properties));\n }\n }\n\n document = document.updateNode(parent);\n var next = document.getNextText(node.key);\n value = applyRangeAdjustments(value, // check if range is affected\n function (_ref7) {\n var startKey = _ref7.startKey,\n startOffset = _ref7.startOffset,\n endKey = _ref7.endKey,\n endOffset = _ref7.endOffset;\n return node.key == startKey && position <= startOffset || node.key == endKey && position <= endOffset;\n }, // update its start / end as needed\n function (range) {\n var _range2 = range,\n startKey = _range2.startKey,\n startOffset = _range2.startOffset,\n endKey = _range2.endKey,\n endOffset = _range2.endOffset;\n var normalize = false;\n\n if (node.key == startKey && position <= startOffset) {\n range = range.moveStartTo(next.key, startOffset - position);\n normalize = true;\n }\n\n if (node.key == endKey && position <= endOffset) {\n range = range.moveEndTo(next.key, endOffset - position);\n normalize = true;\n } // Normalize the selection if we changed it\n\n\n if (normalize) return range.normalize(document);\n return range;\n }); // Return the updated value.\n\n value = value.set('document', document);\n return value;\n }\n};\n/**\n * Apply an `operation` to a `value`.\n *\n * @param {Value} value\n * @param {Object|Operation} operation\n * @return {Value} value\n */\n\nfunction applyOperation(value, operation) {\n operation = Operation.create(operation);\n var _operation = operation,\n type = _operation.type;\n var apply = APPLIERS[type];\n\n if (!apply) {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n\n debug$3(type, operation);\n value = apply(value, operation);\n return value;\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$4 = debug__WEBPACK_IMPORTED_MODULE_5___default()('slate:change');\n/**\n * Change.\n *\n * @type {Change}\n */\n\nvar Change = function () {\n /**\n * Create a new `Change` with `attrs`.\n *\n * @param {Object} attrs\n * @property {Value} value\n */\n function Change(attrs) {\n classCallCheck(this, Change);\n var value = attrs.value;\n this.value = value;\n this.operations = new immutable__WEBPACK_IMPORTED_MODULE_2__[\"List\"]();\n this.flags = _extends({\n normalize: true\n }, lodash_pick__WEBPACK_IMPORTED_MODULE_9___default()(attrs, ['merge', 'save', 'normalize']));\n }\n /**\n * Object.\n *\n * @return {String}\n */\n\n /**\n * Check if `any` is a `Change`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n\n createClass(Change, [{\n key: 'applyOperation',\n\n /**\n * Apply an `operation` to the current value, saving the operation to the\n * history if needed.\n *\n * @param {Operation|Object} operation\n * @param {Object} options\n * @return {Change}\n */\n value: function applyOperation$$1(operation) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var operations = this.operations,\n flags = this.flags;\n var value = this.value;\n var _value = value,\n history = _value.history; // Add in the current `value` in case the operation was serialized.\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(operation)) {\n operation = _extends({}, operation, {\n value: value\n });\n }\n\n operation = Operation.create(operation); // Default options to the change-level flags, this allows for setting\n // specific options for all of the operations of a given change.\n\n options = _extends({}, flags, options); // Derive the default option values.\n\n var _options = options,\n _options$merge = _options.merge,\n merge = _options$merge === undefined ? operations.size == 0 ? null : true : _options$merge,\n _options$save = _options.save,\n save = _options$save === undefined ? true : _options$save,\n _options$skip = _options.skip,\n skip = _options$skip === undefined ? null : _options$skip; // Apply the operation to the value.\n\n debug$4('apply', {\n operation: operation,\n save: save,\n merge: merge\n });\n value = applyOperation(value, operation); // If needed, save the operation to the history.\n\n if (history && save) {\n history = history.save(operation, {\n merge: merge,\n skip: skip\n });\n value = value.set('history', history);\n } // Update the mutable change object.\n\n\n this.value = value;\n this.operations = operations.push(operation);\n return this;\n }\n /**\n * Apply a series of `operations` to the current value.\n *\n * @param {Array|List} operations\n * @param {Object} options\n * @return {Change}\n */\n\n }, {\n key: 'applyOperations',\n value: function applyOperations(operations, options) {\n var _this = this;\n\n operations.forEach(function (op) {\n return _this.applyOperation(op, options);\n });\n return this;\n }\n /**\n * Call a change `fn` with arguments.\n *\n * @param {Function} fn\n * @param {Mixed} ...args\n * @return {Change}\n */\n\n }, {\n key: 'call',\n value: function call(fn) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n fn.apply(undefined, [this].concat(args));\n return this;\n }\n /**\n * Applies a series of change mutations and defers normalization until the end.\n *\n * @param {Function} customChange - function that accepts a change object and executes change operations\n * @return {Change}\n */\n\n }, {\n key: 'withoutNormalization',\n value: function withoutNormalization(customChange) {\n var original = this.flags.normalize;\n this.setOperationFlag('normalize', false);\n\n try {\n customChange(this); // if the change function worked then run normalization\n\n this.normalizeDocument();\n } finally {\n // restore the flag to whatever it was\n this.setOperationFlag('normalize', original);\n }\n\n return this;\n }\n /**\n * Set an operation flag by `key` to `value`.\n *\n * @param {String} key\n * @param {Any} value\n * @return {Change}\n */\n\n }, {\n key: 'setOperationFlag',\n value: function setOperationFlag(key, value) {\n this.flags[key] = value;\n return this;\n }\n /**\n * Get the `value` of the specified flag by its `key`. Optionally accepts an `options`\n * object with override flags.\n *\n * @param {String} key\n * @param {Object} options\n * @return {Change}\n */\n\n }, {\n key: 'getFlag',\n value: function getFlag(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return options[key] !== undefined ? options[key] : this.flags[key];\n }\n /**\n * Unset an operation flag by `key`.\n *\n * @param {String} key\n * @return {Change}\n */\n\n }, {\n key: 'unsetOperationFlag',\n value: function unsetOperationFlag(key) {\n delete this.flags[key];\n return this;\n }\n }, {\n key: 'object',\n get: function get$$1() {\n return 'change';\n }\n }, {\n key: 'kind',\n get: function get$$1() {\n slate_dev_logger__WEBPACK_IMPORTED_MODULE_1__[\"default\"].deprecate('slate@0.32.0', 'The `kind` property of Slate objects has been renamed to `object`.');\n return this.object;\n }\n }]);\n return Change;\n}();\n/**\n * Attach a pseudo-symbol for type checking.\n */\n\n\nChange.isChange = isType.bind(null, 'CHANGE');\nChange.prototype[MODEL_TYPES.CHANGE] = true;\n/**\n * Add a change method for each of the changes.\n */\n\nObject.keys(Changes$7).forEach(function (type) {\n Change.prototype[type] = function () {\n for (var _len2 = arguments.length, args = Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n debug$4(type, {\n args: args\n });\n this.call.apply(this, [Changes$7[type]].concat(args));\n return this;\n };\n});\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar Operations = {\n apply: applyOperation,\n invert: invertOperation\n};\nvar index = {\n Block: Block,\n Changes: Changes$7,\n Character: Character,\n Data: Data,\n Document: Document,\n History: History,\n Inline: Inline,\n Leaf: Leaf,\n Mark: Mark,\n Node: Node,\n Operation: Operation,\n Operations: Operations,\n Range: Range,\n Schema: Schema,\n Stack: Stack$1,\n Text: Text,\n Value: Value,\n resetKeyGenerator: resetKeyGenerator,\n setKeyGenerator: setKeyGenerator,\n resetMemoization: resetMemoization,\n useMemoization: useMemoization\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n\n//# sourceURL=webpack:///./node_modules/slate/lib/slate.es.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Block\", function() { return Block; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Change\", function() { return Change; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Data\", function() { return Data; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Decoration\", function() { return Decoration; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Document\", function() { return Document; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Editor\", function() { return Editor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Inline\", function() { return Inline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"KeyUtils\", function() { return KeyUtils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Leaf\", function() { return Leaf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Mark\", function() { return Mark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Node\", function() { return Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Operation\", function() { return Operation; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"PathUtils\", function() { return PathUtils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Point\", function() { return Point; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Range\", function() { return Range; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"resetMemoization\", function() { return resetMemoization; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Selection\", function() { return Selection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Text\", function() { return Text; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextUtils\", function() { return TextUtils; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"useMemoization\", function() { return useMemoization; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Value\", function() { return Value; });\n/* harmony import */ var is_plain_object__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! is-plain-object */ \"./node_modules/is-plain-object/index.js\");\n/* harmony import */ var is_plain_object__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(is_plain_object__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! immutable */ \"./node_modules/immutable/dist/immutable.js\");\n/* harmony import */ var immutable__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(immutable__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var tiny_warning__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tiny-warning */ \"./node_modules/slate/node_modules/tiny-warning/dist/tiny-warning.esm.js\");\n/* harmony import */ var tiny_invariant__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tiny-invariant */ \"./node_modules/tiny-invariant/dist/tiny-invariant.esm.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! debug */ \"./node_modules/slate/node_modules/debug/src/browser.js\");\n/* harmony import */ var debug__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(debug__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! lodash/pick */ \"./node_modules/lodash/pick.js\");\n/* harmony import */ var lodash_pick__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(lodash_pick__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var esrever__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! esrever */ \"./node_modules/esrever/esrever.js\");\n/* harmony import */ var esrever__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(esrever__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! lodash/omit */ \"./node_modules/lodash/omit.js\");\n/* harmony import */ var lodash_omit__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(lodash_omit__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var direction__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! direction */ \"./node_modules/direction/index.js\");\n/* harmony import */ var direction__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(direction__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n/**\n * An auto-incrementing index for generating keys.\n *\n * @type {Number}\n */\n\nvar n = void 0;\n/**\n * The global key generating function.\n *\n * @type {Function}\n */\n\nvar generate = void 0;\n/**\n * Create a key, using a provided key if available.\n *\n * @param {String|Void} key\n * @return {String}\n */\n\nfunction create(key) {\n if (key == null) {\n return generate();\n }\n\n if (typeof key === 'string') {\n return key;\n }\n\n throw new Error('Keys must be strings, but you passed: ' + key);\n}\n/**\n * Set a different unique ID generating `function`.\n *\n * @param {Function} func\n */\n\n\nfunction setGenerator(func) {\n generate = func;\n}\n/**\n * Reset the key generating function to its initial state.\n */\n\n\nfunction resetGenerator() {\n n = 0;\n\n generate = function generate() {\n return '' + n++;\n };\n}\n/**\n * Set the initial state.\n */\n\n\nresetGenerator();\n/**\n * Export.\n *\n * @type {Object}\n */\n\nvar KeyUtils = {\n create: create,\n setGenerator: setGenerator,\n resetGenerator: resetGenerator\n};\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n} : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n};\n\nvar classCallCheck = function classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n};\n\nvar createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n}();\n\nvar defineProperty = function defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n};\n\nvar _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n};\n\nvar inherits = function inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n};\n\nvar objectWithoutProperties = function objectWithoutProperties(obj, keys) {\n var target = {};\n\n for (var i in obj) {\n if (keys.indexOf(i) >= 0) continue;\n if (!Object.prototype.hasOwnProperty.call(obj, i)) continue;\n target[i] = obj[i];\n }\n\n return target;\n};\n\nvar possibleConstructorReturn = function possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n};\n\nvar slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n}();\n\nvar toConsumableArray = function toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n};\n/**\n * Data.\n *\n * This isn't an immutable record, it's just a thin wrapper around `Map` so that\n * we can allow for more convenient creation.\n *\n * @type {Object}\n */\n\n\nvar Data = function () {\n function Data() {\n classCallCheck(this, Data);\n }\n\n createClass(Data, null, [{\n key: 'create',\n\n /**\n * Create a new `Data` with `attrs`.\n *\n * @param {Object|Data|Map} attrs\n * @return {Data} data\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"Map\"].isMap(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Data.fromJSON(attrs);\n }\n\n throw new Error('`Data.create` only accepts objects or maps, but you passed it: ' + attrs);\n }\n /**\n * Create a `Data` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Data}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n return new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Map\"](object);\n }\n /**\n * Alias `fromJS`.\n */\n\n }]);\n return Data;\n}();\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nData.fromJS = Data.fromJSON;\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS = {\n data: undefined,\n key: undefined,\n nodes: undefined\n /**\n * Document.\n *\n * @type {Document}\n */\n\n};\n\nvar Document = function (_Record) {\n inherits(Document, _Record);\n\n function Document() {\n classCallCheck(this, Document);\n return possibleConstructorReturn(this, (Document.__proto__ || Object.getPrototypeOf(Document)).apply(this, arguments));\n }\n\n createClass(Document, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the document.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Document` with `attrs`.\n *\n * @param {Object|Array|List|Text} attrs\n * @return {Document}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Document.isDocument(attrs)) {\n return attrs;\n }\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(attrs) || Array.isArray(attrs)) {\n attrs = {\n nodes: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Document.fromJSON(attrs);\n }\n\n throw new Error('`Document.create` only accepts objects, arrays, lists or documents, but you passed it: ' + attrs);\n }\n /**\n * Create a `Document` from a JSON `object`.\n *\n * @param {Object|Document} object\n * @return {Document}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Document.isDocument(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes;\n var document = new Document({\n key: key,\n data: new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Map\"](data),\n nodes: Node.createList(nodes)\n });\n return document;\n }\n }]);\n return Document;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$1 = {\n data: undefined,\n key: undefined,\n nodes: undefined,\n type: undefined\n /**\n * Inline.\n *\n * @type {Inline}\n */\n\n};\n\nvar Inline = function (_Record) {\n inherits(Inline, _Record);\n\n function Inline() {\n classCallCheck(this, Inline);\n return possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n createClass(Inline, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the inline.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Inline` with `attrs`.\n *\n * @param {Object|String|Inline} attrs\n * @return {Inline}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Inline.isInline(attrs)) {\n return attrs;\n }\n\n if (typeof attrs === 'string') {\n attrs = {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Inline.fromJSON(attrs);\n }\n\n throw new Error('`Inline.create` only accepts objects, strings or inlines, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Inlines` from an array.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](elements.map(Inline.create));\n return list;\n }\n\n throw new Error('`Inline.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Inline` from a JSON `object`.\n *\n * @param {Object|Inline} object\n * @return {Inline}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Inline.isInline(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n if (typeof type !== 'string') {\n throw new Error('`Inline.fromJS` requires a `type` string.');\n }\n\n var inline = new Inline({\n key: key,\n type: type,\n data: new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Map\"](data),\n nodes: Node.createList(nodes)\n });\n return inline;\n }\n /**\n * Check if `any` is a list of inlines.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isInlineList',\n value: function isInlineList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(any) && any.every(function (item) {\n return Inline.isInline(item);\n });\n }\n }]);\n return Inline;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$1));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$2 = {\n data: undefined,\n type: undefined\n /**\n * Mark.\n *\n * @type {Mark}\n */\n\n};\n\nvar Mark = function (_Record) {\n inherits(Mark, _Record);\n\n function Mark() {\n classCallCheck(this, Mark);\n return possibleConstructorReturn(this, (Mark.__proto__ || Object.getPrototypeOf(Mark)).apply(this, arguments));\n }\n\n createClass(Mark, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the mark.\n *\n * @return {Object}\n */\n value: function toJSON() {\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON()\n };\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Mark` with `attrs`.\n *\n * @param {Object|Mark} attrs\n * @return {Mark}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return attrs;\n }\n\n if (typeof attrs === 'string') {\n attrs = {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Mark.fromJSON(attrs);\n }\n\n throw new Error('`Mark.create` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n /**\n * Create a set of marks.\n *\n * @param {Array} elements\n * @return {Set}\n */\n\n }, {\n key: 'createSet',\n value: function createSet(elements) {\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"].isSet(elements) || Array.isArray(elements)) {\n var marks = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"](elements.map(Mark.create));\n return marks;\n }\n\n if (elements == null) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n }\n\n throw new Error('`Mark.createSet` only accepts sets, arrays or null, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable mark properties from `attrs`.\n *\n * @param {Object|String|Mark} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Mark.isMark(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs === 'string') {\n return {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Mark.createProperties` only accepts objects, strings or marks, but you passed it: ' + attrs);\n }\n /**\n * Create a `Mark` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Mark}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n type = object.type;\n\n if (typeof type !== 'string') {\n throw new Error('`Mark.fromJS` requires a `type` string.');\n }\n\n var mark = new Mark({\n type: type,\n data: new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Map\"](data)\n });\n return mark;\n }\n /**\n * Check if `any` is a set of marks.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isMarkSet',\n value: function isMarkSet(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"].isSet(any) && any.every(function (item) {\n return Mark.isMark(item);\n });\n }\n }]);\n return Mark;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$2));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$3 = {\n marks: undefined,\n text: undefined\n /**\n * Leaf.\n *\n * @type {Leaf}\n */\n\n};\n\nvar Leaf = function (_Record) {\n inherits(Leaf, _Record);\n\n function Leaf() {\n classCallCheck(this, Leaf);\n return possibleConstructorReturn(this, (Leaf.__proto__ || Object.getPrototypeOf(Leaf)).apply(this, arguments));\n }\n\n createClass(Leaf, [{\n key: 'updateMark',\n\n /**\n * Update a `mark` at leaf, replace with newMark\n *\n * @param {Mark} mark\n * @param {Mark} newMark\n * @returns {Leaf}\n */\n value: function updateMark(mark, newMark) {\n var marks = this.marks;\n if (newMark.equals(mark)) return this;\n if (!marks.has(mark)) return this;\n var newMarks = marks.withMutations(function (collection) {\n collection.remove(mark).add(newMark);\n });\n return this.set('marks', newMarks);\n }\n /**\n * Add a `mark` to the leaf.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(mark) {\n var marks = this.marks;\n return this.set('marks', marks.add(mark));\n }\n /**\n * Add a `set` of marks to the leaf.\n *\n * @param {Set} set\n * @returns {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(set$$1) {\n var marks = this.marks;\n return this.set('marks', marks.union(set$$1));\n }\n /**\n * Insert a text `string` into the leaf at `offset`.\n *\n * @param {Number} offset\n * @param {String} string\n * @return {Leaf}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(offset, string) {\n var text = this.text;\n var next = text.slice(0, offset) + string + text.slice(offset);\n return this.set('text', next);\n }\n /**\n * Remove a `mark` from the leaf.\n *\n * @param {Mark} mark\n * @returns {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(mark) {\n var marks = this.marks;\n return this.set('marks', marks.remove(mark));\n }\n /**\n * Return a JSON representation of the leaf.\n *\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = {\n object: this.object,\n text: this.text,\n marks: this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Leaf` with `attrs`.\n *\n * @param {Object|Leaf} attrs\n * @return {Leaf}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Leaf.isLeaf(attrs)) {\n return attrs;\n }\n\n if (typeof attrs === 'string') {\n attrs = {\n text: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Leaf.fromJSON(attrs);\n }\n\n throw new Error('`Leaf.create` only accepts objects, strings or leaves, but you passed it: ' + attrs);\n }\n /**\n * Create a valid List of `Leaf` from `leaves`\n *\n * @param {List} leaves\n * @return {List}\n */\n\n }, {\n key: 'createLeaves',\n value: function createLeaves(leaves) {\n if (leaves.size <= 1) return leaves;\n var invalid = false; // TODO: we can make this faster with [List] and then flatten\n\n var result = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])().withMutations(function (cache) {\n // Search from the leaves left end to find invalid node;\n leaves.findLast(function (leaf, index) {\n var firstLeaf = cache.first(); // If the first leaf of cache exist, check whether the first leaf is connectable with the current leaf\n\n if (firstLeaf) {\n // If marks equals, then the two leaves can be connected\n if (firstLeaf.marks.equals(leaf.marks)) {\n invalid = true;\n cache.set(0, firstLeaf.set('text', '' + leaf.text + firstLeaf.text));\n return;\n } // If the cached leaf is empty, drop the empty leaf with the upcoming leaf\n\n\n if (firstLeaf.text === '') {\n invalid = true;\n cache.set(0, leaf);\n return;\n } // If the current leaf is empty, drop the leaf\n\n\n if (leaf.text === '') {\n invalid = true;\n return;\n }\n }\n\n cache.unshift(leaf);\n });\n });\n if (!invalid) return leaves;\n return result;\n }\n /**\n * Split a list of leaves to two lists; if the leaves are valid leaves, the returned leaves are also valid\n * Corner Cases:\n * 1. if offset is smaller than 0, then return [List(), leaves]\n * 2. if offset is bigger than the text length, then return [leaves, List()]\n *\n * @param {List leaves\n * @return {Array>}\n */\n\n }, {\n key: 'splitLeaves',\n value: function splitLeaves(leaves, offset) {\n if (offset < 0) return [Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(), leaves];\n\n if (leaves.size === 0) {\n return [Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(), Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])()];\n }\n\n var endOffset = 0;\n var index = -1;\n var left = void 0,\n right = void 0;\n leaves.find(function (leaf) {\n index++;\n var startOffset = endOffset;\n var text = leaf.text;\n endOffset += text.length;\n if (endOffset < offset) return false;\n if (startOffset > offset) return false;\n var length = offset - startOffset;\n left = leaf.set('text', text.slice(0, length));\n right = leaf.set('text', text.slice(length));\n return true;\n });\n if (!left) return [leaves, Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])()];\n\n if (left.text === '') {\n if (index === 0) {\n return [immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(left), leaves];\n }\n\n return [leaves.take(index), leaves.skip(index)];\n }\n\n if (right.text === '') {\n if (index === leaves.size - 1) {\n return [leaves, immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(right)];\n }\n\n return [leaves.take(index + 1), leaves.skip(index + 1)];\n }\n\n return [leaves.take(index).push(left), leaves.skip(index + 1).unshift(right)];\n }\n /**\n * Create a `Leaf` list from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(attrs) || Array.isArray(attrs)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](attrs.map(Leaf.create));\n return list;\n }\n\n throw new Error('`Leaf.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n /**\n * Create a `Leaf` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Leaf}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$text = object.text,\n text = _object$text === undefined ? '' : _object$text,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? [] : _object$marks;\n var leaf = new Leaf({\n text: text,\n marks: Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])(marks.map(Mark.fromJSON))\n });\n return leaf;\n }\n /**\n * Check if `any` is a list of leaves.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafList',\n value: function isLeafList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(any) && any.every(function (item) {\n return Leaf.isLeaf(item);\n });\n }\n }]);\n return Leaf;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$3));\n/* global WeakMap, Map, Symbol */\n\n/**\n * GLOBAL: True if memoization should is enabled.\n *\n * @type {Boolean}\n */\n\n\nvar ENABLED = true;\n/**\n * The leaf node of a cache tree. Used to support variable argument length. A\n * unique object, so that native Maps will key it by reference.\n *\n * @type {Symbol}\n */\n\nvar LEAF = Symbol('LEAF');\n/**\n * The node of a cache tree for a WeakMap to store cache visited by objects\n *\n * @type {Symbol}\n */\n\nvar STORE_KEY = Symbol('STORE_KEY');\n/**\n * Values to represent a memoized undefined and null value. Allows efficient value\n * retrieval using Map.get only.\n *\n * @type {Symbol}\n */\n\nvar UNDEFINED = Symbol('undefined');\nvar NULL = Symbol('null');\n/**\n * Default value for unset keys in native Maps\n *\n * @type {Undefined}\n */\n\nvar UNSET = undefined;\n/**\n * Global Store for all cached values\n *\n * @type {WeakMap}\n */\n\nvar memoizeStore = new WeakMap();\n/**\n * Memoize all of the `properties` on a `object`.\n *\n * @param {Object} object\n * @param {Array} properties\n * @return {Record}\n */\n\nfunction memoize(object, properties) {\n var _loop = function _loop(property) {\n var original = object[property];\n\n if (!original) {\n throw new Error('Object does not have a property named \"' + property + '\".');\n }\n\n object[property] = function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n } // If memoization is disabled, call into the original method.\n\n\n if (!ENABLED) return original.apply(this, args);\n\n if (!memoizeStore.has(this)) {\n memoizeStore.set(this, {\n noArgs: {},\n hasArgs: {}\n });\n }\n\n var _memoizeStore$get = memoizeStore.get(this),\n noArgs = _memoizeStore$get.noArgs,\n hasArgs = _memoizeStore$get.hasArgs;\n\n var takesArguments = args.length !== 0;\n var cachedValue = void 0;\n var keys = void 0;\n\n if (takesArguments) {\n keys = [property].concat(args);\n cachedValue = getIn(hasArgs, keys);\n } else {\n cachedValue = noArgs[property];\n } // If we've got a result already, return it.\n\n\n if (cachedValue !== UNSET) {\n return cachedValue === UNDEFINED ? undefined : cachedValue;\n } // Otherwise calculate what it should be once and cache it.\n\n\n var value = original.apply(this, args);\n var v = value === undefined ? UNDEFINED : value;\n\n if (takesArguments) {\n setIn(hasArgs, keys, v);\n } else {\n noArgs[property] = v;\n }\n\n return value;\n };\n };\n\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = properties[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var property = _step.value;\n\n _loop(property);\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n/**\n * Get a value at a key path in a tree of Map.\n *\n * If not set, returns UNSET.\n * If the set value is undefined, returns UNDEFINED.\n *\n * @param {Map} map\n * @param {Array} keys\n * @return {Any|UNSET|UNDEFINED}\n */\n\n\nfunction getIn(map, keys) {\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = keys[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n\n if (key === undefined) {\n key = UNDEFINED;\n } else if (key == null) {\n key = NULL;\n }\n\n if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) === 'object') {\n map = map[STORE_KEY] && map[STORE_KEY].get(key);\n } else {\n map = map[key];\n }\n\n if (map === UNSET) return UNSET;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n return map[LEAF];\n}\n/**\n * Set a value at a key path in a tree of Map, creating Maps on the go.\n *\n * @param {Map} map\n * @param {Array} keys\n * @param {Any} value\n * @return {Map}\n */\n\n\nfunction setIn(map, keys, value) {\n var child = map;\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = keys[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var key = _step3.value;\n\n if (key === undefined) {\n key = UNDEFINED;\n } else if (key == null) {\n key = NULL;\n }\n\n if ((typeof key === 'undefined' ? 'undefined' : _typeof(key)) !== 'object') {\n if (!child[key]) {\n child[key] = {};\n }\n\n child = child[key];\n continue;\n }\n\n if (!child[STORE_KEY]) {\n child[STORE_KEY] = new WeakMap();\n }\n\n if (!child[STORE_KEY].has(key)) {\n var newChild = {};\n child[STORE_KEY].set(key, newChild);\n child = newChild;\n continue;\n }\n\n child = child[STORE_KEY].get(key);\n } // The whole path has been created, so set the value to the bottom most map.\n\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n\n child[LEAF] = value;\n return map;\n}\n/**\n * In DEV mode, clears the previously memoized values, globally.\n *\n * @return {Void}\n */\n\n\nfunction resetMemoization() {\n memoizeStore = new WeakMap();\n}\n/**\n * In DEV mode, enable or disable the use of memoize values, globally.\n *\n * @param {Boolean} enabled\n * @return {Void}\n */\n\n\nfunction useMemoization(enabled) {\n ENABLED = enabled;\n}\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$4 = {\n leaves: undefined,\n key: undefined\n /**\n * Text.\n *\n * @type {Text}\n */\n\n};\n\nvar Text = function (_Record) {\n inherits(Text, _Record);\n\n function Text() {\n classCallCheck(this, Text);\n return possibleConstructorReturn(this, (Text.__proto__ || Object.getPrototypeOf(Text)).apply(this, arguments));\n }\n\n createClass(Text, [{\n key: 'searchLeafAtOffset',\n\n /**\n * Find the 'first' leaf at offset; By 'first' the alorighthm prefers `endOffset === offset` than `startOffset === offset`\n * Corner Cases:\n * 1. if offset is negative, return the first leaf;\n * 2. if offset is larger than text length, the leaf is null, startOffset, endOffset and index is of the last leaf\n *\n * @param {number}\n * @returns {Object}\n * @property {number} startOffset\n * @property {number} endOffset\n * @property {number} index\n * @property {Leaf} leaf\n */\n value: function searchLeafAtOffset(offset) {\n var endOffset = 0;\n var startOffset = 0;\n var index = -1;\n var leaf = this.leaves.find(function (l) {\n index++;\n startOffset = endOffset;\n endOffset = startOffset + l.text.length;\n return endOffset >= offset;\n });\n return {\n leaf: leaf,\n endOffset: endOffset,\n index: index,\n startOffset: startOffset\n };\n }\n /**\n * Add a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'addMark',\n value: function addMark(index, length, mark) {\n var marks = immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"].of(mark);\n return this.addMarks(index, length, marks);\n }\n /**\n * Add a `set` of marks at `index` and `length`.\n * Corner Cases:\n * 1. If empty text, and if length === 0 and index === 0, will make sure the text contain an empty leaf with the given mark.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Set} set\n * @return {Text}\n */\n\n }, {\n key: 'addMarks',\n value: function addMarks(index, length, set$$1) {\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves = this.leaves;\n\n var first = _leaves.first();\n\n if (!first) {\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(Leaf.fromJSON({\n text: '',\n marks: set$$1\n })));\n }\n\n var newFirst = first.addMarks(set$$1);\n if (newFirst === first) return this;\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(newFirst));\n }\n\n if (this.text === '') return this;\n if (length === 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves2 = slicedToArray(_Leaf$splitLeaves, 2),\n before = _Leaf$splitLeaves2[0],\n bundle = _Leaf$splitLeaves2[1];\n\n var _Leaf$splitLeaves3 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves4 = slicedToArray(_Leaf$splitLeaves3, 2),\n middle = _Leaf$splitLeaves4[0],\n after = _Leaf$splitLeaves4[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.addMarks(set$$1);\n }), after);\n return this.setLeaves(leaves);\n }\n /**\n * Derive the leaves for a list of `decorations`.\n *\n * @param {List} decorations (optional)\n * @return {List}\n */\n\n }, {\n key: 'getLeaves',\n value: function getLeaves(decorations) {\n var leaves = this.leaves; // PERF: We can exit early without decorations.\n\n if (!decorations || decorations.size === 0) return leaves; // HACK: We shouldn't need this, because text nodes should never be in a\n // position of not having any leaves...\n\n if (leaves.size === 0) {\n var marks = decorations.map(function (d) {\n return d.mark;\n });\n var leaf = Leaf.create({\n marks: marks\n });\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([leaf]);\n } // HACK: this shouldn't be necessary, because the loop below should handle\n // the `0` case without failures. It may already even, not sure.\n\n\n if (this.text.length === 0) {\n var _marks = decorations.map(function (d) {\n return d.mark;\n });\n\n var _leaf = Leaf.create({\n marks: _marks\n });\n\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([_leaf]);\n }\n\n var key = this.key,\n text = this.text;\n decorations.forEach(function (dec) {\n var start = dec.start,\n end = dec.end,\n mark = dec.mark;\n var hasStart = start.key === key;\n var hasEnd = end.key === key;\n\n if (hasStart && hasEnd) {\n var index = hasStart ? start.offset : 0;\n var length = hasEnd ? end.offset - index : text.length - index;\n if (length < 1) return;\n if (index >= text.length) return;\n\n if (index !== 0 || length < text.length) {\n var _Leaf$splitLeaves5 = Leaf.splitLeaves(leaves, index),\n _Leaf$splitLeaves6 = slicedToArray(_Leaf$splitLeaves5, 2),\n before = _Leaf$splitLeaves6[0],\n bundle = _Leaf$splitLeaves6[1];\n\n var _Leaf$splitLeaves7 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves8 = slicedToArray(_Leaf$splitLeaves7, 2),\n middle = _Leaf$splitLeaves8[0],\n after = _Leaf$splitLeaves8[1];\n\n leaves = before.concat(middle.map(function (x) {\n return x.addMark(mark);\n }), after);\n return;\n }\n }\n\n leaves = leaves.map(function (x) {\n return x.addMark(mark);\n });\n });\n if (leaves === this.leaves) return leaves;\n return Leaf.createLeaves(leaves);\n }\n /**\n * Get all of the active marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarksBetweenOffsets',\n value: function getActiveMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getActiveMarks();\n }\n\n if (startOffset >= endOffset) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])(); // For empty text in a paragraph, use getActiveMarks;\n\n if (this.text === '') return this.getActiveMarks();\n var result = null;\n var leafEnd = 0;\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.intersect(leaf.marks);\n if (result && result.size === 0) return false;\n return false;\n });\n return result || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n }\n /**\n * Get all of the active marks on the text\n *\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarks',\n value: function getActiveMarks() {\n var _this2 = this;\n\n if (this.leaves.size === 0) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n var result = this.leaves.first().marks;\n if (result.size === 0) return result;\n return result.toOrderedSet().withMutations(function (x) {\n _this2.leaves.forEach(function (c) {\n x.intersect(c.marks);\n if (x.size === 0) return false;\n });\n });\n }\n /**\n * Get all of the marks on between two offsets\n * Corner Cases:\n * 1. if startOffset is equal or bigger than endOffset, then return Set();\n * 2. If no text is selected between start and end, then return Set()\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getMarksBetweenOffsets',\n value: function getMarksBetweenOffsets(startOffset, endOffset) {\n if (startOffset <= 0 && endOffset >= this.text.length) {\n return this.getMarks();\n }\n\n if (startOffset >= endOffset) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])(); // For empty text in a paragraph, use getActiveMarks;\n\n if (this.text === '') return this.getActiveMarks();\n var result = null;\n var leafEnd = 0;\n this.leaves.forEach(function (leaf) {\n var leafStart = leafEnd;\n leafEnd = leafStart + leaf.text.length;\n if (leafEnd <= startOffset) return;\n if (leafStart >= endOffset) return false;\n\n if (!result) {\n result = leaf.marks;\n return;\n }\n\n result = result.union(leaf.marks);\n });\n return result || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n }\n /**\n * Get all of the marks on the text.\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return new immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"](array);\n }\n /**\n * Get all of the marks on the text as an array\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n if (this.leaves.size === 0) return [];\n var first = this.leaves.first().marks;\n if (this.leaves.size === 1) return first.toArray();\n var result = [];\n this.leaves.forEach(function (leaf) {\n result.push(leaf.marks.toArray());\n });\n return Array.prototype.concat.apply(first.toArray(), result);\n }\n /**\n * Get the marks on the text at `index`.\n * Corner Cases:\n * 1. if no text is before the index, and index !== 0, then return Set()\n * 2. (for insert after split node or mark at range) if index === 0, and text === '', then return the leaf.marks\n * 3. if index === 0, text !== '', return Set()\n *\n *\n * @param {Number} index\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtIndex',\n value: function getMarksAtIndex(index) {\n var _searchLeafAtOffset = this.searchLeafAtOffset(index),\n leaf = _searchLeafAtOffset.leaf;\n\n if (!leaf) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n return leaf.marks;\n }\n /**\n * Insert `text` at `index`.\n *\n * @param {Numbder} offset\n * @param {String} text\n * @param {Set} marks (optional)\n * @return {Text}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(offset, text, marks) {\n if (this.text === '') {\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(Leaf.create({\n text: text,\n marks: marks\n })));\n }\n\n if (text.length === 0) return this;\n if (!marks) marks = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n\n var _searchLeafAtOffset2 = this.searchLeafAtOffset(offset),\n startOffset = _searchLeafAtOffset2.startOffset,\n leaf = _searchLeafAtOffset2.leaf,\n index = _searchLeafAtOffset2.index;\n\n var delta = offset - startOffset;\n var beforeText = leaf.text.slice(0, delta);\n var afterText = leaf.text.slice(delta);\n var leaves = this.leaves;\n\n if (leaf.marks.equals(marks)) {\n return this.set('leaves', leaves.set(index, leaf.set('text', beforeText + text + afterText)));\n }\n\n var nextLeaves = leaves.splice(index, 1, leaf.set('text', beforeText), Leaf.create({\n text: text,\n marks: marks\n }), leaf.set('text', afterText));\n return this.setLeaves(nextLeaves);\n }\n /**\n * Remove a `mark` at `index` and `length`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @return {Text}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(index, length, mark) {\n if (this.text === '' && index === 0 && length === 0) {\n var first = this.leaves.first();\n if (!first) return this;\n var newFirst = first.removeMark(mark);\n if (newFirst === first) return this;\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves9 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves10 = slicedToArray(_Leaf$splitLeaves9, 2),\n before = _Leaf$splitLeaves10[0],\n bundle = _Leaf$splitLeaves10[1];\n\n var _Leaf$splitLeaves11 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves12 = slicedToArray(_Leaf$splitLeaves11, 2),\n middle = _Leaf$splitLeaves12[0],\n after = _Leaf$splitLeaves12[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.removeMark(mark);\n }), after);\n return this.setLeaves(leaves);\n }\n /**\n * Remove text from the text node at `start` for `length`.\n *\n * @param {Number} start\n * @param {Number} length\n * @return {Text}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(start, length) {\n if (length <= 0) return this;\n if (start >= this.text.length) return this; // PERF: For simple backspace, we can operate directly on the leaf\n\n if (length === 1) {\n var _searchLeafAtOffset3 = this.searchLeafAtOffset(start + 1),\n leaf = _searchLeafAtOffset3.leaf,\n index = _searchLeafAtOffset3.index,\n startOffset = _searchLeafAtOffset3.startOffset;\n\n var offset = start - startOffset;\n\n if (leaf) {\n if (leaf.text.length === 1) {\n var _leaves2 = this.leaves.remove(index);\n\n return this.setLeaves(_leaves2);\n }\n\n var beforeText = leaf.text.slice(0, offset);\n var afterText = leaf.text.slice(offset + length);\n var text = beforeText + afterText;\n\n if (text.length > 0) {\n return this.set('leaves', this.leaves.set(index, leaf.set('text', text)));\n }\n }\n }\n\n var _Leaf$splitLeaves13 = Leaf.splitLeaves(this.leaves, start),\n _Leaf$splitLeaves14 = slicedToArray(_Leaf$splitLeaves13, 2),\n before = _Leaf$splitLeaves14[0],\n bundle = _Leaf$splitLeaves14[1];\n\n var after = Leaf.splitLeaves(bundle, length)[1];\n var leaves = Leaf.createLeaves(before.concat(after));\n\n if (leaves.size === 1) {\n var first = leaves.first();\n\n if (first.text === '') {\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(first.set('marks', this.getActiveMarks())));\n }\n }\n\n return this.set('leaves', leaves);\n }\n /**\n * Return a JSON representation of the text.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n leaves: this.getLeaves().toArray().map(function (r) {\n return r.toJSON();\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n /**\n * Update a `mark` at `index` and `length` with `properties`.\n *\n * @param {Number} index\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Text}\n */\n\n }, {\n key: 'updateMark',\n value: function updateMark(index, length, mark, properties) {\n var newMark = mark.merge(properties);\n\n if (this.text === '' && length === 0 && index === 0) {\n var _leaves3 = this.leaves;\n\n var first = _leaves3.first();\n\n if (!first) return this;\n var newFirst = first.updateMark(mark, newMark);\n if (newFirst === first) return this;\n return this.set('leaves', immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].of(newFirst));\n }\n\n if (length <= 0) return this;\n if (index >= this.text.length) return this;\n\n var _Leaf$splitLeaves15 = Leaf.splitLeaves(this.leaves, index),\n _Leaf$splitLeaves16 = slicedToArray(_Leaf$splitLeaves15, 2),\n before = _Leaf$splitLeaves16[0],\n bundle = _Leaf$splitLeaves16[1];\n\n var _Leaf$splitLeaves17 = Leaf.splitLeaves(bundle, length),\n _Leaf$splitLeaves18 = slicedToArray(_Leaf$splitLeaves17, 2),\n middle = _Leaf$splitLeaves18[0],\n after = _Leaf$splitLeaves18[1];\n\n var leaves = before.concat(middle.map(function (x) {\n return x.updateMark(mark, newMark);\n }), after);\n return this.setLeaves(leaves);\n }\n /**\n * Split this text and return two different texts\n * @param {Number} position\n * @returns {Array}\n */\n\n }, {\n key: 'splitText',\n value: function splitText(offset) {\n var splitted = Leaf.splitLeaves(this.leaves, offset);\n var one = this.set('leaves', splitted[0]);\n var two = this.set('leaves', splitted[1]).regenerateKey();\n return [one, two];\n }\n /**\n * merge this text and another text at the end\n * @param {Text} text\n * @returns {Text}\n */\n\n }, {\n key: 'mergeText',\n value: function mergeText(text) {\n var leaves = this.leaves.concat(text.leaves);\n return this.setLeaves(leaves);\n }\n /**\n * Set leaves with normalized `leaves`\n *\n * @param {List} leaves\n * @returns {Text}\n */\n\n }, {\n key: 'setLeaves',\n value: function setLeaves(leaves) {\n leaves = Leaf.createLeaves(leaves);\n\n if (leaves.size === 1) {\n var first = leaves.first();\n\n if (!first.marks || first.marks.size === 0) {\n if (first.text === '') {\n return this.set('leaves', Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([Leaf.create()]));\n }\n }\n }\n\n if (leaves.size === 0) {\n leaves = leaves.push(Leaf.create());\n }\n\n return this.set('leaves', leaves);\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Text` with `attrs`.\n *\n * @param {Object|Array|List|String|Text} attrs\n * @return {Text}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';\n\n if (Text.isText(attrs)) {\n return attrs;\n }\n\n if (typeof attrs === 'string') {\n attrs = {\n leaves: [{\n text: attrs\n }]\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n if (attrs.text) {\n var _attrs = attrs,\n text = _attrs.text,\n marks = _attrs.marks,\n key = _attrs.key;\n attrs = {\n key: key,\n leaves: [{\n text: text,\n marks: marks\n }]\n };\n }\n\n return Text.fromJSON(attrs);\n }\n\n throw new Error('`Text.create` only accepts objects, arrays, strings or texts, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Texts` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](elements.map(Text.create));\n return list;\n }\n\n throw new Error('`Text.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Text` from a JSON `object`.\n *\n * @param {Object|Text} object\n * @return {Text}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Text.isText(object)) {\n return object;\n }\n\n var _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key;\n var leaves = object.leaves;\n\n if (!leaves) {\n if (object.ranges) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.27.0, the `ranges` property of Slate objects has been renamed to `leaves`.');\n leaves = object.ranges;\n } else {\n leaves = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n }\n }\n\n if (Array.isArray(leaves)) {\n leaves = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(leaves.map(function (x) {\n return Leaf.create(x);\n }));\n } else if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(leaves)) {\n leaves = leaves.map(function (x) {\n return Leaf.create(x);\n });\n } else {\n throw new Error('leaves must be either Array or Immutable.List');\n }\n\n if (leaves.size === 0) {\n leaves = leaves.push(Leaf.create());\n }\n\n var node = new Text({\n leaves: Leaf.createLeaves(leaves),\n key: key\n });\n return node;\n }\n /**\n * Check if `any` is a list of texts.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isTextList',\n value: function isTextList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(any) && any.every(function (item) {\n return Text.isText(item);\n });\n }\n }]);\n return Text;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$4));\n/**\n * Memoize read methods.\n */\n\n\nmemoize(Text.prototype, ['getActiveMarks', 'getMarks', 'getMarksAsArray']);\n/**\n * A pseudo-model that is used for its static methods only.\n *\n * @type {Node}\n */\n\nvar Node = function () {\n function Node() {\n classCallCheck(this, Node);\n }\n\n createClass(Node, null, [{\n key: 'create',\n\n /**\n * Create a new `Node` with `attrs`.\n *\n * @param {Object|Node} attrs\n * @return {Node}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Node.isNode(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var object = attrs.object;\n\n if (!object && attrs.kind) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`.');\n object = attrs.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.create(attrs);\n\n case 'document':\n return Document.create(attrs);\n\n case 'inline':\n return Inline.create(attrs);\n\n case 'text':\n return Text.create(attrs);\n\n default:\n {\n throw new Error('`Node.create` requires a `object` string.');\n }\n }\n }\n\n throw new Error('`Node.create` only accepts objects or nodes but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Nodes` from an array.\n *\n * @param {Array} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(elements.map(Node.create));\n return list;\n }\n\n throw new Error('`Node.createList` only accepts lists or arrays, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable node properties from `attrs`.\n *\n * @param {Object|String|Node} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs) || Inline.isInline(attrs)) {\n return {\n data: attrs.data,\n type: attrs.type\n };\n }\n\n if (typeof attrs === 'string') {\n return {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n var props = {};\n if ('type' in attrs) props.type = attrs.type;\n if ('data' in attrs) props.data = Data.create(attrs.data);\n return props;\n }\n\n throw new Error('`Node.createProperties` only accepts objects, strings, blocks or inlines, but you passed it: ' + attrs);\n }\n /**\n * Create a `Node` from a JSON `value`.\n *\n * @param {Object} value\n * @return {Node}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(value) {\n var object = value.object;\n\n if (!object && value.kind) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.32.0, the `kind` property of Slate objects has been renamed to `object`.');\n object = value.kind;\n }\n\n switch (object) {\n case 'block':\n return Block.fromJSON(value);\n\n case 'document':\n return Document.fromJSON(value);\n\n case 'inline':\n return Inline.fromJSON(value);\n\n case 'text':\n return Text.fromJSON(value);\n\n default:\n {\n throw new Error('`Node.fromJSON` requires an `object` of either \\'block\\', \\'document\\', \\'inline\\' or \\'text\\', but you passed: ' + value);\n }\n }\n }\n /**\n * Check if `any` is a `Node`.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNode',\n value: function isNode(any) {\n return Block.isBlock(any) || Document.isDocument(any) || Inline.isInline(any) || Text.isText(any);\n }\n /**\n * Check if `any` is a list of nodes.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isNodeList',\n value: function isNodeList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(any) && any.every(function (item) {\n return Node.isNode(item);\n });\n }\n }]);\n return Node;\n}();\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$5 = {\n data: undefined,\n key: undefined,\n nodes: undefined,\n type: undefined\n /**\n * Block.\n *\n * @type {Block}\n */\n\n};\n\nvar Block = function (_Record) {\n inherits(Block, _Record);\n\n function Block() {\n classCallCheck(this, Block);\n return possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).apply(this, arguments));\n }\n\n createClass(Block, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the block.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n type: this.type,\n data: this.data.toJSON(),\n nodes: this.nodes.toArray().map(function (n) {\n return n.toJSON(options);\n })\n };\n\n if (options.preserveKeys) {\n object.key = this.key;\n }\n\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Block` from `attrs`.\n *\n * @param {Object|String|Block} attrs\n * @return {Block}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Block.isBlock(attrs)) {\n return attrs;\n }\n\n if (typeof attrs === 'string') {\n attrs = {\n type: attrs\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Block.fromJSON(attrs);\n }\n\n throw new Error('`Block.create` only accepts objects, strings or blocks, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Blocks` from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(attrs) || Array.isArray(attrs)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](attrs.map(Block.create));\n return list;\n }\n\n throw new Error('`Block.createList` only accepts arrays or lists, but you passed it: ' + attrs);\n }\n /**\n * Create a `Block` from a JSON `object`.\n *\n * @param {Object|Block} object\n * @return {Block}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Block.isBlock(object)) {\n return object;\n }\n\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$key = object.key,\n key = _object$key === undefined ? KeyUtils.create() : _object$key,\n _object$nodes = object.nodes,\n nodes = _object$nodes === undefined ? [] : _object$nodes,\n type = object.type;\n\n if (typeof type !== 'string') {\n throw new Error('`Block.fromJSON` requires a `type` string.');\n }\n\n var block = new Block({\n key: key,\n type: type,\n data: Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"fromJS\"])(data),\n nodes: Node.createList(nodes)\n });\n return block;\n }\n /**\n * Check if `any` is a block list.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isBlockList',\n value: function isBlockList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(any) && any.every(function (item) {\n return Block.isBlock(item);\n });\n }\n }]);\n return Block;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$5));\n/**\n * Compare paths `path` and `target` to see which is before or after.\n *\n * @param {List} path\n * @param {List} target\n * @return {Number|Null}\n */\n\n\nfunction compare(path, target) {\n var m = min(path, target);\n\n for (var i = 0; i < m; i++) {\n var pv = path.get(i);\n var tv = target.get(i); // If the path's value is ever less than the target's, it's before.\n\n if (pv < tv) return -1; // If the target's value is ever less than the path's, it's after.\n\n if (pv > tv) return 1;\n } // Paths should now be equal, otherwise something is wrong\n\n\n return path.size === target.size ? 0 : null;\n}\n/**\n * Create a path from `attrs`.\n *\n * @param {Array|List} attrs\n * @return {List}\n */\n\n\nfunction create$1(attrs) {\n if (attrs == null) {\n return null;\n }\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(attrs)) {\n return attrs;\n }\n\n if (Array.isArray(attrs)) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(attrs);\n }\n\n throw new Error('Paths can only be created from arrays or lists, but you passed: ' + attrs);\n}\n/**\n * Crop paths `a` and `b` to an equal size, defaulting to the shortest.\n *\n * @param {List} a\n * @param {List} b\n */\n\n\nfunction crop(a, b) {\n var size = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : min(a, b);\n var ca = a.slice(0, size);\n var cb = b.slice(0, size);\n return [ca, cb];\n}\n/**\n * Decrement a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\n\nfunction decrement(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n return increment(path, 0 - n, index);\n}\n/**\n * Get all ancestor paths of th given path.\n *\n * @param {List} path\n * @returns {List}\n */\n\n\nfunction getAncestors(path) {\n var ancestors = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])().withMutations(function (list) {\n for (var i = 0; i < path.size; i++) {\n list.push(path.slice(0, i));\n }\n });\n return ancestors;\n}\n/**\n * Increment a `path` by `n` at `index`, defaulting to the last index.\n *\n * @param {List} path\n * @param {Number} n\n * @param {Number} index\n */\n\n\nfunction increment(path) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var index = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : path.size - 1;\n var value = path.get(index);\n var newValue = value + n;\n var newPath = path.set(index, newValue);\n return newPath;\n}\n/**\n * Is a `path` above another `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isAbove(path, target) {\n var _crop = crop(path, target),\n _crop2 = slicedToArray(_crop, 2),\n p = _crop2[0],\n t = _crop2[1];\n\n return path.size < target.size && compare(p, t) === 0;\n}\n/**\n * Is a `path` after another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isAfter(path, target) {\n var _crop3 = crop(path, target),\n _crop4 = slicedToArray(_crop3, 2),\n p = _crop4[0],\n t = _crop4[1];\n\n return compare(p, t) === 1;\n}\n/**\n * Is a `path` before another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isBefore(path, target) {\n var _crop5 = crop(path, target),\n _crop6 = slicedToArray(_crop5, 2),\n p = _crop6[0],\n t = _crop6[1];\n\n return compare(p, t) === -1;\n}\n/**\n * Is a `path` equal to another `target` path in a document?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isEqual(path, target) {\n return path.equals(target);\n}\n/**\n * Is a `path` older than a `target` path? Meaning that it ends as an older\n * sibling of one of the indexes in the target.\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isOlder(path, target) {\n var index = path.size - 1;\n\n var _crop7 = crop(path, target, index),\n _crop8 = slicedToArray(_crop7, 2),\n p = _crop8[0],\n t = _crop8[1];\n\n var pl = path.get(index);\n var tl = target.get(index);\n return isEqual(p, t) && pl > tl;\n}\n/**\n * Is a `path` a sibling of a `target` path?\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isSibling(path, target) {\n if (path.size !== target.size) return false;\n var p = path.butLast();\n var t = target.butLast();\n return p.equals(t);\n}\n/**\n * Is a `path` younger than a `target` path? Meaning that it ends as a younger\n * sibling of one of the indexes in the target.\n *\n * @param {List} path\n * @param {List} target\n * @return {Boolean}\n */\n\n\nfunction isYounger(path, target) {\n var index = path.size - 1;\n\n var _crop9 = crop(path, target, index),\n _crop10 = slicedToArray(_crop9, 2),\n p = _crop10[0],\n t = _crop10[1];\n\n var pl = path.get(index);\n var tl = target.get(index);\n return isEqual(p, t) && pl < tl;\n}\n/**\n * Lift a `path` to refer to its parent.\n *\n * @param {List} path\n * @return {List}\n */\n\n\nfunction lift(path) {\n var parent = path.slice(0, -1);\n return parent;\n}\n/**\n * Drop a `path`, returning the path from the first child.\n *\n * @param {List} path\n * @return {List}\n */\n\n\nfunction drop(path) {\n var relative = path.slice(1);\n return relative;\n}\n/**\n * Get the maximum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\n\nfunction max(a, b) {\n var n = Math.max(a.size, b.size);\n return n;\n}\n/**\n * Get the minimum length of paths `a` and `b`.\n *\n * @param {List} path\n * @param {List} path\n * @return {Number}\n */\n\n\nfunction min(a, b) {\n var n = Math.min(a.size, b.size);\n return n;\n}\n/**\n * Get the common ancestor path of path `a` and path `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {List}\n */\n\n\nfunction relate(a, b) {\n var array = [];\n\n for (var i = 0; i < a.size && i < b.size; i++) {\n var av = a.get(i);\n var bv = b.get(i); // If the values aren't equal, they've diverged and don't share an ancestor.\n\n if (av !== bv) break; // Otherwise, the current value is still a common ancestor.\n\n array.push(av);\n }\n\n var path = create$1(array);\n return path;\n}\n/**\n * Transform a `path` by an `operation`, adjusting it to stay current.\n *\n * @param {List} path\n * @param {Operation} operation\n * @return {List}\n */\n\n\nfunction transform(path, operation) {\n var type = operation.type,\n position = operation.position,\n p = operation.path;\n\n if (type === 'add_mark' || type === 'insert_text' || type === 'remove_mark' || type === 'remove_text' || type === 'set_mark' || type === 'set_node' || type === 'set_selection' || type === 'set_value' || path.size === 0) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([path]);\n }\n\n var pIndex = p.size - 1;\n var pEqual = isEqual(p, path);\n var pYounger = isYounger(p, path);\n var pAbove = isAbove(p, path);\n\n if (type === 'insert_node') {\n if (pEqual || pYounger || pAbove) {\n path = increment(path, 1, pIndex);\n }\n }\n\n if (type === 'remove_node') {\n if (pYounger) {\n path = decrement(path, 1, pIndex);\n } else if (pEqual || pAbove) {\n path = [];\n }\n }\n\n if (type === 'merge_node') {\n if (pEqual || pYounger) {\n path = decrement(path, 1, pIndex);\n } else if (pAbove) {\n path = decrement(path, 1, pIndex);\n path = increment(path, position, pIndex + 1);\n }\n }\n\n if (type === 'split_node') {\n if (pEqual) {\n path = [path, increment(path)];\n } else if (pYounger) {\n path = increment(path, 1, pIndex);\n } else if (pAbove) {\n if (path.get(pIndex + 1) >= position) {\n path = increment(path, 1, pIndex);\n path = decrement(path, position, pIndex + 1);\n }\n }\n }\n\n if (type === 'move_node') {\n var np = operation.newPath;\n\n if (isEqual(p, np)) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([path]);\n }\n\n if (pAbove || pEqual) {\n // We are comparing something that was moved\n // The new path is unaffected unless the old path was the left-sibling of an ancestor\n if (isYounger(p, np) && p.size < np.size) {\n path = decrement(np, 1, min(np, p) - 1).concat(path.slice(p.size));\n } else {\n path = np.concat(path.slice(p.size));\n }\n } else {\n // This is equivalent logic to remove_node for path\n if (pYounger) {\n path = decrement(path, 1, pIndex);\n } // This is the equivalent logic to insert_node for newPath\n\n\n if (isYounger(np, path) || isEqual(np, path) || isAbove(np, path)) {\n path = increment(path, 1, np.size - 1);\n }\n }\n }\n\n var paths = Array.isArray(path) ? path : [path];\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(paths);\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar PathUtils = {\n compare: compare,\n create: create$1,\n crop: crop,\n decrement: decrement,\n getAncestors: getAncestors,\n increment: increment,\n isAbove: isAbove,\n isAfter: isAfter,\n isBefore: isBefore,\n isEqual: isEqual,\n isOlder: isOlder,\n isSibling: isSibling,\n isYounger: isYounger,\n lift: lift,\n drop: drop,\n max: max,\n min: min,\n relate: relate,\n transform: transform\n};\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\nvar DEFAULTS$6 = {\n key: undefined,\n offset: undefined,\n path: undefined\n /**\n * Point.\n *\n * @type {Point}\n */\n\n};\n\nvar Point = function (_Record) {\n inherits(Point, _Record);\n\n function Point() {\n classCallCheck(this, Point);\n return possibleConstructorReturn(this, (Point.__proto__ || Object.getPrototypeOf(Point)).apply(this, arguments));\n }\n\n createClass(Point, [{\n key: 'isAfterPoint',\n\n /**\n * Check whether the point is after another `point`.\n *\n * @return {Boolean}\n */\n value: function isAfterPoint(point) {\n if (this.isUnset) return false;\n var is$$1 = this.key === point.key && this.offset > point.offset || PathUtils.compare(this.path, point.path) === 1;\n return is$$1;\n }\n /**\n * Check whether the point is after a `range`.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isAfterRange',\n value: function isAfterRange(range) {\n if (this.isUnset) return false;\n var is$$1 = this.isAfterPoint(range.end);\n return is$$1;\n }\n /**\n * Check whether the point is at the end of a `range`.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtEndOfRange',\n value: function isAtEndOfRange(range) {\n if (this.isUnset) return false;\n var is$$1 = this.equals(range.end);\n return is$$1;\n }\n /**\n * Check whether the point is at the start of a `range`.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtStartOfRange',\n value: function isAtStartOfRange(range) {\n if (this.isUnset) return false;\n var is$$1 = this.equals(range.start);\n return is$$1;\n }\n /**\n * Check whether the point is before another `point`.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBeforePoint',\n value: function isBeforePoint(point) {\n if (this.isUnset) return false;\n var is$$1 = this.key === point.key && this.offset < point.offset || PathUtils.compare(this.path, point.path) === -1;\n return is$$1;\n }\n /**\n * Check whether the point is before a `range`.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBeforeRange',\n value: function isBeforeRange(range) {\n if (this.isUnset) return false;\n var is$$1 = this.isBeforePoint(range.start);\n return is$$1;\n }\n /**\n * Check whether the point is inside a `range`.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isInRange',\n value: function isInRange(range) {\n if (this.isUnset) return false;\n var is$$1 = this.equals(range.start) || this.equals(range.end) || this.isAfterPoint(range.start) && this.isBeforePoint(range.end);\n return is$$1;\n }\n /**\n * Check whether the point is at the end of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtEndOfNode',\n value: function isAtEndOfNode(node) {\n if (this.isUnset) return false;\n var last = node.getLastText();\n var is$$1 = this.key === last.key && this.offset === last.text.length;\n return is$$1;\n }\n /**\n * Check whether the point is at the start of a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isAtStartOfNode',\n value: function isAtStartOfNode(node) {\n if (this.isUnset) return false; // PERF: Do a check for a `0` offset first since it's quickest.\n\n if (this.offset !== 0) return false;\n var first = node.getFirstText();\n var is$$1 = this.key === first.key;\n return is$$1;\n }\n /**\n * Check whether the point is in a `node`.\n *\n * @param {Node} node\n * @return {Boolean}\n */\n\n }, {\n key: 'isInNode',\n value: function isInNode(node) {\n if (this.isUnset) return false;\n if (node.object === 'text' && node.key === this.key) return true;\n if (node.hasNode(this.key)) return true;\n return false;\n }\n /**\n * Move the point's offset backward `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Point}\n */\n\n }, {\n key: 'moveBackward',\n value: function moveBackward() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n if (n === 0) return this;\n if (n < 0) return this.moveForward(-n);\n var point = this.setOffset(this.offset - n);\n return point;\n }\n /**\n * Move the point's offset forward `n` characters.\n *\n * @param {Number} n (optional)\n * @return {Point}\n */\n\n }, {\n key: 'moveForward',\n value: function moveForward() {\n var n = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 1;\n if (n === 0) return this;\n if (n < 0) return this.moveBackward(-n);\n var point = this.setOffset(this.offset + n);\n return point;\n }\n /**\n * Move the point's anchor point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String|Number} path\n * @param {Number} offset\n * @return {Point}\n */\n\n }, {\n key: 'moveTo',\n value: function moveTo(path) {\n var offset = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var key = this.key;\n\n if (typeof path === 'number') {\n offset = path;\n path = this.path;\n } else if (typeof path === 'string') {\n key = path;\n path = key === this.key ? this.path : null;\n } else {\n key = path.equals(this.path) ? this.key : null;\n }\n\n var point = this.merge({\n key: key,\n path: path,\n offset: offset\n });\n return point;\n }\n /**\n * Move the point's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'moveToStartOfNode',\n value: function moveToStartOfNode(node) {\n var first = node.getFirstText();\n var point = this.moveTo(first.key, 0);\n return point;\n }\n /**\n * Move the point's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'moveToEndOfNode',\n value: function moveToEndOfNode(node) {\n var last = node.getLastText();\n var point = this.moveTo(last.key, last.text.length);\n return point;\n }\n /**\n * Normalize the point relative to a `node`, ensuring that its key and path\n * reference a text node, or that it gets unset.\n *\n * @param {Node} node\n * @return {Point}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n // If both the key and path are null, there's no reference to a node, so\n // make sure it is entirely unset.\n if (this.key == null && this.path == null) {\n return this.setOffset(null);\n }\n\n var key = this.key,\n offset = this.offset,\n path = this.path; // PERF: this function gets called a lot.\n // to avoid creating the key -> path lookup table, we attempt to look up by path first.\n\n var target = path && node.getNode(path);\n\n if (!target) {\n target = node.getNode(key);\n\n if (target) {\n // There is a misalignment of path and key\n var _point = this.merge({\n path: node.getPath(key)\n });\n\n return _point;\n }\n }\n\n if (!target) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, \"A point's `path` or `key` invalid and was reset!\");\n var text = node.getFirstText();\n if (!text) return Point.create();\n\n var _point2 = this.merge({\n key: text.key,\n offset: 0,\n path: node.getPath(text.key)\n });\n\n return _point2;\n }\n\n if (target.object !== 'text') {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'A point should not reference a non-text node!');\n\n var _text = target.getTextAtOffset(offset);\n\n var before = target.getOffset(_text.key);\n\n var _point3 = this.merge({\n offset: offset - before,\n key: _text.key,\n path: node.getPath(_text.key)\n });\n\n return _point3;\n }\n\n if (target && path && key && key !== target.key) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, \"A point's `key` did not match its `path`!\"); // TODO: if we look up by path above and it differs by key, do we want to reset it to looking up by key?\n }\n\n var point = this.merge({\n key: target.key,\n path: path == null ? node.getPath(target.key) : path,\n offset: offset == null ? 0 : Math.min(offset, target.text.length)\n });\n return point;\n }\n /**\n * Set the point's key to a new `key`.\n *\n * @param {String} key\n * @return {Point}\n */\n\n }, {\n key: 'setKey',\n value: function setKey(key) {\n if (key != null) {\n key = KeyUtils.create(key);\n }\n\n var point = this.set('key', key);\n return point;\n }\n /**\n * Set the point's offset to a new `offset`.\n *\n * @param {Number} offset\n * @return {Point}\n */\n\n }, {\n key: 'setOffset',\n value: function setOffset(offset) {\n var point = this.set('offset', offset);\n return point;\n }\n /**\n * Set the point's path to a new `path`.\n *\n * @param {List|Array} path\n * @return {Point}\n */\n\n }, {\n key: 'setPath',\n value: function setPath(path) {\n if (path != null) {\n path = PathUtils.create(path);\n }\n\n var point = this.set('path', path);\n return point;\n }\n /**\n * Return a JSON representation of the point.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n key: this.key,\n offset: this.offset,\n path: this.path && this.path.toArray()\n };\n\n if (!options.preserveKeys) {\n delete object.key;\n }\n\n return object;\n }\n /**\n * Unset the point.\n *\n * @return {Point}\n */\n\n }, {\n key: 'unset',\n value: function unset() {\n return this.merge({\n key: null,\n offset: null,\n path: null\n });\n }\n }, {\n key: 'isSet',\n\n /**\n * Check whether all properties of the point are set.\n *\n * @return {Boolean}\n */\n get: function get$$1() {\n return this.key != null && this.offset != null && this.path != null;\n }\n /**\n * Check whether any property of the point is not set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n return !this.isSet;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Point` with `attrs`.\n *\n * @param {Object|Point} attrs\n * @return {Point}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Point.isPoint(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Point.fromJSON(attrs);\n }\n\n throw new Error('`Point.create` only accepts objects or points, but you passed it: ' + attrs);\n }\n /**\n * Create a dictionary of settable point properties from `attrs`.\n *\n * @param {Object|Point} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Point.isPoint(a)) {\n return {\n key: a.key,\n offset: a.offset,\n path: a.path\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(a)) {\n var p = {};\n if ('key' in a) p.key = a.key;\n if ('offset' in a) p.offset = a.offset;\n if ('path' in a) p.path = PathUtils.create(a.path); // If only a path is set, or only a key is set, ensure that the other is\n // set to null so that it can be normalized back to the right value.\n // Otherwise we won't realize that the path and key don't match anymore.\n\n if ('path' in a && !('key' in a)) p.key = null;\n if ('key' in a && !('path' in a)) p.path = null;\n return p;\n }\n\n throw new Error('`Point.createProperties` only accepts objects or points, but you passed it: ' + a);\n }\n /**\n * Create a `Point` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Point}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$key = object.key,\n key = _object$key === undefined ? null : _object$key,\n _object$offset = object.offset,\n offset = _object$offset === undefined ? null : _object$offset,\n _object$path = object.path,\n path = _object$path === undefined ? null : _object$path;\n var point = new Point({\n key: key,\n offset: offset,\n path: PathUtils.create(path)\n });\n return point;\n }\n }]);\n return Point;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$6));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$7 = {\n anchor: undefined,\n focus: undefined,\n mark: undefined\n /**\n * Decoration.\n *\n * @type {Decoration}\n */\n\n};\n\nvar Decoration = function (_Record) {\n inherits(Decoration, _Record);\n\n function Decoration() {\n classCallCheck(this, Decoration);\n return possibleConstructorReturn(this, (Decoration.__proto__ || Object.getPrototypeOf(Decoration)).apply(this, arguments));\n }\n\n createClass(Decoration, [{\n key: 'setProperties',\n\n /**\n * Set new `properties` on the decoration.\n *\n * @param {Object|Range|Selection} properties\n * @return {Range}\n */\n value: function setProperties(properties) {\n properties = Decoration.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n mark = _properties.mark;\n var props = {};\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n if (mark) {\n props.mark = Mark.create(mark);\n }\n\n var decoration = this.merge(props);\n return decoration;\n }\n /**\n * Return a JSON representation of the decoration.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options),\n mark: this.mark.toJSON(options)\n };\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Decoration` with `attrs`.\n *\n * @param {Object|Decoration} attrs\n * @return {Decoration}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Decoration.isDecoration(attrs)) {\n return attrs;\n }\n\n if (Range.isRange(attrs)) {\n return Decoration.fromJSON(Range.createProperties(attrs));\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Decoration.fromJSON(attrs);\n }\n\n throw new Error('`Decoration.create` only accepts objects or decorations, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](elements.map(Decoration.create));\n return list;\n }\n\n throw new Error('`Decoration.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable decoration properties from `attrs`.\n *\n * @param {Object|String|Decoration} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Decoration.isDecoration(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus),\n mark: Mark.create(a.mark)\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n if ('mark' in a) p.mark = Mark.create(a.mark);\n return p;\n }\n\n throw new Error('`Decoration.createProperties` only accepts objects or decorations, but you passed it: ' + a);\n }\n /**\n * Create a `Decoration` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Decoration}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus,\n mark = object.mark;\n\n if (!mark) {\n throw new Error('Decorations must be created with a `mark`, but you passed: ' + JSON.stringify(object));\n }\n\n var decoration = new Decoration({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {}),\n mark: Mark.fromJSON(mark)\n });\n return decoration;\n }\n }]);\n return Decoration;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$7));\n/**\n * Slate-specific object types.\n *\n * @type {Object}\n */\n\n\nvar TYPES = {\n block: '@@__SLATE_BLOCK__@@',\n change: '@@__SLATE_CHANGE__@@',\n decoration: '@@__SLATE_DECORATION__@@',\n document: '@@__SLATE_DOCUMENT__@@',\n editor: '@@__SLATE_EDITOR__@@',\n inline: '@@__SLATE_INLINE__@@',\n leaf: '@@__SLATE_LEAF__@@',\n mark: '@@__SLATE_MARK__@@',\n operation: '@@__SLATE_OPERATION__@@',\n point: '@@__SLATE_POINT__@@',\n range: '@@__SLATE_RANGE__@@',\n selection: '@@__SLATE_SELECTION__@@',\n text: '@@__SLATE_TEXT__@@',\n value: '@@__SLATE_VALUE__@@'\n /**\n * Determine whether a `value` is of `type`.\n *\n * @param {string} type\n * @param {any} value\n * @return {boolean}\n */\n\n};\n\nfunction isObject(type, value) {\n return !!(value && value[TYPES[type]]);\n}\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$8 = {\n anchor: undefined,\n focus: undefined\n /**\n * Range.\n *\n * @type {Range}\n */\n\n};\n\nvar Range = function (_Record) {\n inherits(Range, _Record);\n\n function Range() {\n classCallCheck(this, Range);\n return possibleConstructorReturn(this, (Range.__proto__ || Object.getPrototypeOf(Range)).apply(this, arguments));\n }\n\n createClass(Range, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options)\n };\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Range` with `attrs`.\n *\n * @param {Object|Range} attrs\n * @return {Range}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(attrs)) {\n if (attrs.object === 'range') {\n return attrs;\n } else {\n return Range.fromJSON(Range.createProperties(attrs));\n }\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Range.fromJSON(attrs);\n }\n\n throw new Error('`Range.create` only accepts objects or ranges, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Ranges` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](elements.map(Range.create));\n return list;\n }\n\n throw new Error('`Range.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a dictionary of settable range properties from `attrs`.\n *\n * @param {Object|String|Range} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Range.isRange(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus)\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n return p;\n }\n\n throw new Error('`Range.createProperties` only accepts objects, decorations, ranges or selections, but you passed it: ' + a);\n }\n /**\n * Create a `Range` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Range}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus;\n var range = new Range({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {})\n });\n return range;\n }\n /**\n * Check if a `value` is a `Range`, or is range-like.\n *\n * @param {Any} value\n * @return {Boolean}\n */\n\n }, {\n key: 'isRange',\n value: function isRange(value) {\n return isObject('range', value) || Decoration.isDecoration(value) || Selection.isSelection(value);\n }\n }]);\n return Range;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$8));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$9 = {\n anchor: undefined,\n focus: undefined,\n isFocused: undefined,\n marks: undefined\n /**\n * Selection.\n *\n * @type {Selection}\n */\n\n};\n\nvar Selection = function (_Record) {\n inherits(Selection, _Record);\n\n function Selection() {\n classCallCheck(this, Selection);\n return possibleConstructorReturn(this, (Selection.__proto__ || Object.getPrototypeOf(Selection)).apply(this, arguments));\n }\n\n createClass(Selection, [{\n key: 'setIsFocused',\n\n /**\n * Set the `isFocused` property to a new `value`.\n *\n * @param {Boolean} value\n * @return {Selection}\n */\n value: function setIsFocused(value) {\n var selection = this.set('isFocused', value);\n return selection;\n }\n /**\n * Set the `marks` property to a new set of `marks`.\n *\n * @param {Set} marks\n * @return {Selection}\n */\n\n }, {\n key: 'setMarks',\n value: function setMarks(marks) {\n var selection = this.set('marks', marks);\n return selection;\n }\n /**\n * Set new `properties` on the selection.\n *\n * @param {Object|Range|Selection} properties\n * @return {Range}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n properties = Selection.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n props = objectWithoutProperties(_properties, ['anchor', 'focus']);\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n var selection = this.merge(props);\n return selection;\n }\n /**\n * Return a JSON representation of the selection.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options),\n isFocused: this.isFocused,\n marks: this.marks == null ? null : this.marks.toArray().map(function (m) {\n return m.toJSON();\n })\n };\n return object;\n }\n }, {\n key: 'isBlurred',\n\n /**\n * Check whether the selection is blurred.\n *\n * @return {Boolean}\n */\n get: function get$$1() {\n return !this.isFocused;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Selection` with `attrs`.\n *\n * @param {Object|Selection} attrs\n * @return {Selection}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Selection.isSelection(attrs)) {\n return attrs;\n }\n\n if (Range.isRange(attrs)) {\n return Selection.fromJSON(Range.createProperties(attrs));\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Selection.fromJSON(attrs);\n }\n\n throw new Error('`Selection.create` only accepts objects, ranges or selections, but you passed it: ' + attrs);\n }\n /**\n * Create a dictionary of settable selection properties from `attrs`.\n *\n * @param {Object|String|Selection} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Selection.isSelection(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus),\n isFocused: a.isFocused,\n marks: a.marks\n };\n }\n\n if (Range.isRange(a)) {\n return {\n anchor: Point.createProperties(a.anchor),\n focus: Point.createProperties(a.focus)\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(a)) {\n var p = {};\n if ('anchor' in a) p.anchor = Point.create(a.anchor);\n if ('focus' in a) p.focus = Point.create(a.focus);\n if ('isFocused' in a) p.isFocused = a.isFocused;\n if ('marks' in a) p.marks = a.marks == null ? null : Mark.createSet(a.marks);\n return p;\n }\n\n throw new Error('`Selection.createProperties` only accepts objects, ranges or selections, but you passed it: ' + a);\n }\n /**\n * Create a `Selection` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Selection}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var anchor = object.anchor,\n focus = object.focus,\n _object$isFocused = object.isFocused,\n isFocused = _object$isFocused === undefined ? false : _object$isFocused,\n _object$marks = object.marks,\n marks = _object$marks === undefined ? null : _object$marks;\n var selection = new Selection({\n anchor: Point.fromJSON(anchor || {}),\n focus: Point.fromJSON(focus || {}),\n isFocused: isFocused,\n marks: marks == null ? null : new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"](marks.map(Mark.fromJSON))\n });\n return selection;\n }\n }]);\n return Selection;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$9));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$10 = {\n data: undefined,\n decorations: undefined,\n document: undefined,\n selection: undefined\n /**\n * Value.\n *\n * @type {Value}\n */\n\n};\n\nvar Value = function (_Record) {\n inherits(Value, _Record);\n\n function Value() {\n classCallCheck(this, Value);\n return possibleConstructorReturn(this, (Value.__proto__ || Object.getPrototypeOf(Value)).apply(this, arguments));\n }\n\n createClass(Value, [{\n key: 'addMark',\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n value: function addMark(path, offset, length, mark) {\n var value = this;\n var _value = value,\n document = _value.document;\n document = document.addMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Value}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n var value = this;\n var _value2 = value,\n document = _value2.document;\n document = document.insertNode(path, node);\n value = value.set('document', document);\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.setPath(null);\n });\n });\n return value;\n }\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Value}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var value = this;\n var _value3 = value,\n document = _value3.document;\n var node = document.assertNode(path);\n document = document.insertText(path, offset, text, marks);\n value = value.set('document', document);\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.key === node.key && point.offset >= offset ? point.setOffset(point.offset + text.length) : point;\n });\n });\n return value;\n }\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Value}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var value = this;\n var _value4 = value,\n document = _value4.document;\n var newDocument = document.mergeNode(path);\n path = document.resolvePath(path);\n var withPath = PathUtils.decrement(path);\n var one = document.getNode(withPath);\n var two = document.getNode(path);\n value = value.set('document', newDocument);\n value = value.mapRanges(function (range) {\n if (two.object === 'text') {\n var max = one.text.length;\n\n if (range.anchor.key === two.key) {\n range = range.moveAnchorTo(one.key, max + range.anchor.offset);\n }\n\n if (range.focus.key === two.key) {\n range = range.moveFocusTo(one.key, max + range.focus.offset);\n }\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n return range;\n });\n return value;\n }\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Value}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var value = this;\n var _value5 = value,\n document = _value5.document;\n document = document.moveNode(path, newPath, newIndex);\n value = value.set('document', document);\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n return point.setPath(null);\n });\n });\n return value;\n }\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Value}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var value = this;\n var _value6 = value,\n document = _value6.document;\n document = document.removeMark(path, offset, length, mark);\n value = this.set('document', document);\n return value;\n }\n /**\n * Remove a node by `path`.\n *\n * @param {List|String} path\n * @return {Value}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n var value = this;\n var _value7 = value,\n document = _value7.document;\n var node = document.assertNode(path);\n var first = node.object === 'text' ? node : node.getFirstText() || node;\n var last = node.object === 'text' ? node : node.getLastText() || node;\n var prev = document.getPreviousText(first.key);\n var next = document.getNextText(last.key);\n document = document.removeNode(path);\n value = value.set('document', document);\n value = value.mapRanges(function (range) {\n var _range = range,\n start = _range.start,\n end = _range.end;\n\n if (node.hasNode(start.key)) {\n range = prev ? range.moveStartTo(prev.key, prev.text.length) : next ? range.moveStartTo(next.key, 0) : range.unset();\n }\n\n if (node.hasNode(end.key)) {\n range = prev ? range.moveEndTo(prev.key, prev.text.length) : next ? range.moveEndTo(next.key, 0) : range.unset();\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n return range;\n });\n return value;\n }\n /**\n * Remove `text` at `offset` in node by `path`.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Value}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var value = this;\n var _value8 = value,\n document = _value8.document;\n var node = document.assertNode(path);\n document = document.removeText(path, offset, text);\n value = value.set('document', document);\n var length = text.length;\n var start = offset;\n var end = offset + length;\n value = value.mapRanges(function (range) {\n return range.updatePoints(function (point) {\n if (point.key !== node.key) {\n return point;\n }\n\n if (point.offset >= end) {\n return point.setOffset(point.offset - length);\n }\n\n if (point.offset > start) {\n return point.setOffset(start);\n }\n\n return point;\n });\n });\n return value;\n }\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var value = this;\n var _value9 = value,\n document = _value9.document;\n document = document.setNode(path, properties);\n value = value.set('document', document);\n return value;\n }\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var value = this;\n var _value10 = value,\n document = _value10.document;\n document = document.setMark(path, offset, length, mark, properties);\n value = value.set('document', document);\n return value;\n }\n /**\n * Set `properties` on the value.\n *\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n var value = this;\n var _value11 = value,\n document = _value11.document;\n var data = properties.data,\n decorations = properties.decorations;\n var props = {};\n\n if (data) {\n props.data = data;\n }\n\n if (decorations) {\n props.decorations = decorations.map(function (d) {\n return d.isSet ? d : document.resolveDecoration(d);\n });\n }\n\n value = value.merge(props);\n return value;\n }\n /**\n * Set `properties` on the selection.\n *\n * @param {Value} value\n * @param {Operation} operation\n * @return {Value}\n */\n\n }, {\n key: 'setSelection',\n value: function setSelection(properties) {\n var value = this;\n var _value12 = value,\n document = _value12.document,\n selection = _value12.selection;\n var next = selection.setProperties(properties);\n selection = document.resolveSelection(next);\n value = value.set('selection', selection);\n return value;\n }\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Value}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var value = this;\n var _value13 = value,\n document = _value13.document;\n var newDocument = document.splitNode(path, position, properties);\n var node = document.assertNode(path);\n value = value.set('document', newDocument);\n value = value.mapRanges(function (range) {\n var next = newDocument.getNextText(node.key);\n var _range2 = range,\n start = _range2.start,\n end = _range2.end; // If the start was after the split, move it to the next node.\n\n if (node.key === start.key && position <= start.offset) {\n range = range.moveStartTo(next.key, start.offset - position);\n } // If the end was after the split, move it to the next node.\n\n\n if (node.key === end.key && position <= end.offset) {\n range = range.moveEndTo(next.key, end.offset - position);\n }\n\n range = range.updatePoints(function (point) {\n return point.setPath(null);\n });\n return range;\n });\n return value;\n }\n /**\n * Map all range objects to apply adjustments with an `iterator`.\n *\n * @param {Function} iterator\n * @return {Value}\n */\n\n }, {\n key: 'mapRanges',\n value: function mapRanges(iterator) {\n var value = this;\n var _value14 = value,\n document = _value14.document,\n selection = _value14.selection,\n decorations = _value14.decorations;\n var sel = selection.isSet ? iterator(selection) : selection;\n if (!sel) sel = selection.unset();\n if (sel !== selection) sel = document.createSelection(sel);\n value = value.set('selection', sel);\n var decs = decorations.map(function (decoration) {\n var n = decoration.isSet ? iterator(decoration) : decoration;\n if (n && n !== decoration) n = document.createDecoration(n);\n return n;\n });\n decs = decs.filter(function (decoration) {\n return !!decoration;\n });\n value = value.set('decorations', decs);\n return value;\n }\n /**\n * Return a JSON representation of the value.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n document: this.document.toJSON(options)\n };\n\n if (options.preserveData) {\n object.data = this.data.toJSON(options);\n }\n\n if (options.preserveDecorations) {\n object.decorations = this.decorations.toArray().map(function (d) {\n return d.toJSON(options);\n });\n }\n\n if (options.preserveSelection) {\n object.selection = this.selection.toJSON(options);\n }\n\n return object;\n }\n /**\n * Deprecated.\n */\n\n }, {\n key: 'change',\n value: function change() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42.0, value object are no longer schema-aware, and the `value.change()` method is no longer available. Use the `editor.change()` method on the new `Editor` controller instead.');\n }\n }, {\n key: 'startBlock',\n\n /**\n * Get the current start text node's closest block parent.\n *\n * @return {Block}\n */\n get: function get$$1() {\n return this.selection.start.key && this.document.getClosestBlock(this.selection.start.key);\n }\n /**\n * Get the current end text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'endBlock',\n get: function get$$1() {\n return this.selection.end.key && this.document.getClosestBlock(this.selection.end.key);\n }\n /**\n * Get the current anchor text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'anchorBlock',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getClosestBlock(this.selection.anchor.key);\n }\n /**\n * Get the current focus text node's closest block parent.\n *\n * @return {Block}\n */\n\n }, {\n key: 'focusBlock',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getClosestBlock(this.selection.focus.key);\n }\n /**\n * Get the current start text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'startInline',\n get: function get$$1() {\n return this.selection.start.key && this.document.getClosestInline(this.selection.start.key);\n }\n /**\n * Get the current end text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'endInline',\n get: function get$$1() {\n return this.selection.end.key && this.document.getClosestInline(this.selection.end.key);\n }\n /**\n * Get the current anchor text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'anchorInline',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getClosestInline(this.selection.anchor.key);\n }\n /**\n * Get the current focus text node's closest inline parent.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'focusInline',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getClosestInline(this.selection.focus.key);\n }\n /**\n * Get the current start text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'startText',\n get: function get$$1() {\n return this.selection.start.key && this.document.getDescendant(this.selection.start.key);\n }\n /**\n * Get the current end node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'endText',\n get: function get$$1() {\n return this.selection.end.key && this.document.getDescendant(this.selection.end.key);\n }\n /**\n * Get the current anchor node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'anchorText',\n get: function get$$1() {\n return this.selection.anchor.key && this.document.getDescendant(this.selection.anchor.key);\n }\n /**\n * Get the current focus node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'focusText',\n get: function get$$1() {\n return this.selection.focus.key && this.document.getDescendant(this.selection.focus.key);\n }\n /**\n * Get the next block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'nextBlock',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextBlock(this.selection.end.key);\n }\n /**\n * Get the previous block node.\n *\n * @return {Block}\n */\n\n }, {\n key: 'previousBlock',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousBlock(this.selection.start.key);\n }\n /**\n * Get the next inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'nextInline',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextInline(this.selection.end.key);\n }\n /**\n * Get the previous inline node.\n *\n * @return {Inline}\n */\n\n }, {\n key: 'previousInline',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousInline(this.selection.start.key);\n }\n /**\n * Get the next text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'nextText',\n get: function get$$1() {\n return this.selection.end.key && this.document.getNextText(this.selection.end.key);\n }\n /**\n * Get the previous text node.\n *\n * @return {Text}\n */\n\n }, {\n key: 'previousText',\n get: function get$$1() {\n return this.selection.start.key && this.document.getPreviousText(this.selection.start.key);\n }\n /**\n * Get the marks of the current selection.\n *\n * @return {Set}\n */\n\n }, {\n key: 'marks',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"]() : this.selection.marks || this.document.getMarksAtRange(this.selection);\n }\n /**\n * Get the active marks of the current selection.\n *\n * @return {Set}\n */\n\n }, {\n key: 'activeMarks',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"]() : this.selection.marks || this.document.getActiveMarksAtRange(this.selection);\n }\n /**\n * Get the block nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'blocks',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"]() : this.document.getLeafBlocksAtRange(this.selection);\n }\n /**\n * Get the fragment of the current selection.\n *\n * @return {Document}\n */\n\n }, {\n key: 'fragment',\n get: function get$$1() {\n return this.selection.isUnset ? Document.create() : this.document.getFragmentAtRange(this.selection);\n }\n /**\n * Get the bottom-most inline nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'inlines',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"]() : this.document.getLeafInlinesAtRange(this.selection);\n }\n /**\n * Get the text nodes in the current selection.\n *\n * @return {List}\n */\n\n }, {\n key: 'texts',\n get: function get$$1() {\n return this.selection.isUnset ? new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"]() : this.document.getTextsAtRange(this.selection);\n }\n }, {\n key: 'history',\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42.0, the `value.history` model no longer exists, and the history is stored in `value.data` instead using plugins.');\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Value` with `attrs`.\n *\n * @param {Object|Value} attrs\n * @param {Object} options\n * @return {Value}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Value.isValue(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Value.fromJSON(attrs, options);\n }\n\n throw new Error('`Value.create` only accepts objects or values, but you passed it: ' + attrs);\n }\n /**\n * Create a dictionary of settable value properties from `attrs`.\n *\n * @param {Object|Value} attrs\n * @return {Object}\n */\n\n }, {\n key: 'createProperties',\n value: function createProperties() {\n var a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Value.isValue(a)) {\n return {\n data: a.data,\n decorations: a.decorations\n };\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(a)) {\n var p = {};\n if ('data' in a) p.data = Data.create(a.data);\n if ('decorations' in a) p.decorations = Decoration.createList(a.decorations);\n return p;\n }\n\n throw new Error('`Value.createProperties` only accepts objects or values, but you passed it: ' + a);\n }\n /**\n * Create a `Value` from a JSON `object`.\n *\n * @param {Object} object\n * @param {Object} options\n * @property {Boolean} normalize\n * @property {Array} plugins\n * @return {Value}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var _object$data = object.data,\n data = _object$data === undefined ? {} : _object$data,\n _object$decorations = object.decorations,\n decorations = _object$decorations === undefined ? [] : _object$decorations,\n _object$document = object.document,\n document = _object$document === undefined ? {} : _object$document,\n _object$selection = object.selection,\n selection = _object$selection === undefined ? {} : _object$selection;\n data = Data.fromJSON(data);\n document = Document.fromJSON(document);\n selection = document.createSelection(selection);\n decorations = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(decorations.map(function (d) {\n return Decoration.fromJSON(d);\n }));\n\n if (selection.isUnset) {\n var text = document.getFirstText();\n if (text) selection = selection.moveToStartOfNode(text);\n selection = document.createSelection(selection);\n }\n\n var value = new Value({\n data: data,\n decorations: decorations,\n document: document,\n selection: selection\n });\n return value;\n }\n }]);\n return Value;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$10));\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:operation:apply');\n/**\n * Apply an `op` to a `value`.\n *\n * @param {Value} value\n * @param {Object|Operation} op\n * @return {Value} value\n */\n\nfunction applyOperation(value, op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n debug(type, op);\n\n switch (type) {\n case 'add_mark':\n {\n var _op2 = op,\n path = _op2.path,\n offset = _op2.offset,\n length = _op2.length,\n mark = _op2.mark;\n var next = value.addMark(path, offset, length, mark);\n return next;\n }\n\n case 'insert_node':\n {\n var _op3 = op,\n _path = _op3.path,\n node = _op3.node;\n\n var _next = value.insertNode(_path, node);\n\n return _next;\n }\n\n case 'insert_text':\n {\n var _op4 = op,\n _path2 = _op4.path,\n _offset = _op4.offset,\n text = _op4.text,\n marks = _op4.marks;\n\n var _next2 = value.insertText(_path2, _offset, text, marks);\n\n return _next2;\n }\n\n case 'merge_node':\n {\n var _op5 = op,\n _path3 = _op5.path;\n\n var _next3 = value.mergeNode(_path3);\n\n return _next3;\n }\n\n case 'move_node':\n {\n var _op6 = op,\n _path4 = _op6.path,\n newPath = _op6.newPath;\n\n if (PathUtils.isEqual(_path4, newPath)) {\n return value;\n }\n\n var _next4 = value.moveNode(_path4, newPath);\n\n return _next4;\n }\n\n case 'remove_mark':\n {\n var _op7 = op,\n _path5 = _op7.path,\n _offset2 = _op7.offset,\n _length = _op7.length,\n _mark = _op7.mark;\n\n var _next5 = value.removeMark(_path5, _offset2, _length, _mark);\n\n return _next5;\n }\n\n case 'remove_node':\n {\n var _op8 = op,\n _path6 = _op8.path;\n\n var _next6 = value.removeNode(_path6);\n\n return _next6;\n }\n\n case 'remove_text':\n {\n var _op9 = op,\n _path7 = _op9.path,\n _offset3 = _op9.offset,\n _text = _op9.text;\n\n var _next7 = value.removeText(_path7, _offset3, _text);\n\n return _next7;\n }\n\n case 'set_mark':\n {\n var _op10 = op,\n _path8 = _op10.path,\n _offset4 = _op10.offset,\n _length2 = _op10.length,\n _mark2 = _op10.mark,\n properties = _op10.properties;\n\n var _next8 = value.setMark(_path8, _offset4, _length2, _mark2, properties);\n\n return _next8;\n }\n\n case 'set_node':\n {\n var _op11 = op,\n _path9 = _op11.path,\n _properties = _op11.properties;\n\n var _next9 = value.setNode(_path9, _properties);\n\n return _next9;\n }\n\n case 'set_selection':\n {\n var _op12 = op,\n _properties2 = _op12.properties;\n\n var _next10 = value.setSelection(_properties2);\n\n return _next10;\n }\n\n case 'set_value':\n {\n var _op13 = op,\n _properties3 = _op13.properties;\n\n var _next11 = value.setProperties(_properties3);\n\n return _next11;\n }\n\n case 'split_node':\n {\n var _op14 = op,\n _path10 = _op14.path,\n position = _op14.position,\n _properties4 = _op14.properties;\n\n var _next12 = value.splitNode(_path10, position, _properties4);\n\n return _next12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$1 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:operation:invert');\n/**\n * Invert an `op`.\n *\n * @param {Object} op\n * @return {Object}\n */\n\nfunction invertOperation(op) {\n op = Operation.create(op);\n var _op = op,\n type = _op.type;\n debug$1(type, op);\n\n switch (type) {\n case 'insert_node':\n {\n var inverse = op.set('type', 'remove_node');\n return inverse;\n }\n\n case 'remove_node':\n {\n var _inverse = op.set('type', 'insert_node');\n\n return _inverse;\n }\n\n case 'move_node':\n {\n var _op2 = op,\n newPath = _op2.newPath,\n path = _op2.path;\n\n if (PathUtils.isEqual(newPath, path)) {\n return op;\n } // Get the true path that the moved node ended up at\n\n\n var inversePath = PathUtils.transform(path, op).first(); // Get the true path we are trying to move back to\n // We transform the right-sibling of the path\n // This will end up at the operation.path most of the time\n // But if the newPath is a left-sibling or left-ancestor-sibling, this will account for it\n\n var transformedSibling = PathUtils.transform(PathUtils.increment(path), op).first();\n\n var _inverse2 = op.set('path', inversePath).set('newPath', transformedSibling);\n\n return _inverse2;\n }\n\n case 'merge_node':\n {\n var _op3 = op,\n _path = _op3.path;\n\n var _inversePath = PathUtils.decrement(_path);\n\n var _inverse3 = op.set('type', 'split_node').set('path', _inversePath);\n\n return _inverse3;\n }\n\n case 'split_node':\n {\n var _op4 = op,\n _path2 = _op4.path;\n\n var _inversePath2 = PathUtils.increment(_path2);\n\n var _inverse4 = op.set('type', 'merge_node').set('path', _inversePath2);\n\n return _inverse4;\n }\n\n case 'set_node':\n {\n var _op5 = op,\n properties = _op5.properties,\n node = _op5.node;\n var inverseNode = node.merge(properties);\n var inverseProperties = lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(node, Object.keys(properties));\n\n var _inverse5 = op.set('node', inverseNode).set('properties', inverseProperties);\n\n return _inverse5;\n }\n\n case 'insert_text':\n {\n var _inverse6 = op.set('type', 'remove_text');\n\n return _inverse6;\n }\n\n case 'remove_text':\n {\n var _inverse7 = op.set('type', 'insert_text');\n\n return _inverse7;\n }\n\n case 'add_mark':\n {\n var _inverse8 = op.set('type', 'remove_mark');\n\n return _inverse8;\n }\n\n case 'remove_mark':\n {\n var _inverse9 = op.set('type', 'add_mark');\n\n return _inverse9;\n }\n\n case 'set_mark':\n {\n var _op6 = op,\n _properties = _op6.properties,\n mark = _op6.mark;\n var inverseMark = mark.merge(_properties);\n\n var _inverseProperties = lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(mark, Object.keys(_properties));\n\n var _inverse10 = op.set('mark', inverseMark).set('properties', _inverseProperties);\n\n return _inverse10;\n }\n\n case 'set_selection':\n {\n var _op7 = op,\n _properties2 = _op7.properties,\n selection = _op7.selection;\n var inverseSelection = selection.merge(_properties2);\n var inverseProps = lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(selection, Object.keys(_properties2));\n\n var _inverse11 = op.set('selection', inverseSelection).set('properties', inverseProps);\n\n return _inverse11;\n }\n\n case 'set_value':\n {\n var _op8 = op,\n _properties3 = _op8.properties,\n value = _op8.value;\n var inverseValue = value.merge(_properties3);\n\n var _inverseProperties2 = lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(value, Object.keys(_properties3));\n\n var _inverse12 = op.set('value', inverseValue).set('properties', _inverseProperties2);\n\n return _inverse12;\n }\n\n default:\n {\n throw new Error('Unknown operation type: \"' + type + '\".');\n }\n }\n}\n/**\n * Operation attributes.\n *\n * @type {Array}\n */\n\n\nvar OPERATION_ATTRIBUTES = {\n add_mark: ['value', 'path', 'offset', 'length', 'mark', 'data'],\n insert_node: ['value', 'path', 'node', 'data'],\n insert_text: ['value', 'path', 'offset', 'text', 'marks', 'data'],\n merge_node: ['value', 'path', 'position', 'properties', 'target', 'data'],\n move_node: ['value', 'path', 'newPath', 'data'],\n remove_mark: ['value', 'path', 'offset', 'length', 'mark', 'data'],\n remove_node: ['value', 'path', 'node', 'data'],\n remove_text: ['value', 'path', 'offset', 'text', 'marks', 'data'],\n set_mark: ['value', 'path', 'offset', 'length', 'mark', 'properties', 'data'],\n set_node: ['value', 'path', 'node', 'properties', 'data'],\n set_selection: ['value', 'selection', 'properties', 'data'],\n set_value: ['value', 'properties', 'data'],\n split_node: ['value', 'path', 'position', 'properties', 'target', 'data']\n /**\n * Default properties.\n *\n * @type {Object}\n */\n\n};\nvar DEFAULTS$11 = {\n length: undefined,\n mark: undefined,\n marks: undefined,\n newPath: undefined,\n node: undefined,\n offset: undefined,\n path: undefined,\n position: undefined,\n properties: undefined,\n selection: undefined,\n target: undefined,\n text: undefined,\n type: undefined,\n value: undefined,\n data: undefined\n /**\n * Operation.\n *\n * @type {Operation}\n */\n\n};\n\nvar Operation = function (_Record) {\n inherits(Operation, _Record);\n\n function Operation() {\n classCallCheck(this, Operation);\n return possibleConstructorReturn(this, (Operation.__proto__ || Object.getPrototypeOf(Operation)).apply(this, arguments));\n }\n\n createClass(Operation, [{\n key: 'apply',\n\n /**\n * Apply the operation to a `value`.\n *\n * @param {Value} value\n * @return {Value}\n */\n value: function apply(value) {\n var next = applyOperation(value, this);\n return next;\n }\n /**\n * Invert the operation.\n *\n * @return {Operation}\n */\n\n }, {\n key: 'invert',\n value: function invert() {\n var inverted = invertOperation(this);\n return inverted;\n }\n /**\n * Return a JSON representation of the operation.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var object = this.object,\n type = this.type;\n var json = {\n object: object,\n type: type\n };\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = ATTRIBUTES[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var key = _step.value;\n var value = this[key]; // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n\n if (key === 'document') continue;\n if (key === 'selection') continue;\n if (key === 'value') continue;\n if (key === 'node' && type !== 'insert_node') continue;\n\n if (key === 'mark' || key === 'marks' || key === 'node' || key === 'path' || key === 'newPath') {\n value = value.toJSON();\n }\n\n if (key === 'properties' && type === 'merge_node') {\n var v = {};\n if ('data' in value) v.data = value.data.toJS();\n if ('type' in value) v.type = value.type;\n value = v;\n }\n\n if (key === 'properties' && type === 'set_mark') {\n var _v = {};\n if ('data' in value) _v.data = value.data.toJS();\n if ('type' in value) _v.type = value.type;\n value = _v;\n }\n\n if (key === 'properties' && type === 'set_node') {\n var _v2 = {};\n if ('data' in value) _v2.data = value.data.toJS();\n if ('type' in value) _v2.type = value.type;\n value = _v2;\n }\n\n if (key === 'properties' && type === 'set_selection') {\n var _v3 = {};\n if ('anchor' in value) _v3.anchor = value.anchor.toJSON();\n if ('focus' in value) _v3.focus = value.focus.toJSON();\n if ('isFocused' in value) _v3.isFocused = value.isFocused;\n if ('marks' in value) _v3.marks = value.marks && value.marks.toJSON();\n value = _v3;\n }\n\n if (key === 'properties' && type === 'set_value') {\n var _v4 = {};\n if ('data' in value) _v4.data = value.data.toJS();\n if ('decorations' in value) _v4.decorations = value.decorations.toJS();\n value = _v4;\n }\n\n if (key === 'properties' && type === 'split_node') {\n var _v5 = {};\n if ('data' in value) _v5.data = value.data.toJS();\n if ('type' in value) _v5.type = value.type;\n value = _v5;\n }\n\n if (key === 'data') {\n value = value.toJSON();\n }\n\n json[key] = value;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return json;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Operation` with `attrs`.\n *\n * @param {Object|Array|List|String|Operation} attrs\n * @return {Operation}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Operation.isOperation(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Operation.fromJSON(attrs);\n }\n\n throw new Error('`Operation.create` only accepts objects or operations, but you passed it: ' + attrs);\n }\n /**\n * Create a list of `Operations` from `elements`.\n *\n * @param {Array|List} elements\n * @return {List}\n */\n\n }, {\n key: 'createList',\n value: function createList() {\n var elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(elements) || Array.isArray(elements)) {\n var list = new immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"](elements.map(Operation.create));\n return list;\n }\n\n throw new Error('`Operation.createList` only accepts arrays or lists, but you passed it: ' + elements);\n }\n /**\n * Create a `Operation` from a JSON `object`.\n *\n * @param {Object|Operation} object\n * @return {Operation}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n if (Operation.isOperation(object)) {\n return object;\n }\n\n var type = object.type;\n var ATTRIBUTES = OPERATION_ATTRIBUTES[type];\n var attrs = {\n type: type\n };\n\n if (!ATTRIBUTES) {\n throw new Error('`Operation.fromJSON` was passed an unrecognized operation type: \"' + type + '\"');\n }\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = ATTRIBUTES[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var key = _step2.value;\n var v = object[key]; // Default `data` to an empty object.\n\n if (key === 'data' && v === undefined) {\n v = {};\n }\n\n if (v === undefined) {\n // Skip keys for objects that should not be serialized, and are only used\n // for providing the local-only invert behavior for the history stack.\n if (key === 'document') continue;\n if (key === 'selection') continue;\n if (key === 'value') continue;\n if (key === 'node' && type !== 'insert_node') continue;\n throw new Error('`Operation.fromJSON` was passed a \"' + type + '\" operation without the required \"' + key + '\" attribute.');\n }\n\n if (key === 'path' || key === 'newPath') {\n v = PathUtils.create(v);\n }\n\n if (key === 'mark') {\n v = Mark.create(v);\n }\n\n if (key === 'marks' && v != null) {\n v = Mark.createSet(v);\n }\n\n if (key === 'node') {\n v = Node.create(v);\n }\n\n if (key === 'selection') {\n v = Selection.create(v);\n }\n\n if (key === 'value') {\n v = Value.create(v);\n }\n\n if (key === 'properties' && type === 'merge_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_mark') {\n v = Mark.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_selection') {\n v = Selection.createProperties(v);\n }\n\n if (key === 'properties' && type === 'set_value') {\n v = Value.createProperties(v);\n }\n\n if (key === 'properties' && type === 'split_node') {\n v = Node.createProperties(v);\n }\n\n if (key === 'data') {\n v = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Map\"])(v);\n }\n\n attrs[key] = v;\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var node = new Operation(attrs);\n return node;\n }\n /**\n * Check if `any` is a list of operations.\n *\n * @param {Any} any\n * @return {Boolean}\n */\n\n }, {\n key: 'isOperationList',\n value: function isOperationList(any) {\n return immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(any) && any.every(function (item) {\n return Operation.isOperation(item);\n });\n }\n }]);\n return Operation;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$11));\n/**\n * Default properties.\n *\n * @type {Object}\n */\n\n\nvar DEFAULTS$12 = {\n operations: undefined,\n value: undefined\n /**\n * Change.\n *\n * @type {Change}\n */\n\n};\n\nvar Change = function (_Record) {\n inherits(Change, _Record);\n\n function Change() {\n classCallCheck(this, Change);\n return possibleConstructorReturn(this, (Change.__proto__ || Object.getPrototypeOf(Change)).apply(this, arguments));\n }\n\n createClass(Change, [{\n key: 'toJSON',\n\n /**\n * Return a JSON representation of the change.\n *\n * @param {Object} options\n * @return {Object}\n */\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n value: this.value.toJSON(options),\n operations: this.operations.toArray().map(function (o) {\n return o.toJSON(options);\n })\n };\n return object;\n }\n }], [{\n key: 'create',\n\n /**\n * Create a new `Change` with `attrs`.\n *\n * @param {Object|Change} attrs\n * @return {Change}\n */\n value: function create() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (Change.isChange(attrs)) {\n return attrs;\n }\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(attrs)) {\n return Change.fromJSON(attrs);\n }\n\n throw new Error('`Change.create` only accepts objects or changes, but you passed it: ' + attrs);\n }\n /**\n * Create a `Change` from a JSON `object`.\n *\n * @param {Object} object\n * @return {Change}\n */\n\n }, {\n key: 'fromJSON',\n value: function fromJSON(object) {\n var value = object.value,\n _object$operations = object.operations,\n operations = _object$operations === undefined ? [] : _object$operations;\n var change = new Change({\n value: Value.create(value),\n operations: Operation.createList(operations)\n });\n return change;\n }\n }]);\n return Change;\n}(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Record\"])(DEFAULTS$12));\n/**\n * A plugin that adds a set of commands to the editor.\n *\n * @param {Object} commands\n * @return {Object}\n */\n\n\nfunction CommandsPlugin() {\n var commands = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n /**\n * On command, if it exists in our list of commands, call it.\n *\n * @param {Object} command\n * @param {Editor} editor\n * @param {Function} next\n */\n\n function onCommand(command, editor, next) {\n var type = command.type,\n args = command.args;\n var fn = commands[type];\n if (!fn) return next();\n editor.command.apply(editor, [fn].concat(toConsumableArray(args)));\n }\n /**\n * On construct, register all the commands.\n *\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onConstruct(editor, next) {\n for (var command in commands) {\n editor.registerCommand(command);\n }\n\n return next();\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onCommand: onCommand,\n onConstruct: onConstruct\n };\n}\n/**\n * Surrogate pair start and end points.\n *\n * @type {Number}\n */\n\n\nvar SURROGATE_START = 0xd800;\nvar SURROGATE_END = 0xdfff;\n/**\n * A regex to match space characters.\n *\n * @type {RegExp}\n */\n\nvar SPACE = /\\s/;\n/**\n * A regex to match chameleon characters, that count as word characters as long\n * as they are inside of a word.\n *\n * @type {RegExp}\n */\n\nvar CHAMELEON = /['\\u2018\\u2019]/;\n/**\n * A regex that matches punctuation.\n *\n * @type {RegExp}\n */\n\nvar PUNCTUATION = /[\\u0021-\\u0023\\u0025-\\u002A\\u002C-\\u002F\\u003A\\u003B\\u003F\\u0040\\u005B-\\u005D\\u005F\\u007B\\u007D\\u00A1\\u00A7\\u00AB\\u00B6\\u00B7\\u00BB\\u00BF\\u037E\\u0387\\u055A-\\u055F\\u0589\\u058A\\u05BE\\u05C0\\u05C3\\u05C6\\u05F3\\u05F4\\u0609\\u060A\\u060C\\u060D\\u061B\\u061E\\u061F\\u066A-\\u066D\\u06D4\\u0700-\\u070D\\u07F7-\\u07F9\\u0830-\\u083E\\u085E\\u0964\\u0965\\u0970\\u0AF0\\u0DF4\\u0E4F\\u0E5A\\u0E5B\\u0F04-\\u0F12\\u0F14\\u0F3A-\\u0F3D\\u0F85\\u0FD0-\\u0FD4\\u0FD9\\u0FDA\\u104A-\\u104F\\u10FB\\u1360-\\u1368\\u1400\\u166D\\u166E\\u169B\\u169C\\u16EB-\\u16ED\\u1735\\u1736\\u17D4-\\u17D6\\u17D8-\\u17DA\\u1800-\\u180A\\u1944\\u1945\\u1A1E\\u1A1F\\u1AA0-\\u1AA6\\u1AA8-\\u1AAD\\u1B5A-\\u1B60\\u1BFC-\\u1BFF\\u1C3B-\\u1C3F\\u1C7E\\u1C7F\\u1CC0-\\u1CC7\\u1CD3\\u2010-\\u2027\\u2030-\\u2043\\u2045-\\u2051\\u2053-\\u205E\\u207D\\u207E\\u208D\\u208E\\u2329\\u232A\\u2768-\\u2775\\u27C5\\u27C6\\u27E6-\\u27EF\\u2983-\\u2998\\u29D8-\\u29DB\\u29FC\\u29FD\\u2CF9-\\u2CFC\\u2CFE\\u2CFF\\u2D70\\u2E00-\\u2E2E\\u2E30-\\u2E3B\\u3001-\\u3003\\u3008-\\u3011\\u3014-\\u301F\\u3030\\u303D\\u30A0\\u30FB\\uA4FE\\uA4FF\\uA60D-\\uA60F\\uA673\\uA67E\\uA6F2-\\uA6F7\\uA874-\\uA877\\uA8CE\\uA8CF\\uA8F8-\\uA8FA\\uA92E\\uA92F\\uA95F\\uA9C1-\\uA9CD\\uA9DE\\uA9DF\\uAA5C-\\uAA5F\\uAADE\\uAADF\\uAAF0\\uAAF1\\uABEB\\uFD3E\\uFD3F\\uFE10-\\uFE19\\uFE30-\\uFE52\\uFE54-\\uFE61\\uFE63\\uFE68\\uFE6A\\uFE6B\\uFF01-\\uFF03\\uFF05-\\uFF0A\\uFF0C-\\uFF0F\\uFF1A\\uFF1B\\uFF1F\\uFF20\\uFF3B-\\uFF3D\\uFF3F\\uFF5B\\uFF5D\\uFF5F-\\uFF65]/;\n/**\n * Is a character `code` in a surrogate character.\n *\n * @param {Number} code\n * @return {Boolean}\n */\n\nfunction isSurrogate(code) {\n return SURROGATE_START <= code && code <= SURROGATE_END;\n}\n/**\n * Is a character a word character? Needs the `remaining` characters too.\n *\n * @param {String} char\n * @param {String|Void} remaining\n * @return {Boolean}\n */\n\n\nfunction isWord(_char, remaining) {\n if (SPACE.test(_char)) return false; // If it's a chameleon character, recurse to see if the next one is or not.\n\n if (CHAMELEON.test(_char)) {\n var next = remaining.charAt(0);\n var length = getCharLength(next);\n next = remaining.slice(0, length);\n var rest = remaining.slice(length);\n if (isWord(next, rest)) return true;\n }\n\n if (PUNCTUATION.test(_char)) return false;\n return true;\n}\n/**\n * Get the length of a `character`.\n *\n * @param {String} char\n * @return {Number}\n */\n\n\nfunction getCharLength(_char2) {\n return isSurrogate(_char2.charCodeAt(0)) ? 2 : 1;\n}\n/**\n * Get the offset to the end of the first character in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\n\nfunction getCharOffset(text) {\n var _char3 = text.charAt(0);\n\n return getCharLength(_char3);\n}\n/**\n * Get the offset to the end of the character before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getCharOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = Object(esrever__WEBPACK_IMPORTED_MODULE_6__[\"reverse\"])(text);\n return getCharOffset(text);\n}\n/**\n * Get the offset to the end of the character after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getCharOffsetForward(text, offset) {\n text = text.slice(offset);\n return getCharOffset(text);\n}\n/**\n * Get the offset to the end of the first word in `text`.\n *\n * @param {String} text\n * @return {Number}\n */\n\n\nfunction getWordOffset(text) {\n var length = 0;\n var i = 0;\n var started = false;\n\n var _char4 = void 0;\n\n while (_char4 = text.charAt(i)) {\n var l = getCharLength(_char4);\n _char4 = text.slice(i, i + l);\n var rest = text.slice(i + l);\n\n if (isWord(_char4, rest)) {\n started = true;\n length += l;\n } else if (!started) {\n length += l;\n } else {\n break;\n }\n\n i += l;\n }\n\n return length;\n}\n/**\n * Get the offset to the end of the word before an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getWordOffsetBackward(text, offset) {\n text = text.slice(0, offset);\n text = Object(esrever__WEBPACK_IMPORTED_MODULE_6__[\"reverse\"])(text);\n var o = getWordOffset(text);\n return o;\n}\n/**\n * Get the offset to the end of the word after an `offset` in `text`.\n *\n * @param {String} text\n * @param {Number} offset\n * @return {Number}\n */\n\n\nfunction getWordOffsetForward(text, offset) {\n text = text.slice(offset);\n var o = getWordOffset(text);\n return o;\n}\n/**\n * Export.\n *\n * @type {Object}\n */\n\n\nvar TextUtils = {\n getCharLength: getCharLength,\n getCharOffset: getCharOffset,\n getCharOffsetBackward: getCharOffsetBackward,\n getCharOffsetForward: getCharOffsetForward,\n getWordOffset: getWordOffset,\n getWordOffsetBackward: getWordOffsetBackward,\n getWordOffsetForward: getWordOffsetForward,\n isSurrogate: isSurrogate,\n isWord: isWord\n};\n/**\n * Ensure that an expanded selection is deleted first, and return the updated\n * range to account for the deleted part.\n *\n * @param {Editor}\n */\n\nfunction deleteExpandedAtRange(editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n }\n\n var value = editor.value;\n var document = value.document;\n var _range = range,\n start = _range.start,\n end = _range.end;\n\n if (document.hasDescendant(start.key)) {\n range = range.moveToStart();\n } else {\n range = range.moveTo(end.key, 0).normalize(document);\n }\n\n return range;\n}\n/**\n * Commands.\n *\n * @type {Object}\n */\n\n\nvar Commands$1 = {};\n/**\n * Add a new `mark` to the characters at `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Mixed} mark\n */\n\nCommands$1.addMarkAtRange = function (editor, range, mark) {\n if (range.isCollapsed) return;\n var value = editor.value;\n var document = value.document;\n var start = range.start,\n end = range.end;\n var texts = document.getTextsAtRange(range);\n editor.withoutNormalizing(function () {\n texts.forEach(function (node) {\n var key = node.key;\n var index = 0;\n var length = node.text.length;\n if (key === start.key) index = start.offset;\n if (key === end.key) length = end.offset;\n if (key === start.key && key === end.key) length = end.offset - start.offset;\n editor.addMarkByKey(key, index, length, mark);\n });\n });\n};\n/**\n * Add a list of `marks` to the characters at `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Array} mark\n */\n\n\nCommands$1.addMarksAtRange = function (editor, range, marks) {\n marks.forEach(function (mark) {\n return editor.addMarkAtRange(range, mark);\n });\n};\n/**\n * Delete everything in a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteAtRange = function (editor, range) {\n // Snapshot the selection, which creates an extra undo save point, so that\n // when you undo a delete, the expanded selection will be retained.\n editor.snapshotSelection();\n var value = editor.value;\n var start = range.start,\n end = range.end;\n var startKey = start.key;\n var startOffset = start.offset;\n var endKey = end.key;\n var endOffset = end.offset;\n var document = value.document;\n var isStartVoid = document.hasVoidParent(startKey, editor);\n var isEndVoid = document.hasVoidParent(endKey, editor);\n var startBlock = document.getClosestBlock(startKey);\n var endBlock = document.getClosestBlock(endKey); // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n\n var isHanging = startOffset === 0 && endOffset === 0 && isStartVoid === false && startKey === startBlock.getFirstText().key && endKey === endBlock.getFirstText().key; // If it's a hanging selection, nudge it back to end in the previous text.\n\n if (isHanging && isEndVoid) {\n var prevText = document.getPreviousText(endKey);\n endKey = prevText.key;\n endOffset = prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey, editor);\n }\n\n editor.withoutNormalizing(function () {\n // If the start node is inside a void node, remove the void node and update\n // the starting point to be right after it, continuously until the start point\n // is not a void, or until the entire range is handled.\n while (isStartVoid) {\n var startVoid = document.getClosestVoid(startKey, editor);\n var nextText = document.getNextText(startKey);\n editor.removeNodeByKey(startVoid.key); // If the start and end keys are the same, we're done.\n\n if (startKey === endKey) return; // If there is no next text node, we're done.\n\n if (!nextText) return; // Continue...\n\n document = editor.value.document;\n startKey = nextText.key;\n startOffset = 0;\n isStartVoid = document.hasVoidParent(startKey, editor);\n } // If the end node is inside a void node, do the same thing but backwards. But\n // we don't need any aborting checks because if we've gotten this far there\n // must be a non-void node that will exit the loop.\n\n\n while (isEndVoid) {\n var endVoid = document.getClosestVoid(endKey, editor);\n\n var _prevText = document.getPreviousText(endKey);\n\n editor.removeNodeByKey(endVoid.key); // Continue...\n\n document = editor.value.document;\n endKey = _prevText.key;\n endOffset = _prevText.text.length;\n isEndVoid = document.hasVoidParent(endKey, editor);\n } // If the start and end key are the same, and it was a hanging selection, we\n // can just remove the entire block.\n\n\n if (startKey === endKey && isHanging) {\n editor.removeNodeByKey(startBlock.key);\n return;\n } else if (startKey === endKey) {\n // Otherwise, if it wasn't hanging, we're inside a single text node, so we can\n // simply remove the text in the range.\n var index = startOffset;\n var length = endOffset - startOffset;\n editor.removeTextByKey(startKey, index, length);\n return;\n } else {\n // Otherwise, we need to recursively remove text and nodes inside the start\n // block after the start offset and inside the end block before the end\n // offset. Then remove any blocks that are in between the start and end\n // blocks. Then finally merge the start and end nodes.\n startBlock = document.getClosestBlock(startKey);\n endBlock = document.getClosestBlock(endKey);\n var startText = document.getNode(startKey);\n var endText = document.getNode(endKey);\n var startLength = startText.text.length - startOffset;\n var endLength = endOffset;\n var ancestor = document.getCommonAncestor(startKey, endKey);\n var startChild = ancestor.getFurthestAncestor(startKey);\n var endChild = ancestor.getFurthestAncestor(endKey);\n var startParent = document.getParent(startBlock.key);\n var startParentIndex = startParent.nodes.indexOf(startBlock);\n var endParentIndex = startParent.nodes.indexOf(endBlock);\n var child = void 0; // Iterate through all of the nodes in the tree after the start text node\n // but inside the end child, and remove them.\n\n child = startText;\n\n while (child.key !== startChild.key) {\n var parent = document.getParent(child.key);\n\n var _index = parent.nodes.indexOf(child);\n\n var afters = parent.nodes.slice(_index + 1);\n afters.reverse().forEach(function (node) {\n editor.removeNodeByKey(node.key);\n });\n child = parent;\n } // Remove all of the middle children.\n\n\n var startChildIndex = ancestor.nodes.indexOf(startChild);\n var endChildIndex = ancestor.nodes.indexOf(endChild);\n var middles = ancestor.nodes.slice(startChildIndex + 1, endChildIndex);\n middles.reverse().forEach(function (node) {\n editor.removeNodeByKey(node.key);\n }); // Remove the nodes before the end text node in the tree.\n\n child = endText;\n\n while (child.key !== endChild.key) {\n var _parent = document.getParent(child.key);\n\n var _index2 = _parent.nodes.indexOf(child);\n\n var befores = _parent.nodes.slice(0, _index2);\n\n befores.reverse().forEach(function (node) {\n editor.removeNodeByKey(node.key);\n });\n child = _parent;\n } // Remove any overlapping text content from the leaf text nodes.\n\n\n if (startLength !== 0) {\n editor.removeTextByKey(startKey, startOffset, startLength);\n }\n\n if (endLength !== 0) {\n editor.removeTextByKey(endKey, 0, endOffset);\n } // If the start and end blocks aren't the same, move and merge the end block\n // into the start block.\n\n\n if (startBlock.key !== endBlock.key) {\n document = editor.value.document;\n var lonely = document.getFurthestOnlyChildAncestor(endBlock.key); // Move the end block to be right after the start block.\n\n if (endParentIndex !== startParentIndex + 1) {\n editor.moveNodeByKey(endBlock.key, startParent.key, startParentIndex + 1);\n } // If the selection is hanging, just remove the start block, otherwise\n // merge the end block into it.\n\n\n if (isHanging) {\n editor.removeNodeByKey(startBlock.key);\n } else {\n editor.mergeNodeByKey(endBlock.key);\n } // If nested empty blocks are left over above the end block, remove them.\n\n\n if (lonely) {\n editor.removeNodeByKey(lonely.key);\n }\n }\n }\n });\n};\n/**\n * Delete backward `n` characters at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Number} n (optional)\n */\n\n\nCommands$1.deleteBackwardAtRange = function (editor, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (n === 0) return;\n var value = editor.value;\n var document = value.document;\n var _range2 = range,\n start = _range2.start,\n focus = _range2.focus; // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var voidParent = document.getClosestVoid(start.key, editor); // If there is a void parent, delete it.\n\n if (voidParent) {\n editor.removeNodeByKey(voidParent.key);\n return;\n } // If the range is at the start of the document, abort.\n\n\n if (start.isAtStartOfNode(document)) {\n return;\n }\n\n var block = document.getClosestBlock(start.key); // PERF: If the closest block is empty, remove it. This is just a shortcut,\n // since merging it would result in the same outcome.\n\n if (document.nodes.size !== 1 && block && block.text === '' && block.nodes.size === 1) {\n editor.removeNodeByKey(block.key);\n return;\n } // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n\n\n var text = document.getDescendant(start.key);\n\n if (start.isAtStartOfNode(text)) {\n var prev = document.getPreviousText(text.key);\n var inline = document.getClosestInline(text.key); // If the range is at the start of the inline node, and previous text node\n // is empty, take the text node before that, or \"prevBlock\" would be the\n // same node as \"block\"\n\n if (inline && prev.text === '') {\n prev = document.getPreviousText(prev.key);\n }\n\n var prevBlock = document.getClosestBlock(prev.key);\n var prevVoid = document.getClosestVoid(prev.key, editor); // If the previous text node has a void parent, remove it.\n\n if (prevVoid) {\n editor.removeNodeByKey(prevVoid.key);\n return;\n } // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n\n\n if (n === 1 && prevBlock !== block) {\n range = range.moveAnchorTo(prev.key, prev.text.length);\n editor.deleteAtRange(range);\n return;\n }\n } // If the focus offset is farther than the number of characters to delete,\n // just remove the characters backwards inside the current node.\n\n\n if (n < focus.offset) {\n range = range.moveFocusBackward(n);\n editor.deleteAtRange(range);\n return;\n } // Otherwise, we need to see how many nodes backwards to go.\n\n\n var node = text;\n var offset = 0;\n var traversed = focus.offset;\n\n while (n > traversed) {\n node = document.getPreviousText(node.key);\n var next = traversed + node.text.length;\n\n if (n <= next) {\n offset = next - n;\n break;\n } else {\n traversed = next;\n }\n }\n\n range = range.moveAnchorTo(node.key, offset);\n editor.deleteAtRange(range);\n};\n/**\n * Delete backward until the character boundary at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteCharBackwardAtRange = function (editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var start = range.start;\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n var n = TextUtils.getCharOffsetBackward(text, o);\n editor.deleteBackwardAtRange(range, n);\n};\n/**\n * Delete forward until the character boundary at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteCharForwardAtRange = function (editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var start = range.start;\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n var n = TextUtils.getCharOffsetForward(text, o);\n editor.deleteForwardAtRange(range, n);\n};\n/**\n * Delete forward `n` characters at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Number} n (optional)\n */\n\n\nCommands$1.deleteForwardAtRange = function (editor, range) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (n === 0) return;\n var value = editor.value;\n var document = value.document;\n var _range3 = range,\n start = _range3.start,\n focus = _range3.focus; // If the range is expanded, perform a regular delete instead.\n\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var voidParent = document.getClosestVoid(start.key, editor); // If the node has a void parent, delete it.\n\n if (voidParent) {\n editor.removeNodeByKey(voidParent.key);\n return;\n }\n\n var block = document.getClosestBlock(start.key); // If the closest is not void, but empty, remove it\n\n if (block && !editor.isVoid(block) && block.text === '' && document.nodes.size !== 1) {\n var nextBlock = document.getNextBlock(block.key);\n editor.removeNodeByKey(block.key);\n\n if (nextBlock && nextBlock.key) {\n editor.moveToStartOfNode(nextBlock);\n }\n\n return;\n } // If the range is at the start of the document, abort.\n\n\n if (start.isAtEndOfNode(document)) {\n return;\n } // If the range is at the start of the text node, we need to figure out what\n // is behind it to know how to delete...\n\n\n var text = document.getDescendant(start.key);\n\n if (start.isAtEndOfNode(text)) {\n var next = document.getNextText(text.key);\n\n var _nextBlock = document.getClosestBlock(next.key);\n\n var nextVoid = document.getClosestVoid(next.key, editor); // If the next text node has a void parent, remove it.\n\n if (nextVoid) {\n editor.removeNodeByKey(nextVoid.key);\n return;\n } // If we're deleting by one character and the previous text node is not\n // inside the current block, we need to merge the two blocks together.\n\n\n if (n === 1 && _nextBlock !== block) {\n range = range.moveFocusTo(next.key, 0);\n editor.deleteAtRange(range);\n return;\n }\n } // If the remaining characters to the end of the node is greater than or equal\n // to the number of characters to delete, just remove the characters forwards\n // inside the current node.\n\n\n if (n <= text.text.length - focus.offset) {\n range = range.moveFocusForward(n);\n editor.deleteAtRange(range);\n return;\n } // Otherwise, we need to see how many nodes forwards to go.\n\n\n var node = text;\n var offset = focus.offset;\n var traversed = text.text.length - focus.offset;\n\n while (n > traversed) {\n node = document.getNextText(node.key);\n\n var _next = traversed + node.text.length;\n\n if (n <= _next) {\n offset = n - traversed;\n break;\n } else {\n traversed = _next;\n }\n }\n\n range = range.moveFocusTo(node.key, offset);\n editor.deleteAtRange(range);\n};\n/**\n * Delete backward until the line boundary at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteLineBackwardAtRange = function (editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var start = range.start;\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n editor.deleteBackwardAtRange(range, o);\n};\n/**\n * Delete forward until the line boundary at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteLineForwardAtRange = function (editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var start = range.start;\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n editor.deleteForwardAtRange(range, startBlock.text.length - o);\n};\n/**\n * Delete backward until the word boundary at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteWordBackwardAtRange = function (editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var start = range.start;\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n var n = o === 0 ? 1 : TextUtils.getWordOffsetBackward(text, o);\n editor.deleteBackwardAtRange(range, n);\n};\n/**\n * Delete forward until the word boundary at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n */\n\n\nCommands$1.deleteWordForwardAtRange = function (editor, range) {\n if (range.isExpanded) {\n editor.deleteAtRange(range);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var start = range.start;\n var startBlock = document.getClosestBlock(start.key);\n var offset = startBlock.getOffset(start.key);\n var o = offset + start.offset;\n var text = startBlock.text;\n var wordOffset = TextUtils.getWordOffsetForward(text, o);\n var n = wordOffset === 0 ? 1 : wordOffset;\n editor.deleteForwardAtRange(range, n);\n};\n/**\n * Insert a `block` node at `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Block|String|Object} block\n */\n\n\nCommands$1.insertBlockAtRange = function (editor, range, block) {\n range = deleteExpandedAtRange(editor, range);\n block = Block.create(block);\n var value = editor.value;\n var document = value.document;\n var _range4 = range,\n start = _range4.start;\n var startKey = start.key;\n var startOffset = start.offset;\n var startBlock = document.getClosestBlock(startKey);\n var startInline = document.getClosestInline(startKey);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n\n if (editor.isVoid(startBlock)) {\n var extra = start.isAtEndOfNode(startBlock) ? 1 : 0;\n editor.insertNodeByKey(parent.key, index + extra, block);\n } else if (!startInline && startBlock.text === '') {\n editor.insertNodeByKey(parent.key, index + 1, block);\n } else if (start.isAtStartOfNode(startBlock)) {\n editor.insertNodeByKey(parent.key, index, block);\n } else if (start.isAtEndOfNode(startBlock)) {\n editor.insertNodeByKey(parent.key, index + 1, block);\n } else {\n if (startInline && editor.isVoid(startInline)) {\n var atEnd = start.isAtEndOfNode(startInline);\n var siblingText = atEnd ? document.getNextText(startKey) : document.getPreviousText(startKey);\n var splitRange = atEnd ? range.moveToStartOfNode(siblingText) : range.moveToEndOfNode(siblingText);\n startKey = splitRange.start.key;\n startOffset = splitRange.start.offset;\n }\n\n editor.withoutNormalizing(function () {\n editor.splitDescendantsByKey(startBlock.key, startKey, startOffset);\n editor.insertNodeByKey(parent.key, index + 1, block);\n });\n }\n};\n/**\n * Insert a `fragment` at a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Document} fragment\n */\n\n\nCommands$1.insertFragmentAtRange = function (editor, range, fragment) {\n editor.withoutNormalizing(function () {\n range = deleteExpandedAtRange(editor, range); // If the fragment is empty, there's nothing to do after deleting.\n\n if (!fragment.nodes.size) return; // Regenerate the keys for all of the fragments nodes, so that they're\n // guaranteed not to collide with the existing keys in the document. Otherwise\n // they will be rengerated automatically and we won't have an easy way to\n // reference them.\n\n fragment = fragment.mapDescendants(function (child) {\n return child.regenerateKey();\n }); // Calculate a few things...\n\n var _range5 = range,\n start = _range5.start;\n var value = editor.value;\n var document = value.document;\n var startText = document.getDescendant(start.key);\n var startBlock = document.getClosestBlock(startText.key);\n var startChild = startBlock.getFurthestAncestor(startText.key);\n var isAtStart = start.isAtStartOfNode(startBlock);\n var parent = document.getParent(startBlock.key);\n var index = parent.nodes.indexOf(startBlock);\n var blocks = fragment.getBlocks();\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var firstBlock = blocks.first();\n var lastBlock = blocks.last();\n var insertionNode = findInsertionNode(fragment, document, startBlock.key); // If the fragment only contains a void block, use `insertBlock` instead.\n\n if (firstBlock === lastBlock && editor.isVoid(firstBlock)) {\n editor.insertBlockAtRange(range, firstBlock);\n return;\n } // If inserting the entire fragment and it starts or ends with a single\n // nested block, e.g. a table, we do not merge it with existing blocks.\n\n\n if (insertionNode === fragment && (firstChild.hasBlockChildren() || lastChild.hasBlockChildren())) {\n fragment.nodes.reverse().forEach(function (node) {\n editor.insertBlockAtRange(range, node);\n });\n return;\n } // If the first and last block aren't the same, we need to insert all of the\n // nodes after the insertion node's first block at the index.\n\n\n if (firstBlock !== lastBlock) {\n var lonelyParent = insertionNode.getFurthest(firstBlock.key, function (p) {\n return p.nodes.size === 1;\n });\n var lonelyChild = lonelyParent || firstBlock;\n var startIndex = parent.nodes.indexOf(startBlock);\n var excludingLonelyChild = insertionNode.removeNode(lonelyChild.key);\n excludingLonelyChild.nodes.forEach(function (node, i) {\n var newIndex = startIndex + i + 1;\n editor.insertNodeByKey(parent.key, newIndex, node);\n });\n } // Check if we need to split the node.\n\n\n if (start.offset !== 0) {\n editor.splitDescendantsByKey(startChild.key, start.key, start.offset);\n } // Update our variables with the new value.\n\n\n document = editor.value.document;\n startText = document.getDescendant(start.key);\n startBlock = document.getClosestBlock(start.key);\n startChild = startBlock.getFurthestAncestor(startText.key); // If the first and last block aren't the same, we need to move any of the\n // starting block's children after the split into the last block of the\n // fragment, which has already been inserted.\n\n if (firstBlock !== lastBlock) {\n var nextChild = isAtStart ? startChild : startBlock.getNextSibling(startChild.key);\n var nextNodes = nextChild ? startBlock.nodes.skipUntil(function (n) {\n return n.key === nextChild.key;\n }) : Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var lastIndex = lastBlock.nodes.size;\n nextNodes.forEach(function (node, i) {\n var newIndex = lastIndex + i;\n editor.moveNodeByKey(node.key, lastBlock.key, newIndex);\n });\n } // If the starting block is empty, we replace it entirely with the first block\n // of the fragment, since this leads to a more expected behavior for the user.\n\n\n if (!editor.isVoid(startBlock) && startBlock.text === '' && !startBlock.findDescendant(function (n) {\n return editor.isVoid(n);\n })) {\n editor.removeNodeByKey(startBlock.key);\n editor.insertNodeByKey(parent.key, index, firstBlock);\n } else {\n // Otherwise, we maintain the starting block, and insert all of the first\n // block's inline nodes into it at the split point.\n var inlineChild = startBlock.getFurthestAncestor(startText.key);\n var inlineIndex = startBlock.nodes.indexOf(inlineChild);\n firstBlock.nodes.forEach(function (inline, i) {\n var o = start.offset === 0 ? 0 : 1;\n var newIndex = inlineIndex + i + o;\n editor.insertNodeByKey(startBlock.key, newIndex, inline);\n });\n }\n });\n};\n\nvar findInsertionNode = function findInsertionNode(fragment, document, startKey) {\n var hasSingleNode = function hasSingleNode(object) {\n if (!object || object.object === 'text') return;\n return object.nodes.size === 1;\n };\n\n var firstNode = function firstNode(object) {\n return object && object.nodes.first();\n };\n\n var node = fragment;\n\n if (hasSingleNode(fragment)) {\n var fragmentInner = firstNode(fragment);\n\n var matches = function matches(documentNode) {\n return documentNode.type === fragmentInner.type;\n };\n\n var documentInner = document.getFurthest(startKey, matches);\n if (documentInner === document.getParent(startKey)) node = fragmentInner;\n\n while (hasSingleNode(fragmentInner) && hasSingleNode(documentInner)) {\n fragmentInner = firstNode(fragmentInner);\n documentInner = firstNode(documentInner);\n\n if (fragmentInner.type === documentInner.type) {\n node = fragmentInner;\n } else {\n break;\n }\n }\n }\n\n return node;\n};\n/**\n * Insert an `inline` node at `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Inline|String|Object} inline\n */\n\n\nCommands$1.insertInlineAtRange = function (editor, range, inline) {\n inline = Inline.create(inline);\n editor.withoutNormalizing(function () {\n range = deleteExpandedAtRange(editor, range);\n var value = editor.value;\n var document = value.document;\n var _range6 = range,\n start = _range6.start;\n var parent = document.getParent(start.key);\n var startText = document.assertDescendant(start.key);\n var index = parent.nodes.indexOf(startText);\n if (editor.isVoid(parent)) return;\n editor.splitNodeByKey(start.key, start.offset);\n editor.insertNodeByKey(parent.key, index + 1, inline);\n });\n};\n/**\n * Insert `text` at a `range`, with optional `marks`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\n\nCommands$1.insertTextAtRange = function (editor, range, text, marks) {\n range = deleteExpandedAtRange(editor, range);\n var value = editor.value;\n var document = value.document;\n var _range7 = range,\n start = _range7.start;\n var offset = start.offset;\n var parent = document.getParent(start.key);\n\n if (editor.isVoid(parent)) {\n return;\n }\n\n editor.insertTextByKey(start.key, offset, text, marks);\n};\n/**\n * Remove an existing `mark` to the characters at `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Mark|String} mark (optional)\n */\n\n\nCommands$1.removeMarkAtRange = function (editor, range, mark) {\n if (range.isCollapsed) return;\n var value = editor.value;\n var document = value.document;\n var texts = document.getTextsAtRange(range);\n var start = range.start,\n end = range.end;\n editor.withoutNormalizing(function () {\n texts.forEach(function (node) {\n var key = node.key;\n var index = 0;\n var length = node.text.length;\n if (key === start.key) index = start.offset;\n if (key === end.key) length = end.offset;\n if (key === start.key && key === end.key) length = end.offset - start.offset;\n editor.removeMarkByKey(key, index, length, mark);\n });\n });\n};\n/**\n * Set the `properties` of block nodes in a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Object|String} properties\n */\n\n\nCommands$1.setBlocksAtRange = function (editor, range, properties) {\n var value = editor.value;\n var document = value.document;\n var blocks = document.getLeafBlocksAtRange(range);\n var start = range.start,\n end = range.end,\n isCollapsed = range.isCollapsed;\n var isStartVoid = document.hasVoidParent(start.key, editor);\n var startBlock = document.getClosestBlock(start.key);\n var endBlock = document.getClosestBlock(end.key); // Check if we have a \"hanging\" selection case where the even though the\n // selection extends into the start of the end node, we actually want to\n // ignore that for UX reasons.\n\n var isHanging = isCollapsed === false && start.offset === 0 && end.offset === 0 && isStartVoid === false && start.key === startBlock.getFirstText().key && end.key === endBlock.getFirstText().key; // If it's a hanging selection, ignore the last block.\n\n var sets = isHanging ? blocks.slice(0, -1) : blocks;\n editor.withoutNormalizing(function () {\n sets.forEach(function (block) {\n editor.setNodeByKey(block.key, properties);\n });\n });\n};\n/**\n * Set the `properties` of inline nodes in a `range`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Object|String} properties\n */\n\n\nCommands$1.setInlinesAtRange = function (editor, range, properties) {\n var value = editor.value;\n var document = value.document;\n var inlines = document.getLeafInlinesAtRange(range);\n editor.withoutNormalizing(function () {\n inlines.forEach(function (inline) {\n editor.setNodeByKey(inline.key, properties);\n });\n });\n};\n/**\n * Split the block nodes at a `range`, to optional `height`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Number} height (optional)\n */\n\n\nCommands$1.splitBlockAtRange = function (editor, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n range = deleteExpandedAtRange(editor, range);\n var _range8 = range,\n start = _range8.start,\n end = _range8.end;\n var value = editor.value;\n var _value = value,\n document = _value.document;\n var node = document.assertDescendant(start.key);\n var parent = document.getClosestBlock(node.key);\n var h = 0;\n\n while (parent && parent.object === 'block' && h < height) {\n node = parent;\n parent = document.getClosestBlock(parent.key);\n h++;\n }\n\n editor.withoutNormalizing(function () {\n editor.splitDescendantsByKey(node.key, start.key, start.offset);\n value = editor.value;\n document = value.document;\n\n if (range.isExpanded) {\n if (range.isBackward) range = range.flip();\n var nextBlock = document.getNextBlock(node.key);\n range = range.moveAnchorToStartOfNode(nextBlock);\n range = range.setFocus(range.focus.setPath(null));\n\n if (start.key === end.key) {\n range = range.moveFocusTo(range.anchor.key, end.offset - start.offset);\n }\n\n range = document.resolveRange(range);\n editor.deleteAtRange(range);\n }\n });\n};\n/**\n * Split the inline nodes at a `range`, to optional `height`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Number} height (optional)\n */\n\n\nCommands$1.splitInlineAtRange = function (editor, range) {\n var height = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : Infinity;\n range = deleteExpandedAtRange(editor, range);\n var _range9 = range,\n start = _range9.start;\n var value = editor.value;\n var document = value.document;\n var node = document.assertDescendant(start.key);\n var parent = document.getClosestInline(node.key);\n var h = 0;\n\n while (parent && parent.object === 'inline' && h < height) {\n node = parent;\n parent = document.getClosestInline(parent.key);\n h++;\n }\n\n editor.splitDescendantsByKey(node.key, start.key, start.offset);\n};\n/**\n * Add or remove a `mark` from the characters at `range`, depending on whether\n * it's already there.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Mixed} mark\n */\n\n\nCommands$1.toggleMarkAtRange = function (editor, range, mark) {\n if (range.isCollapsed) return;\n mark = Mark.create(mark);\n var value = editor.value;\n var document = value.document;\n var marks = document.getActiveMarksAtRange(range);\n var exists = marks.some(function (m) {\n return m.equals(mark);\n });\n\n if (exists) {\n editor.removeMarkAtRange(range, mark);\n } else {\n editor.addMarkAtRange(range, mark);\n }\n};\n/**\n * Unwrap all of the block nodes in a `range` from a block with `properties`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {String|Object} properties\n */\n\n\nCommands$1.unwrapBlockAtRange = function (editor, range, properties) {\n properties = Node.createProperties(properties);\n var value = editor.value;\n var document = value.document;\n var blocks = document.getLeafBlocksAtRange(range);\n var wrappers = blocks.map(function (block) {\n return document.getClosest(block.key, function (parent) {\n if (parent.object !== 'block') return false;\n if (properties.type != null && parent.type !== properties.type) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n editor.withoutNormalizing(function () {\n wrappers.forEach(function (block) {\n var first = block.nodes.first();\n var last = block.nodes.last();\n var parent = editor.value.document.getParent(block.key);\n var index = parent.nodes.indexOf(block);\n var children = block.nodes.filter(function (child) {\n return blocks.some(function (b) {\n return child === b || child.hasDescendant(b.key);\n });\n });\n var firstMatch = children.first();\n var lastMatch = children.last();\n\n if (first === firstMatch && last === lastMatch) {\n block.nodes.forEach(function (child, i) {\n editor.moveNodeByKey(child.key, parent.key, index + i);\n });\n editor.removeNodeByKey(block.key);\n } else if (last === lastMatch) {\n block.nodes.skipUntil(function (n) {\n return n === firstMatch;\n }).forEach(function (child, i) {\n editor.moveNodeByKey(child.key, parent.key, index + 1 + i);\n });\n } else if (first === firstMatch) {\n block.nodes.takeUntil(function (n) {\n return n === lastMatch;\n }).push(lastMatch).forEach(function (child, i) {\n editor.moveNodeByKey(child.key, parent.key, index + i);\n });\n } else {\n var firstText = firstMatch.getFirstText();\n editor.splitDescendantsByKey(block.key, firstText.key, 0);\n document = editor.value.document;\n children.forEach(function (child, i) {\n if (i === 0) {\n var extra = child;\n child = document.getNextBlock(child.key);\n editor.removeNodeByKey(extra.key);\n }\n\n editor.moveNodeByKey(child.key, parent.key, index + 1 + i);\n });\n }\n });\n });\n};\n/**\n * Unwrap the inline nodes in a `range` from an inline with `properties`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {String|Object} properties\n */\n\n\nCommands$1.unwrapInlineAtRange = function (editor, range, properties) {\n properties = Node.createProperties(properties);\n var value = editor.value;\n var document = value.document;\n var texts = document.getTextsAtRange(range);\n var inlines = texts.map(function (text) {\n return document.getClosest(text.key, function (parent) {\n if (parent.object !== 'inline') return false;\n if (properties.type != null && parent.type !== properties.type) return false;\n if (properties.data != null && !parent.data.isSuperset(properties.data)) return false;\n return true;\n });\n }).filter(function (exists) {\n return exists;\n }).toOrderedSet().toList();\n editor.withoutNormalizing(function () {\n inlines.forEach(function (inline) {\n var parent = editor.value.document.getParent(inline.key);\n var index = parent.nodes.indexOf(inline);\n inline.nodes.forEach(function (child, i) {\n editor.moveNodeByKey(child.key, parent.key, index + i);\n });\n editor.removeNodeByKey(inline.key);\n });\n });\n};\n/**\n * Wrap all of the blocks in a `range` in a new `block`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Block|Object|String} block\n */\n\n\nCommands$1.wrapBlockAtRange = function (editor, range, block) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var value = editor.value;\n var document = value.document;\n var blocks = document.getLeafBlocksAtRange(range);\n var firstblock = blocks.first();\n var lastblock = blocks.last();\n var parent = void 0,\n siblings = void 0,\n index = void 0; // If there is only one block in the selection then we know the parent and\n // siblings.\n\n if (blocks.length === 1) {\n parent = document.getParent(firstblock.key);\n siblings = blocks;\n } else {\n // Determine closest shared parent to all blocks in selection.\n parent = document.getClosest(firstblock.key, function (p1) {\n return !!document.getClosest(lastblock.key, function (p2) {\n return p1 === p2;\n });\n });\n } // If no shared parent could be found then the parent is the document.\n\n\n if (parent == null) parent = document; // Create a list of direct children siblings of parent that fall in the\n // selection.\n\n if (siblings == null) {\n var indexes = parent.nodes.reduce(function (ind, node, i) {\n if (node === firstblock || node.hasDescendant(firstblock.key)) ind[0] = i;\n if (node === lastblock || node.hasDescendant(lastblock.key)) ind[1] = i;\n return ind;\n }, []);\n index = indexes[0];\n siblings = parent.nodes.slice(indexes[0], indexes[1] + 1);\n } // Get the index to place the new wrapped node at.\n\n\n if (index == null) {\n index = parent.nodes.indexOf(siblings.first());\n }\n\n editor.withoutNormalizing(function () {\n // Inject the new block node into the parent.\n editor.insertNodeByKey(parent.key, index, block); // Move the sibling nodes into the new block node.\n\n siblings.forEach(function (node, i) {\n editor.moveNodeByKey(node.key, block.key, i);\n });\n });\n};\n/**\n * Wrap the text and inlines in a `range` in a new `inline`.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {Inline|Object|String} inline\n */\n\n\nCommands$1.wrapInlineAtRange = function (editor, range, inline) {\n var value = editor.value;\n var document = value.document;\n var start = range.start,\n end = range.end;\n\n if (range.isCollapsed) {\n // Wrapping an inline void\n var inlineParent = document.getClosestInline(start.key);\n\n if (!inlineParent) {\n return;\n }\n\n if (!editor.isVoid(inlineParent)) {\n return;\n }\n\n return editor.wrapInlineByKey(inlineParent.key, inline);\n }\n\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var blocks = document.getLeafBlocksAtRange(range);\n var startBlock = document.getClosestBlock(start.key);\n var endBlock = document.getClosestBlock(end.key);\n var startInline = document.getClosestInline(start.key);\n var endInline = document.getClosestInline(end.key);\n var startChild = startBlock.getFurthestAncestor(start.key);\n var endChild = endBlock.getFurthestAncestor(end.key);\n editor.withoutNormalizing(function () {\n if (!startInline || startInline !== endInline) {\n editor.splitDescendantsByKey(endChild.key, end.key, end.offset);\n editor.splitDescendantsByKey(startChild.key, start.key, start.offset);\n }\n\n document = editor.value.document;\n startBlock = document.getDescendant(startBlock.key);\n endBlock = document.getDescendant(endBlock.key);\n startChild = startBlock.getFurthestAncestor(start.key);\n endChild = endBlock.getFurthestAncestor(end.key);\n var startIndex = startBlock.nodes.indexOf(startChild);\n var endIndex = endBlock.nodes.indexOf(endChild);\n\n if (startInline && startInline === endInline) {\n var text = startBlock.getTextsAtRange(range).get(0).splitText(start.offset)[1].splitText(end.offset - start.offset)[0];\n inline = inline.set('nodes', Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([text]));\n editor.insertInlineAtRange(range, inline);\n var inlinekey = inline.getFirstText().key;\n var rng = {\n anchor: {\n key: inlinekey,\n offset: 0\n },\n focus: {\n key: inlinekey,\n offset: end.offset - start.offset\n },\n isFocused: true\n };\n editor.select(rng);\n } else if (startBlock === endBlock) {\n document = editor.value.document;\n startBlock = document.getClosestBlock(start.key);\n startChild = startBlock.getFurthestAncestor(start.key);\n var startInner = document.getNextSibling(startChild.key);\n var startInnerIndex = startBlock.nodes.indexOf(startInner);\n var endInner = start.key === end.key ? startInner : startBlock.getFurthestAncestor(end.key);\n var inlines = startBlock.nodes.skipUntil(function (n) {\n return n === startInner;\n }).takeUntil(function (n) {\n return n === endInner;\n }).push(endInner);\n var node = inline.regenerateKey();\n editor.insertNodeByKey(startBlock.key, startInnerIndex, node);\n inlines.forEach(function (child, i) {\n editor.moveNodeByKey(child.key, node.key, i);\n });\n } else {\n var startInlines = startBlock.nodes.slice(startIndex + 1);\n var endInlines = endBlock.nodes.slice(0, endIndex + 1);\n var startNode = inline.regenerateKey();\n var endNode = inline.regenerateKey();\n editor.insertNodeByKey(startBlock.key, startIndex + 1, startNode);\n editor.insertNodeByKey(endBlock.key, endIndex, endNode);\n startInlines.forEach(function (child, i) {\n editor.moveNodeByKey(child.key, startNode.key, i);\n });\n endInlines.forEach(function (child, i) {\n editor.moveNodeByKey(child.key, endNode.key, i);\n });\n blocks.slice(1, -1).forEach(function (block) {\n var node = inline.regenerateKey();\n editor.insertNodeByKey(block.key, 0, node);\n block.nodes.forEach(function (child, i) {\n editor.moveNodeByKey(child.key, node.key, i);\n });\n });\n }\n });\n};\n/**\n * Wrap the text in a `range` in a prefix/suffix.\n *\n * @param {Editor} editor\n * @param {Range} range\n * @param {String} prefix\n * @param {String} suffix (optional)\n */\n\n\nCommands$1.wrapTextAtRange = function (editor, range, prefix) {\n var suffix = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : prefix;\n var start = range.start,\n end = range.end;\n var startRange = range.moveToStart();\n var endRange = range.moveToEnd();\n\n if (start.key === end.key) {\n endRange = endRange.moveForward(prefix.length);\n }\n\n editor.withoutNormalizing(function () {\n editor.insertTextAtRange(startRange, prefix, []);\n editor.insertTextAtRange(endRange, suffix, []);\n });\n};\n/**\n * Commands.\n *\n * @type {Object}\n */\n\n\nvar Commands$2 = {};\n/**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mixed} mark\n */\n\nCommands$2.addMarkByPath = function (editor, path, offset, length, mark) {\n mark = Mark.create(mark);\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n o += leaf.text.length; // If the leaf doesn't overlap with the operation, continue on.\n\n if (ay < bx || by < ax) return; // If the leaf already has the mark, continue on.\n\n if (leaf.marks.has(mark)) return; // Otherwise, determine which offset and characters overlap.\n\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n operations.push({\n type: 'add_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n operations.forEach(function (op) {\n return editor.applyOperation(op);\n });\n};\n/**\n * Insert a `fragment` at `index` in a node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} index\n * @param {Fragment} fragment\n */\n\n\nCommands$2.insertFragmentByPath = function (editor, path, index, fragment) {\n fragment.nodes.forEach(function (node, i) {\n editor.insertNodeByPath(path, index + i, node);\n });\n};\n/**\n * Insert a `node` at `index` in a node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} index\n * @param {Node} node\n */\n\n\nCommands$2.insertNodeByPath = function (editor, path, index, node) {\n var value = editor.value;\n editor.applyOperation({\n type: 'insert_node',\n value: value,\n path: path.concat(index),\n node: node\n });\n};\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\n\nCommands$2.insertTextByPath = function (editor, path, offset, text, marks) {\n var value = editor.value;\n var decorations = value.decorations,\n document = value.document;\n var node = document.assertNode(path);\n marks = marks || node.getMarksAtIndex(offset);\n var updated = false;\n var key = node.key;\n var decs = decorations.filter(function (dec) {\n var start = dec.start,\n end = dec.end,\n mark = dec.mark;\n var isAtomic = editor.isAtomic(mark);\n if (!isAtomic) return true;\n if (start.key !== key) return true;\n\n if (start.offset < offset && (end.key !== key || end.offset > offset)) {\n updated = true;\n return false;\n }\n\n return true;\n });\n\n if (updated) {\n editor.setDecorations(decs);\n }\n\n editor.applyOperation({\n type: 'insert_text',\n value: value,\n path: path,\n offset: offset,\n text: text,\n marks: marks\n });\n};\n/**\n * Merge a node by `path` with the previous node.\n *\n * @param {Editor} editor\n * @param {Array} path\n */\n\n\nCommands$2.mergeNodeByPath = function (editor, path) {\n var value = editor.value;\n var document = value.document;\n var original = document.getDescendant(path);\n var previous = document.getPreviousSibling(path);\n\n if (!previous) {\n throw new Error('Unable to merge node with path \"' + path + '\", because it has no previous sibling.');\n }\n\n var position = previous.object === 'text' ? previous.text.length : previous.nodes.size;\n editor.applyOperation({\n type: 'merge_node',\n value: value,\n path: path,\n position: position,\n // for undos to succeed we only need the type and data because\n // these are the only properties that get changed in the merge operation\n properties: {\n type: original.type,\n data: original.data\n },\n target: null\n });\n};\n/**\n * Move a node by `path` to a new parent by `newParentPath` and `newIndex`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {String} newParentPath\n * @param {Number} newIndex\n */\n\n\nCommands$2.moveNodeByPath = function (editor, path, newParentPath, newIndex) {\n var value = editor.value; // If the operation path and newParentPath are the same,\n // this should be considered a NOOP\n\n if (PathUtils.isEqual(path, newParentPath)) {\n return editor;\n }\n\n var newPath = newParentPath.concat(newIndex);\n\n if (PathUtils.isEqual(path, newPath)) {\n return editor;\n }\n\n editor.applyOperation({\n type: 'move_node',\n value: value,\n path: path,\n newPath: newPath\n });\n};\n/**\n * Remove mark from text at `offset` and `length` in node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n */\n\n\nCommands$2.removeMarkByPath = function (editor, path, offset, length, mark) {\n mark = Mark.create(mark);\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n var operations = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n o += leaf.text.length; // If the leaf doesn't overlap with the operation, continue on.\n\n if (ay < bx || by < ax) return; // If the leaf already has the mark, continue on.\n\n if (!leaf.marks.has(mark)) return; // Otherwise, determine which offset and characters overlap.\n\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n operations.push({\n type: 'remove_mark',\n value: value,\n path: path,\n offset: start,\n length: end - start,\n mark: mark\n });\n });\n operations.forEach(function (op) {\n return editor.applyOperation(op);\n });\n};\n/**\n * Remove all `marks` from node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n */\n\n\nCommands$2.removeAllMarksByPath = function (editor, path) {\n var state = editor.state;\n var document = state.document;\n var node = document.assertNode(path);\n var texts = node.object === 'text' ? [node] : node.getTextsAsArray();\n texts.forEach(function (text) {\n text.getMarksAsArray().forEach(function (mark) {\n editor.removeMarkByKey(text.key, 0, text.text.length, mark);\n });\n });\n};\n/**\n * Remove a node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n */\n\n\nCommands$2.removeNodeByPath = function (editor, path) {\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n editor.applyOperation({\n type: 'remove_node',\n value: value,\n path: path,\n node: node\n });\n};\n/**\n * Remove text at `offset` and `length` in node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n */\n\n\nCommands$2.removeTextByPath = function (editor, path, offset, length) {\n var value = editor.value;\n var decorations = value.decorations,\n document = value.document;\n var node = document.assertNode(path);\n var leaves = node.getLeaves();\n var text = node.text;\n var updated = false;\n var key = node.key;\n var from = offset;\n var to = offset + length;\n var decs = decorations.filter(function (dec) {\n var start = dec.start,\n end = dec.end,\n mark = dec.mark;\n var isAtomic = editor.isAtomic(mark);\n if (!isAtomic) return true;\n if (start.key !== key) return true;\n\n if (start.offset < from && (end.key !== key || end.offset > from)) {\n updated = true;\n return false;\n }\n\n if (start.offset < to && (end.key !== key || end.offset > to)) {\n updated = true;\n return null;\n }\n\n return true;\n });\n\n if (updated) {\n editor.setDecorations(decs);\n }\n\n var removals = [];\n var bx = offset;\n var by = offset + length;\n var o = 0;\n leaves.forEach(function (leaf) {\n var ax = o;\n var ay = ax + leaf.text.length;\n o += leaf.text.length; // If the leaf doesn't overlap with the removal, continue on.\n\n if (ay < bx || by < ax) return; // Otherwise, determine which offset and characters overlap.\n\n var start = Math.max(ax, bx);\n var end = Math.min(ay, by);\n var string = text.slice(start, end);\n removals.push({\n type: 'remove_text',\n value: value,\n path: path,\n offset: start,\n text: string,\n marks: leaf.marks\n });\n }); // Apply in reverse order, so subsequent removals don't impact previous ones.\n\n removals.reverse().forEach(function (op) {\n return editor.applyOperation(op);\n });\n};\n/**\n`* Replace a `node` with another `node`\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Object|Node} node\n */\n\n\nCommands$2.replaceNodeByPath = function (editor, path, newNode) {\n newNode = Node.create(newNode);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n editor.withoutNormalizing(function () {\n editor.removeNodeByPath(path);\n editor.insertNodeByPath(parentPath, index, newNode);\n });\n};\n/**\n * Replace A Length of Text with another string or text\n * @param {Editor} editor\n * @param {String} key\n * @param {Number} offset\n * @param {Number} length\n * @param {string} text\n * @param {Set} marks (optional)\n */\n\n\nCommands$2.replaceTextByPath = function (editor, path, offset, length, text, marks) {\n var document = editor.value.document;\n var node = document.assertNode(path);\n\n if (length + offset > node.text.length) {\n length = node.text.length - offset;\n }\n\n var range = document.createRange({\n anchor: {\n path: path,\n offset: offset\n },\n focus: {\n path: path,\n offset: offset + length\n }\n });\n var activeMarks = document.getActiveMarksAtRange(range);\n editor.withoutNormalizing(function () {\n editor.removeTextByPath(path, offset, length);\n\n if (!marks) {\n // Do not use mark at index when marks and activeMarks are both empty\n marks = activeMarks ? activeMarks : [];\n } else if (activeMarks) {\n // Do not use `has` because we may want to reset marks like font-size with\n // an updated data;\n activeMarks = activeMarks.filter(function (activeMark) {\n return !marks.find(function (m) {\n return activeMark.type === m.type;\n });\n });\n marks = activeMarks.merge(marks);\n }\n\n editor.insertTextByPath(path, offset, text, marks);\n });\n};\n/**\n * Set `properties` on mark on text at `offset` and `length` in node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n */\n\n\nCommands$2.setMarkByPath = function (editor, path, offset, length, mark, properties) {\n mark = Mark.create(mark);\n properties = Mark.createProperties(properties);\n var value = editor.value;\n editor.applyOperation({\n type: 'set_mark',\n value: value,\n path: path,\n offset: offset,\n length: length,\n mark: mark,\n properties: properties\n });\n};\n/**\n * Set `properties` on a node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Object|String} properties\n */\n\n\nCommands$2.setNodeByPath = function (editor, path, properties) {\n properties = Node.createProperties(properties);\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n editor.applyOperation({\n type: 'set_node',\n value: value,\n path: path,\n node: node,\n properties: properties\n });\n};\n/**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\n\nCommands$2.setTextByPath = function (editor, path, text, marks) {\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n var end = node.text.length;\n editor.replaceTextByPath(path, 0, end, text, marks);\n};\n/**\n * Split a node by `path` at `position`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Number} position\n * @param {Object} options\n */\n\n\nCommands$2.splitNodeByPath = function (editor, path, position) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$target = options.target,\n target = _options$target === undefined ? null : _options$target;\n var value = editor.value;\n var document = value.document;\n var node = document.getDescendant(path);\n editor.applyOperation({\n type: 'split_node',\n value: value,\n path: path,\n position: position,\n target: target,\n properties: {\n type: node.type,\n data: node.data\n }\n });\n};\n/**\n * Split a node deeply down the tree by `path`, `textPath` and `textOffset`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Array} textPath\n * @param {Number} textOffset\n */\n\n\nCommands$2.splitDescendantsByPath = function (editor, path, textPath, textOffset) {\n if (path.equals(textPath)) {\n editor.splitNodeByPath(textPath, textOffset);\n return;\n }\n\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n var text = document.assertNode(textPath);\n var ancestors = document.getAncestors(textPath);\n var nodes = ancestors.skipUntil(function (a) {\n return a.key === node.key;\n }).reverse().unshift(text);\n var previous = void 0;\n var index = void 0;\n editor.withoutNormalizing(function () {\n nodes.forEach(function (n) {\n var prevIndex = index == null ? null : index;\n index = previous ? n.nodes.indexOf(previous) + 1 : textOffset;\n previous = n;\n editor.splitNodeByKey(n.key, index, {\n target: prevIndex\n });\n });\n });\n};\n/**\n * Unwrap content from an inline parent with `properties`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Object|String} properties\n */\n\n\nCommands$2.unwrapInlineByPath = function (editor, path, properties) {\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOfNode(first, last);\n editor.unwrapInlineAtRange(range, properties);\n};\n/**\n * Unwrap content from a block parent with `properties`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Object|String} properties\n */\n\n\nCommands$2.unwrapBlockByPath = function (editor, path, properties) {\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var node = document.assertNode(path);\n var first = node.getFirstText();\n var last = node.getLastText();\n var range = selection.moveToRangeOfNode(first, last);\n editor.unwrapBlockAtRange(range, properties);\n};\n/**\n * Unwrap a single node from its parent.\n *\n * If the node is surrounded with siblings, its parent will be\n * split. If the node is the only child, the parent is removed, and\n * simply replaced by the node itself. Cannot unwrap a root node.\n *\n * @param {Editor} editor\n * @param {Array} path\n */\n\n\nCommands$2.unwrapNodeByPath = function (editor, path) {\n var value = editor.value;\n var document = value.document;\n document.assertNode(path);\n var parentPath = PathUtils.lift(path);\n var parent = document.assertNode(parentPath);\n var index = path.last();\n var parentIndex = parentPath.last();\n var grandPath = PathUtils.lift(parentPath);\n var isFirst = index === 0;\n var isLast = index === parent.nodes.size - 1;\n editor.withoutNormalizing(function () {\n if (parent.nodes.size === 1) {\n editor.moveNodeByPath(path, grandPath, parentIndex + 1);\n editor.removeNodeByPath(parentPath);\n } else if (isFirst) {\n editor.moveNodeByPath(path, grandPath, parentIndex);\n } else if (isLast) {\n editor.moveNodeByPath(path, grandPath, parentIndex + 1);\n } else {\n var updatedPath = PathUtils.increment(path, 1, parentPath.size - 1);\n updatedPath = updatedPath.set(updatedPath.size - 1, 0);\n editor.splitNodeByPath(parentPath, index);\n editor.moveNodeByPath(updatedPath, grandPath, parentIndex + 1);\n }\n });\n};\n/**\n * Unwrap all of the children of a node, by removing the node and replacing it\n * with the children in the tree.\n *\n * @param {Editor} editor\n * @param {Array} path\n */\n\n\nCommands$2.unwrapChildrenByPath = function (editor, path) {\n path = PathUtils.create(path);\n var value = editor.value;\n var document = value.document;\n var node = document.assertNode(path);\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var nodes = node.nodes;\n editor.withoutNormalizing(function () {\n nodes.reverse().forEach(function (child, i) {\n var childIndex = nodes.size - i - 1;\n var childPath = path.push(childIndex);\n editor.moveNodeByPath(childPath, parentPath, index + 1);\n });\n editor.removeNodeByPath(path);\n });\n};\n/**\n * Wrap a node in a block with `properties`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Block|Object|String} block\n */\n\n\nCommands$2.wrapBlockByPath = function (editor, path, block) {\n block = Block.create(block);\n block = block.set('nodes', block.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n editor.withoutNormalizing(function () {\n editor.insertNodeByPath(parentPath, index, block);\n editor.moveNodeByPath(newPath, path, 0);\n });\n};\n/**\n * Wrap a node in an inline with `properties`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Block|Object|String} inline\n */\n\n\nCommands$2.wrapInlineByPath = function (editor, path, inline) {\n inline = Inline.create(inline);\n inline = inline.set('nodes', inline.nodes.clear());\n var parentPath = PathUtils.lift(path);\n var index = path.last();\n var newPath = PathUtils.increment(path);\n editor.withoutNormalizing(function () {\n editor.insertNodeByPath(parentPath, index, inline);\n editor.moveNodeByPath(newPath, path, 0);\n });\n};\n/**\n * Wrap a node by `path` with `node`.\n *\n * @param {Editor} editor\n * @param {Array} path\n * @param {Node|Object} node\n */\n\n\nCommands$2.wrapNodeByPath = function (editor, path, node) {\n node = Node.create(node);\n\n if (node.object === 'block') {\n editor.wrapBlockByPath(path, node);\n } else if (node.object === 'inline') {\n editor.wrapInlineByPath(path, node);\n }\n};\n/**\n * Mix in `*ByKey` variants.\n */\n\n\nvar COMMANDS = ['addMark', 'insertFragment', 'insertNode', 'insertText', 'mergeNode', 'removeAllMarks', 'removeMark', 'removeNode', 'removeText', 'replaceNode', 'replaceText', 'setMark', 'setNode', 'setText', 'splitNode', 'unwrapBlock', 'unwrapChildren', 'unwrapInline', 'unwrapNode', 'wrapBlock', 'wrapInline', 'wrapNode'];\n\nvar _loop = function _loop(method) {\n Commands$2[method + 'ByKey'] = function (editor, key) {\n for (var _len3 = arguments.length, args = Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {\n args[_key3 - 2] = arguments[_key3];\n }\n\n var value = editor.value;\n var document = value.document;\n var path = document.assertPath(key);\n editor[method + 'ByPath'].apply(editor, [path].concat(args));\n };\n};\n\nvar _iteratorNormalCompletion = true;\nvar _didIteratorError = false;\nvar _iteratorError = undefined;\n\ntry {\n for (var _iterator = COMMANDS[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var method = _step.value;\n\n _loop(method);\n } // Moving nodes takes two keys, so it's slightly different.\n\n} catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n}\n\nCommands$2.moveNodeByKey = function (editor, key, newKey) {\n for (var _len = arguments.length, args = Array(_len > 3 ? _len - 3 : 0), _key = 3; _key < _len; _key++) {\n args[_key - 3] = arguments[_key];\n }\n\n var value = editor.value;\n var document = value.document;\n var path = document.assertPath(key);\n var newPath = document.assertPath(newKey);\n editor.moveNodeByPath.apply(editor, [path, newPath].concat(args));\n}; // Splitting descendants takes two keys, so it's slightly different.\n\n\nCommands$2.splitDescendantsByKey = function (editor, key, textKey) {\n for (var _len2 = arguments.length, args = Array(_len2 > 3 ? _len2 - 3 : 0), _key2 = 3; _key2 < _len2; _key2++) {\n args[_key2 - 3] = arguments[_key2];\n }\n\n var value = editor.value;\n var document = value.document;\n var path = document.assertPath(key);\n var textPath = document.assertPath(textKey);\n editor.splitDescendantsByPath.apply(editor, [path, textPath].concat(args));\n};\n/**\n * Commands.\n *\n * @type {Object}\n */\n\n\nvar Commands$3 = {};\n/**\n * Save an `operation` into the history.\n *\n * @param {Editor} editor\n * @param {Object} operation\n */\n\nCommands$3.save = function (editor, operation) {\n var operations = editor.operations,\n value = editor.value;\n var data = value.data;\n var _editor$tmp = editor.tmp,\n save = _editor$tmp.save,\n merge = _editor$tmp.merge;\n if (save === false) return;\n var undos = data.get('undos') || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var lastBatch = undos.last();\n var lastOperation = lastBatch && lastBatch.last(); // If `merge` is non-commital, and this is not the first operation in a new\n // editor, then merge, otherwise merge based on the last operation.\n\n if (merge == null) {\n if (operations.size !== 0) {\n merge = true;\n } else {\n merge = shouldMerge(operation, lastOperation);\n }\n } // If the `merge` flag is true, add the operation to the last batch.\n\n\n if (merge && lastBatch) {\n var batch = lastBatch.push(operation);\n undos = undos.pop();\n undos = undos.push(batch);\n } else {\n // Otherwise, create a new batch with the operation.\n var _batch = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])([operation]);\n\n undos = undos.push(_batch);\n } // Constrain the history to 100 entries for memory's sake.\n\n\n if (undos.size > 100) {\n undos = undos.takeLast(100);\n } // Clear the redos and update the history.\n\n\n editor.withoutSaving(function () {\n var redos = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var newData = data.set('undos', undos).set('redos', redos);\n editor.setData(newData);\n });\n};\n/**\n * Redo to the next value in the history.\n *\n * @param {Editor} editor\n */\n\n\nCommands$3.redo = function (editor) {\n var value = editor.value;\n var data = value.data;\n var redos = data.get('redos') || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var undos = data.get('undos') || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var batch = redos.last();\n if (!batch) return;\n editor.withoutSaving(function () {\n editor.withoutNormalizing(function () {\n // Replay the batch of operations.\n batch.forEach(function (op) {\n var _op = op,\n type = _op.type,\n properties = _op.properties; // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during redoing.\n\n if (type === 'set_selection') {\n op = op.set('properties', lodash_omit__WEBPACK_IMPORTED_MODULE_7___default()(properties, 'isFocused'));\n }\n\n editor.applyOperation(op);\n }); // Shift the next value into the undo stack.\n\n redos = redos.pop();\n undos = undos.push(batch);\n var newData = data.set('undos', undos).set('redos', redos);\n editor.setData(newData);\n });\n });\n};\n/**\n * Undo the previous operations in the history.\n *\n * @param {Editor} editor\n */\n\n\nCommands$3.undo = function (editor) {\n var value = editor.value;\n var data = value.data;\n var redos = data.get('redos') || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var undos = data.get('undos') || Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var batch = undos.last();\n if (!batch) return;\n editor.withoutSaving(function () {\n editor.withoutNormalizing(function () {\n // Replay the inverse of the previous operations.\n batch.slice().reverse().map(function (op) {\n return op.invert();\n }).forEach(function (inverse) {\n var _inverse = inverse,\n type = _inverse.type,\n properties = _inverse.properties; // When the operation mutates the selection, omit its `isFocused` value to\n // prevent the editor focus from changing during undoing.\n\n if (type === 'set_selection') {\n inverse = inverse.set('properties', lodash_omit__WEBPACK_IMPORTED_MODULE_7___default()(properties, 'isFocused'));\n }\n\n editor.applyOperation(inverse);\n }); // Shift the previous operations into the redo stack.\n\n redos = redos.push(batch);\n undos = undos.pop();\n var newData = data.set('undos', undos).set('redos', redos);\n editor.setData(newData);\n });\n });\n};\n/**\n * Apply a series of changes inside a synchronous `fn`, without merging any of\n * the new operations into previous save point in the history.\n *\n * @param {Editor} editor\n * @param {Function} fn\n */\n\n\nCommands$3.withoutMerging = function (editor, fn) {\n var value = editor.tmp.merge;\n editor.tmp.merge = false;\n fn(editor);\n editor.tmp.merge = value;\n};\n/**\n * Apply a series of changes inside a synchronous `fn`, without saving any of\n * their operations into the history.\n *\n * @param {Editor} editor\n * @param {Function} fn\n */\n\n\nCommands$3.withoutSaving = function (editor, fn) {\n var value = editor.tmp.save;\n editor.tmp.save = false;\n fn(editor);\n editor.tmp.save = value;\n};\n/**\n * Check whether to merge a new operation `o` into the previous operation `p`.\n *\n * @param {Object} o\n * @param {Object} p\n * @return {Boolean}\n */\n\n\nfunction shouldMerge(o, p) {\n if (!p) return false;\n var merge = o.type === 'set_selection' && p.type === 'set_selection' || o.type === 'insert_text' && p.type === 'insert_text' && o.offset === p.offset + p.text.length && o.path.equals(p.path) || o.type === 'remove_text' && p.type === 'remove_text' && o.offset + o.text.length === p.offset && o.path.equals(p.path);\n return merge;\n}\n\nvar Commands$4 = {};\n\nCommands$4.blur = function (editor) {\n editor.select({\n isFocused: false\n });\n};\n\nCommands$4.deselect = function (editor) {\n var range = Selection.create();\n editor.select(range);\n};\n\nCommands$4.focus = function (editor) {\n editor.select({\n isFocused: true\n });\n};\n\nCommands$4.flip = function (editor) {\n editor.command(proxy, 'flip');\n};\n\nCommands$4.moveAnchorBackward = function (editor) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n editor.command.apply(editor, [pointBackward, 'anchor'].concat(args));\n};\n\nCommands$4.moveAnchorWordBackward = function (editor) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n editor.command.apply(editor, [pointWordBackward, 'anchor'].concat(args));\n};\n\nCommands$4.moveAnchorForward = function (editor) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n editor.command.apply(editor, [pointForward, 'anchor'].concat(args));\n};\n\nCommands$4.moveAnchorWordForward = function (editor) {\n for (var _len4 = arguments.length, args = Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n editor.command.apply(editor, [pointWordForward, 'anchor'].concat(args));\n};\n\nCommands$4.moveAnchorTo = function (editor) {\n for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n editor.command.apply(editor, [proxy, 'moveAnchorTo'].concat(args));\n};\n\nCommands$4.moveAnchorToEndOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'anchor', 'end', 'block');\n};\n\nCommands$4.moveAnchorToEndOfInline = function (editor) {\n editor.command(pointEdgeObject, 'anchor', 'end', 'inline');\n};\n\nCommands$4.moveAnchorToEndOfDocument = function (editor) {\n editor.moveAnchorToEndOfNode(editor.value.document).moveToAnchor();\n};\n\nCommands$4.moveAnchorToEndOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'end', 'next', 'block');\n};\n\nCommands$4.moveAnchorToEndOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'end', 'next', 'inline');\n};\n\nCommands$4.moveAnchorToEndOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'end', 'next', 'text');\n};\n\nCommands$4.moveAnchorToEndOfNode = function (editor) {\n for (var _len6 = arguments.length, args = Array(_len6 > 1 ? _len6 - 1 : 0), _key6 = 1; _key6 < _len6; _key6++) {\n args[_key6 - 1] = arguments[_key6];\n }\n\n editor.command.apply(editor, [proxy, 'moveAnchorToEndOfNode'].concat(args));\n};\n\nCommands$4.moveAnchorToEndOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'end', 'previous', 'block');\n};\n\nCommands$4.moveAnchorToEndOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'end', 'previous', 'inline');\n};\n\nCommands$4.moveAnchorToEndOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'end', 'previous', 'text');\n};\n\nCommands$4.moveAnchorToEndOfText = function (editor) {\n editor.command(pointEdgeObject, 'anchor', 'end', 'text');\n};\n\nCommands$4.moveAnchorToStartOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'anchor', 'start', 'block');\n};\n\nCommands$4.moveAnchorToStartOfDocument = function (editor) {\n editor.moveAnchorToStartOfNode(editor.value.document).moveToAnchor();\n};\n\nCommands$4.moveAnchorToStartOfInline = function (editor) {\n editor.command(pointEdgeObject, 'anchor', 'start', 'inline');\n};\n\nCommands$4.moveAnchorToStartOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'start', 'next', 'block');\n};\n\nCommands$4.moveAnchorToStartOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'start', 'next', 'inline');\n};\n\nCommands$4.moveAnchorToStartOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'start', 'next', 'text');\n};\n\nCommands$4.moveAnchorToStartOfNode = function (editor) {\n for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\n\n editor.command.apply(editor, [proxy, 'moveAnchorToStartOfNode'].concat(args));\n};\n\nCommands$4.moveAnchorToStartOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'start', 'previous', 'block');\n};\n\nCommands$4.moveAnchorToStartOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'start', 'previous', 'inline');\n};\n\nCommands$4.moveAnchorToStartOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'anchor', 'start', 'previous', 'text');\n};\n\nCommands$4.moveAnchorToStartOfText = function (editor) {\n editor.command(pointEdgeObject, 'anchor', 'start', 'text');\n};\n\nCommands$4.moveBackward = function (editor) {\n var _editor$moveAnchorBac;\n\n for (var _len8 = arguments.length, args = Array(_len8 > 1 ? _len8 - 1 : 0), _key8 = 1; _key8 < _len8; _key8++) {\n args[_key8 - 1] = arguments[_key8];\n }\n\n (_editor$moveAnchorBac = editor.moveAnchorBackward.apply(editor, args)).moveFocusBackward.apply(_editor$moveAnchorBac, args);\n};\n\nCommands$4.moveWordBackward = function (editor) {\n for (var _len9 = arguments.length, args = Array(_len9 > 1 ? _len9 - 1 : 0), _key9 = 1; _key9 < _len9; _key9++) {\n args[_key9 - 1] = arguments[_key9];\n }\n\n editor.moveFocusWordBackward.apply(editor, args).moveToFocus();\n};\n\nCommands$4.moveEndBackward = function (editor) {\n for (var _len10 = arguments.length, args = Array(_len10 > 1 ? _len10 - 1 : 0), _key10 = 1; _key10 < _len10; _key10++) {\n args[_key10 - 1] = arguments[_key10];\n }\n\n editor.command.apply(editor, [pointBackward, 'end'].concat(args));\n};\n\nCommands$4.moveEndWordBackward = function (editor) {\n for (var _len11 = arguments.length, args = Array(_len11 > 1 ? _len11 - 1 : 0), _key11 = 1; _key11 < _len11; _key11++) {\n args[_key11 - 1] = arguments[_key11];\n }\n\n editor.command.apply(editor, [pointWordBackward, 'end'].concat(args));\n};\n\nCommands$4.moveEndForward = function (editor) {\n for (var _len12 = arguments.length, args = Array(_len12 > 1 ? _len12 - 1 : 0), _key12 = 1; _key12 < _len12; _key12++) {\n args[_key12 - 1] = arguments[_key12];\n }\n\n editor.command.apply(editor, [pointForward, 'end'].concat(args));\n};\n\nCommands$4.moveEndWordForward = function (editor) {\n for (var _len13 = arguments.length, args = Array(_len13 > 1 ? _len13 - 1 : 0), _key13 = 1; _key13 < _len13; _key13++) {\n args[_key13 - 1] = arguments[_key13];\n }\n\n editor.command.apply(editor, [pointWordForward, 'end'].concat(args));\n};\n\nCommands$4.moveEndTo = function (editor) {\n for (var _len14 = arguments.length, args = Array(_len14 > 1 ? _len14 - 1 : 0), _key14 = 1; _key14 < _len14; _key14++) {\n args[_key14 - 1] = arguments[_key14];\n }\n\n editor.command.apply(editor, [proxy, 'moveEndTo'].concat(args));\n};\n\nCommands$4.moveEndToEndOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'end', 'end', 'block');\n};\n\nCommands$4.moveEndToEndOfDocument = function (editor) {\n editor.moveEndToEndOfNode(editor.value.document).moveToEnd();\n};\n\nCommands$4.moveEndToEndOfInline = function (editor) {\n editor.command(pointEdgeObject, 'end', 'end', 'inline');\n};\n\nCommands$4.moveEndToEndOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'end', 'next', 'block');\n};\n\nCommands$4.moveEndToEndOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'end', 'next', 'inline');\n};\n\nCommands$4.moveEndToEndOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'end', 'next', 'text');\n};\n\nCommands$4.moveEndToEndOfNode = function (editor) {\n for (var _len15 = arguments.length, args = Array(_len15 > 1 ? _len15 - 1 : 0), _key15 = 1; _key15 < _len15; _key15++) {\n args[_key15 - 1] = arguments[_key15];\n }\n\n editor.command.apply(editor, [proxy, 'moveEndToEndOfNode'].concat(args));\n};\n\nCommands$4.moveEndToEndOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'end', 'previous', 'block');\n};\n\nCommands$4.moveEndToEndOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'end', 'previous', 'inline');\n};\n\nCommands$4.moveEndToEndOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'end', 'previous', 'text');\n};\n\nCommands$4.moveEndToEndOfText = function (editor) {\n editor.command(pointEdgeObject, 'end', 'end', 'text');\n};\n\nCommands$4.moveEndToStartOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'end', 'start', 'block');\n};\n\nCommands$4.moveEndToStartOfDocument = function (editor) {\n editor.moveEndToStartOfNode(editor.value.document).moveToEnd();\n};\n\nCommands$4.moveEndToStartOfInline = function (editor) {\n editor.command(pointEdgeObject, 'end', 'start', 'inline');\n};\n\nCommands$4.moveEndToStartOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'start', 'next', 'block');\n};\n\nCommands$4.moveEndToStartOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'start', 'next', 'inline');\n};\n\nCommands$4.moveEndToStartOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'start', 'next', 'text');\n};\n\nCommands$4.moveEndToStartOfNode = function (editor) {\n for (var _len16 = arguments.length, args = Array(_len16 > 1 ? _len16 - 1 : 0), _key16 = 1; _key16 < _len16; _key16++) {\n args[_key16 - 1] = arguments[_key16];\n }\n\n editor.command.apply(editor, [proxy, 'moveEndToStartOfNode'].concat(args));\n};\n\nCommands$4.moveEndToStartOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'start', 'previous', 'block');\n};\n\nCommands$4.moveEndToStartOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'start', 'previous', 'inline');\n};\n\nCommands$4.moveEndToStartOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'end', 'start', 'previous', 'text');\n};\n\nCommands$4.moveEndToStartOfText = function (editor) {\n editor.command(pointEdgeObject, 'end', 'start', 'text');\n};\n\nCommands$4.moveFocusBackward = function (editor) {\n for (var _len17 = arguments.length, args = Array(_len17 > 1 ? _len17 - 1 : 0), _key17 = 1; _key17 < _len17; _key17++) {\n args[_key17 - 1] = arguments[_key17];\n }\n\n editor.command.apply(editor, [pointBackward, 'focus'].concat(args));\n};\n\nCommands$4.moveFocusWordBackward = function (editor) {\n for (var _len18 = arguments.length, args = Array(_len18 > 1 ? _len18 - 1 : 0), _key18 = 1; _key18 < _len18; _key18++) {\n args[_key18 - 1] = arguments[_key18];\n }\n\n editor.command.apply(editor, [pointWordBackward, 'focus'].concat(args));\n};\n\nCommands$4.moveFocusForward = function (editor) {\n for (var _len19 = arguments.length, args = Array(_len19 > 1 ? _len19 - 1 : 0), _key19 = 1; _key19 < _len19; _key19++) {\n args[_key19 - 1] = arguments[_key19];\n }\n\n editor.command.apply(editor, [pointForward, 'focus'].concat(args));\n};\n\nCommands$4.moveFocusWordForward = function (editor) {\n for (var _len20 = arguments.length, args = Array(_len20 > 1 ? _len20 - 1 : 0), _key20 = 1; _key20 < _len20; _key20++) {\n args[_key20 - 1] = arguments[_key20];\n }\n\n editor.command.apply(editor, [pointWordForward, 'focus'].concat(args));\n};\n\nCommands$4.moveFocusTo = function (editor) {\n for (var _len21 = arguments.length, args = Array(_len21 > 1 ? _len21 - 1 : 0), _key21 = 1; _key21 < _len21; _key21++) {\n args[_key21 - 1] = arguments[_key21];\n }\n\n editor.command.apply(editor, [proxy, 'moveFocusTo'].concat(args));\n};\n\nCommands$4.moveFocusToEndOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'focus', 'end', 'block');\n};\n\nCommands$4.moveFocusToEndOfDocument = function (editor) {\n editor.moveFocusToEndOfNode(editor.value.document).moveToFocus();\n};\n\nCommands$4.moveFocusToEndOfInline = function (editor) {\n editor.command(pointEdgeObject, 'focus', 'end', 'inline');\n};\n\nCommands$4.moveFocusToEndOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'end', 'next', 'block');\n};\n\nCommands$4.moveFocusToEndOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'end', 'next', 'inline');\n};\n\nCommands$4.moveFocusToEndOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'end', 'next', 'text');\n};\n\nCommands$4.moveFocusToEndOfNode = function (editor) {\n for (var _len22 = arguments.length, args = Array(_len22 > 1 ? _len22 - 1 : 0), _key22 = 1; _key22 < _len22; _key22++) {\n args[_key22 - 1] = arguments[_key22];\n }\n\n editor.command.apply(editor, [proxy, 'moveFocusToEndOfNode'].concat(args));\n};\n\nCommands$4.moveFocusToEndOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'end', 'previous', 'block');\n};\n\nCommands$4.moveFocusToEndOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'end', 'previous', 'inline');\n};\n\nCommands$4.moveFocusToEndOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'end', 'previous', 'text');\n};\n\nCommands$4.moveFocusToEndOfText = function (editor) {\n editor.command(pointEdgeObject, 'focus', 'end', 'text');\n};\n\nCommands$4.moveFocusToStartOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'focus', 'start', 'block');\n};\n\nCommands$4.moveFocusToStartOfDocument = function (editor) {\n editor.moveFocusToStartOfNode(editor.value.document).moveToFocus();\n};\n\nCommands$4.moveFocusToStartOfInline = function (editor) {\n editor.command(pointEdgeObject, 'focus', 'start', 'inline');\n};\n\nCommands$4.moveFocusToStartOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'start', 'next', 'block');\n};\n\nCommands$4.moveFocusToStartOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'start', 'next', 'inline');\n};\n\nCommands$4.moveFocusToStartOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'start', 'next', 'text');\n};\n\nCommands$4.moveFocusToStartOfNode = function (editor) {\n for (var _len23 = arguments.length, args = Array(_len23 > 1 ? _len23 - 1 : 0), _key23 = 1; _key23 < _len23; _key23++) {\n args[_key23 - 1] = arguments[_key23];\n }\n\n editor.command.apply(editor, [proxy, 'moveFocusToStartOfNode'].concat(args));\n};\n\nCommands$4.moveFocusToStartOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'start', 'previous', 'block');\n};\n\nCommands$4.moveFocusToStartOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'start', 'previous', 'inline');\n};\n\nCommands$4.moveFocusToStartOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'focus', 'start', 'previous', 'text');\n};\n\nCommands$4.moveFocusToStartOfText = function (editor) {\n editor.command(pointEdgeObject, 'focus', 'start', 'text');\n};\n\nCommands$4.moveForward = function (editor) {\n var _editor$moveAnchorFor;\n\n for (var _len24 = arguments.length, args = Array(_len24 > 1 ? _len24 - 1 : 0), _key24 = 1; _key24 < _len24; _key24++) {\n args[_key24 - 1] = arguments[_key24];\n }\n\n (_editor$moveAnchorFor = editor.moveAnchorForward.apply(editor, args)).moveFocusForward.apply(_editor$moveAnchorFor, args);\n};\n\nCommands$4.moveWordForward = function (editor) {\n var _editor$moveFocusWord;\n\n for (var _len25 = arguments.length, args = Array(_len25 > 1 ? _len25 - 1 : 0), _key25 = 1; _key25 < _len25; _key25++) {\n args[_key25 - 1] = arguments[_key25];\n }\n\n (_editor$moveFocusWord = editor.moveFocusWordForward.apply(editor, args)).moveToFocus.apply(_editor$moveFocusWord, args);\n};\n\nCommands$4.moveStartBackward = function (editor) {\n for (var _len26 = arguments.length, args = Array(_len26 > 1 ? _len26 - 1 : 0), _key26 = 1; _key26 < _len26; _key26++) {\n args[_key26 - 1] = arguments[_key26];\n }\n\n editor.command.apply(editor, [pointBackward, 'start'].concat(args));\n};\n\nCommands$4.moveStartWordBackward = function (editor) {\n for (var _len27 = arguments.length, args = Array(_len27 > 1 ? _len27 - 1 : 0), _key27 = 1; _key27 < _len27; _key27++) {\n args[_key27 - 1] = arguments[_key27];\n }\n\n editor.command.apply(editor, [pointWordBackward, 'start'].concat(args));\n};\n\nCommands$4.moveStartForward = function (editor) {\n for (var _len28 = arguments.length, args = Array(_len28 > 1 ? _len28 - 1 : 0), _key28 = 1; _key28 < _len28; _key28++) {\n args[_key28 - 1] = arguments[_key28];\n }\n\n editor.command.apply(editor, [pointForward, 'start'].concat(args));\n};\n\nCommands$4.moveStartWordForward = function (editor) {\n for (var _len29 = arguments.length, args = Array(_len29 > 1 ? _len29 - 1 : 0), _key29 = 1; _key29 < _len29; _key29++) {\n args[_key29 - 1] = arguments[_key29];\n }\n\n editor.command.apply(editor, [pointWordForward, 'start'].concat(args));\n};\n\nCommands$4.moveStartTo = function (editor) {\n for (var _len30 = arguments.length, args = Array(_len30 > 1 ? _len30 - 1 : 0), _key30 = 1; _key30 < _len30; _key30++) {\n args[_key30 - 1] = arguments[_key30];\n }\n\n editor.command.apply(editor, [proxy, 'moveStartTo'].concat(args));\n};\n\nCommands$4.moveStartToEndOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'start', 'end', 'block');\n};\n\nCommands$4.moveStartToEndOfDocument = function (editor) {\n editor.moveStartToEndOfNode(editor.value.document).moveToStart();\n};\n\nCommands$4.moveStartToEndOfInline = function (editor) {\n editor.command(pointEdgeObject, 'start', 'end', 'inline');\n};\n\nCommands$4.moveStartToEndOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'end', 'next', 'block');\n};\n\nCommands$4.moveStartToEndOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'end', 'next', 'inline');\n};\n\nCommands$4.moveStartToEndOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'end', 'next', 'text');\n};\n\nCommands$4.moveStartToEndOfNode = function (editor) {\n for (var _len31 = arguments.length, args = Array(_len31 > 1 ? _len31 - 1 : 0), _key31 = 1; _key31 < _len31; _key31++) {\n args[_key31 - 1] = arguments[_key31];\n }\n\n editor.command.apply(editor, [proxy, 'moveStartToEndOfNode'].concat(args));\n};\n\nCommands$4.moveStartToEndOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'end', 'previous', 'block');\n};\n\nCommands$4.moveStartToEndOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'end', 'previous', 'inline');\n};\n\nCommands$4.moveStartToEndOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'end', 'previous', 'text');\n};\n\nCommands$4.moveStartToEndOfText = function (editor) {\n editor.command(pointEdgeObject, 'start', 'end', 'text');\n};\n\nCommands$4.moveStartToStartOfBlock = function (editor) {\n editor.command(pointEdgeObject, 'start', 'start', 'block');\n};\n\nCommands$4.moveStartToStartOfDocument = function (editor) {\n editor.moveStartToStartOfNode(editor.value.document).moveToStart();\n};\n\nCommands$4.moveStartToStartOfInline = function (editor) {\n editor.command(pointEdgeObject, 'start', 'start', 'inline');\n};\n\nCommands$4.moveStartToStartOfNextBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'start', 'next', 'block');\n};\n\nCommands$4.moveStartToStartOfNextInline = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'start', 'next', 'inline');\n};\n\nCommands$4.moveStartToStartOfNextText = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'start', 'next', 'text');\n};\n\nCommands$4.moveStartToStartOfNode = function (editor) {\n for (var _len32 = arguments.length, args = Array(_len32 > 1 ? _len32 - 1 : 0), _key32 = 1; _key32 < _len32; _key32++) {\n args[_key32 - 1] = arguments[_key32];\n }\n\n editor.command.apply(editor, [proxy, 'moveStartToStartOfNode'].concat(args));\n};\n\nCommands$4.moveStartToStartOfPreviousBlock = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'start', 'previous', 'block');\n};\n\nCommands$4.moveStartToStartOfPreviousInline = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'start', 'previous', 'inline');\n};\n\nCommands$4.moveStartToStartOfPreviousText = function (editor) {\n editor.command(pointEdgeSideObject, 'start', 'start', 'previous', 'text');\n};\n\nCommands$4.moveStartToStartOfText = function (editor) {\n editor.command(pointEdgeObject, 'start', 'start', 'text');\n};\n\nCommands$4.moveTo = function (editor) {\n for (var _len33 = arguments.length, args = Array(_len33 > 1 ? _len33 - 1 : 0), _key33 = 1; _key33 < _len33; _key33++) {\n args[_key33 - 1] = arguments[_key33];\n }\n\n editor.command.apply(editor, [proxy, 'moveTo'].concat(args));\n};\n\nCommands$4.moveToAnchor = function (editor) {\n editor.command(proxy, 'moveToAnchor');\n};\n\nCommands$4.moveToEnd = function (editor) {\n editor.command(proxy, 'moveToEnd');\n};\n\nCommands$4.moveToEndOfBlock = function (editor) {\n editor.moveEndToEndOfBlock().moveToEnd();\n};\n\nCommands$4.moveToEndOfDocument = function (editor) {\n editor.moveEndToEndOfNode(editor.value.document).moveToEnd();\n};\n\nCommands$4.moveToEndOfInline = function (editor) {\n editor.moveEndToEndOfInline().moveToEnd();\n};\n\nCommands$4.moveToEndOfNextBlock = function (editor) {\n editor.moveEndToEndOfNextBlock().moveToEnd();\n};\n\nCommands$4.moveToEndOfNextInline = function (editor) {\n editor.moveEndToEndOfNextInline().moveToEnd();\n};\n\nCommands$4.moveToEndOfNextText = function (editor) {\n editor.moveEndToEndOfNextText().moveToEnd();\n};\n\nCommands$4.moveToEndOfNode = function (editor) {\n for (var _len34 = arguments.length, args = Array(_len34 > 1 ? _len34 - 1 : 0), _key34 = 1; _key34 < _len34; _key34++) {\n args[_key34 - 1] = arguments[_key34];\n }\n\n editor.command.apply(editor, [proxy, 'moveToEndOfNode'].concat(args));\n};\n\nCommands$4.moveToEndOfPreviousBlock = function (editor) {\n editor.moveStartToEndOfPreviousBlock().moveToStart();\n};\n\nCommands$4.moveToEndOfPreviousInline = function (editor) {\n editor.moveStartToEndOfPreviousInline().moveToStart();\n};\n\nCommands$4.moveToEndOfPreviousText = function (editor) {\n editor.moveStartToEndOfPreviousText().moveToStart();\n};\n\nCommands$4.moveToEndOfText = function (editor) {\n editor.moveEndToEndOfText().moveToEnd();\n};\n\nCommands$4.moveToFocus = function (editor) {\n editor.command(proxy, 'moveToFocus');\n};\n\nCommands$4.moveToRangeOfDocument = function (editor) {\n editor.moveToRangeOfNode(editor.value.document);\n};\n\nCommands$4.moveToRangeOfNode = function (editor) {\n for (var _len35 = arguments.length, args = Array(_len35 > 1 ? _len35 - 1 : 0), _key35 = 1; _key35 < _len35; _key35++) {\n args[_key35 - 1] = arguments[_key35];\n }\n\n editor.command.apply(editor, [proxy, 'moveToRangeOfNode'].concat(args));\n};\n\nCommands$4.moveToStart = function (editor) {\n editor.command(proxy, 'moveToStart');\n};\n\nCommands$4.moveToStartOfBlock = function (editor) {\n editor.moveStartToStartOfBlock().moveToStart();\n};\n\nCommands$4.moveToStartOfDocument = function (editor) {\n editor.moveStartToStartOfNode(editor.value.document).moveToStart();\n};\n\nCommands$4.moveToStartOfInline = function (editor) {\n editor.moveStartToStartOfInline().moveToStart();\n};\n\nCommands$4.moveToStartOfNextBlock = function (editor) {\n editor.moveEndToStartOfNextBlock().moveToEnd();\n};\n\nCommands$4.moveToStartOfNextInline = function (editor) {\n editor.moveEndToStartOfNextInline().moveToEnd();\n};\n\nCommands$4.moveToStartOfNextText = function (editor) {\n editor.moveEndToStartOfNextText().moveToEnd();\n};\n\nCommands$4.moveToStartOfNode = function (editor) {\n for (var _len36 = arguments.length, args = Array(_len36 > 1 ? _len36 - 1 : 0), _key36 = 1; _key36 < _len36; _key36++) {\n args[_key36 - 1] = arguments[_key36];\n }\n\n editor.command.apply(editor, [proxy, 'moveToStartOfNode'].concat(args));\n};\n\nCommands$4.moveToStartOfPreviousBlock = function (editor) {\n editor.moveStartToStartOfPreviousBlock().moveToStart();\n};\n\nCommands$4.moveToStartOfPreviousInline = function (editor) {\n editor.moveStartToStartOfPreviousInline().moveToStart();\n};\n\nCommands$4.moveToStartOfPreviousText = function (editor) {\n editor.moveStartToStartOfPreviousText().moveToStart();\n};\n\nCommands$4.moveToStartOfText = function (editor) {\n editor.moveStartToStartOfText().moveToStart();\n};\n\nCommands$4.select = function (editor, properties) {\n var options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n properties = Selection.createProperties(properties);\n var _options$snapshot = options.snapshot,\n snapshot = _options$snapshot === undefined ? false : _options$snapshot;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var props = {};\n var next = selection.setProperties(properties);\n next = document.resolveSelection(next); // Re-compute the properties, to ensure that we get their normalized values.\n\n properties = lodash_pick__WEBPACK_IMPORTED_MODULE_5___default()(next, Object.keys(properties)); // Remove any properties that are already equal to the current selection. And\n // create a dictionary of the previous values for all of the properties that\n // are being changed, for the inverse operation.\n\n for (var k in properties) {\n if (snapshot === true || !Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"is\"])(properties[k], selection[k])) {\n props[k] = properties[k];\n }\n } // If the selection moves, clear any marks, unless the new selection\n // properties editor the marks in some way.\n\n\n if (selection.marks && !props.marks && (props.anchor || props.focus)) {\n props.marks = null;\n } // If there are no new properties to set, abort to avoid extra operations.\n\n\n if (Object.keys(props).length === 0) {\n return;\n }\n\n editor.applyOperation({\n type: 'set_selection',\n value: value,\n properties: props,\n selection: selection.toJSON()\n }, snapshot ? {\n skip: false,\n merge: false\n } : {});\n};\n\nCommands$4.setAnchor = function (editor) {\n for (var _len37 = arguments.length, args = Array(_len37 > 1 ? _len37 - 1 : 0), _key37 = 1; _key37 < _len37; _key37++) {\n args[_key37 - 1] = arguments[_key37];\n }\n\n editor.command.apply(editor, [proxy, 'setAnchor'].concat(args));\n};\n\nCommands$4.setEnd = function (editor) {\n for (var _len38 = arguments.length, args = Array(_len38 > 1 ? _len38 - 1 : 0), _key38 = 1; _key38 < _len38; _key38++) {\n args[_key38 - 1] = arguments[_key38];\n }\n\n editor.command.apply(editor, [proxy, 'setEnd'].concat(args));\n};\n\nCommands$4.setFocus = function (editor) {\n for (var _len39 = arguments.length, args = Array(_len39 > 1 ? _len39 - 1 : 0), _key39 = 1; _key39 < _len39; _key39++) {\n args[_key39 - 1] = arguments[_key39];\n }\n\n editor.command.apply(editor, [proxy, 'setFocus'].concat(args));\n};\n\nCommands$4.setStart = function (editor) {\n for (var _len40 = arguments.length, args = Array(_len40 > 1 ? _len40 - 1 : 0), _key40 = 1; _key40 < _len40; _key40++) {\n args[_key40 - 1] = arguments[_key40];\n }\n\n editor.command.apply(editor, [proxy, 'setStart'].concat(args));\n};\n\nCommands$4.snapshotSelection = function (editor) {\n editor.withoutMerging(function () {\n editor.select(editor.value.selection, {\n snapshot: true\n });\n });\n};\n/**\n * Helpers.\n */\n\n\nfunction proxy(editor, method) {\n var _editor$value$selecti;\n\n for (var _len41 = arguments.length, args = Array(_len41 > 2 ? _len41 - 2 : 0), _key41 = 2; _key41 < _len41; _key41++) {\n args[_key41 - 2] = arguments[_key41];\n }\n\n var range = (_editor$value$selecti = editor.value.selection)[method].apply(_editor$value$selecti, args);\n\n editor.select(range);\n}\n\nfunction pointEdgeObject(editor, point, edge, object) {\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var Edge = edge.slice(0, 1).toUpperCase() + edge.slice(1);\n var Object = object.slice(0, 1).toUpperCase() + object.slice(1);\n var method = 'move' + Point + 'To' + Edge + 'OfNode';\n var getNode = object === 'text' ? 'getNode' : 'getClosest' + Object;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var p = selection[point];\n var node = document[getNode](p.key);\n if (!node) return;\n editor[method](node);\n}\n\nfunction pointEdgeSideObject(editor, point, edge, side, object) {\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var Edge = edge.slice(0, 1).toUpperCase() + edge.slice(1);\n var Side = side.slice(0, 1).toUpperCase() + side.slice(1);\n var Object = object.slice(0, 1).toUpperCase() + object.slice(1);\n var method = 'move' + Point + 'To' + Edge + 'OfNode';\n var getNode = object === 'text' ? 'getNode' : 'getClosest' + Object;\n var getDirectionNode = 'get' + Side + Object;\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var p = selection[point];\n var node = document[getNode](p.key);\n if (!node) return;\n var target = document[getDirectionNode](node.key);\n if (!target) return;\n editor[method](target);\n}\n\nfunction pointBackward(editor, point) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (n === 0) return;\n if (n < 0) return pointForward(editor, point, -n);\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var p = selection[point];\n var hasVoidParent = document.hasVoidParent(p.path, editor); // what is this?\n\n if (!hasVoidParent && p.offset - n >= 0) {\n var range = selection['move' + Point + 'Backward'](n);\n editor.select(range);\n return;\n }\n\n var previous = document.getPreviousText(p.path);\n if (!previous) return;\n var block = document.getClosestBlock(p.path);\n var isInBlock = block.hasNode(previous.key);\n var isPreviousInVoid = previous && document.hasVoidParent(previous.key, editor);\n editor['move' + Point + 'ToEndOfNode'](previous); // when is this called?\n\n if (!hasVoidParent && !isPreviousInVoid && isInBlock) {\n var _range = editor.value.selection['move' + Point + 'Backward'](n);\n\n editor.select(_range);\n }\n}\n\nfunction pointForward(editor, point) {\n var n = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;\n if (n === 0) return;\n if (n < 0) return pointBackward(editor, point, -n);\n var Point = point.slice(0, 1).toUpperCase() + point.slice(1);\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var p = selection[point];\n var text = document.getNode(p.path);\n var hasVoidParent = document.hasVoidParent(p.path, editor); // what is this?\n\n if (!hasVoidParent && p.offset + n <= text.text.length) {\n var range = selection['move' + Point + 'Forward'](n);\n editor.select(range);\n return;\n }\n\n var next = document.getNextText(p.path);\n if (!next) return;\n var block = document.getClosestBlock(p.path);\n var isInBlock = block.hasNode(next.key);\n var isNextInVoid = document.hasVoidParent(next.key, editor);\n editor['move' + Point + 'ToStartOfNode'](next); // when is this called?\n\n if (!hasVoidParent && !isNextInVoid && isInBlock) {\n var _range2 = editor.value.selection['move' + Point + 'Forward'](n);\n\n editor.select(_range2);\n }\n}\n\nfunction pointWordBackward(editor, pointName) {\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var point = selection[pointName];\n var block = document.getClosestBlock(point.key);\n var offset = block.getOffset(point.key);\n var o = offset + point.offset;\n var text = block.text;\n var n = TextUtils.getWordOffsetBackward(text, o);\n editor.command(pointBackward, pointName, n > 0 ? n : 1);\n}\n\nfunction pointWordForward(editor, pointName) {\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n var point = selection[pointName];\n var block = document.getClosestBlock(point.key);\n var offset = block.getOffset(point.key);\n var o = offset + point.offset;\n var text = block.text;\n var n = TextUtils.getWordOffsetForward(text, o);\n editor.command(pointForward, pointName, n > 0 ? n : 1);\n}\n/**\n * Commands.\n *\n * @type {Object}\n */\n\n\nvar Commands$5 = {};\n/**\n * Set `properties` on the value.\n *\n * @param {Editor} editor\n * @param {Object|Value} properties\n */\n\nCommands$5.setData = function (editor) {\n var data = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var properties = Value.createProperties({\n data: data\n });\n var value = editor.value;\n editor.applyOperation({\n type: 'set_value',\n properties: properties,\n value: value\n });\n};\n/**\n * Set `properties` on the value.\n *\n * @param {Editor} editor\n * @param {Object|Value} properties\n */\n\n\nCommands$5.setDecorations = function (editor) {\n var decorations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var properties = Value.createProperties({\n decorations: decorations\n });\n var value = editor.value;\n editor.applyOperation({\n type: 'set_value',\n properties: properties,\n value: value\n });\n};\n/**\n * A plugin that adds a set of queries to the editor.\n *\n * @param {Object} queries\n * @return {Object}\n */\n\n\nfunction QueriesPlugin() {\n var queries = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n /**\n * On construct, register all the queries.\n *\n * @param {Editor} editor\n * @param {Function} next\n */\n\n function onConstruct(editor, next) {\n for (var query in queries) {\n editor.registerQuery(query);\n }\n\n return next();\n }\n /**\n * On query, if it exists in our list of queries, call it.\n *\n * @param {Object} query\n * @param {Editor} editor\n * @param {Function} next\n */\n\n\n function onQuery(query, editor, next) {\n var type = query.type,\n args = query.args;\n var fn = queries[type];\n if (!fn) return next();\n var ret = fn.apply(undefined, [editor].concat(toConsumableArray(args)));\n return ret === undefined ? next() : ret;\n }\n /**\n * Return the plugin.\n *\n * @type {Object}\n */\n\n\n return {\n onConstruct: onConstruct,\n onQuery: onQuery\n };\n}\n/**\n * Define a Slate error.\n *\n * @type {SlateError}\n */\n\n\nvar SlateError = function (_Error) {\n inherits(SlateError, _Error);\n\n function SlateError(code) {\n var attrs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, SlateError);\n\n var _this = possibleConstructorReturn(this, (SlateError.__proto__ || Object.getPrototypeOf(SlateError)).call(this, code));\n\n _this.code = code;\n\n for (var key in attrs) {\n _this[key] = attrs[key];\n }\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_this, _this.constructor);\n } else {\n _this.stack = new Error().stack;\n }\n\n return _this;\n }\n\n return SlateError;\n}(Error);\n/**\n * Create a plugin from a `schema` definition.\n *\n * @param {Object} schema\n * @return {Object}\n */\n\n\nfunction SchemaPlugin(schema) {\n var rules = schema.rules,\n document = schema.document,\n blocks = schema.blocks,\n inlines = schema.inlines,\n marks = schema.marks;\n var schemaRules = [];\n\n if (rules) {\n schemaRules = schemaRules.concat(rules);\n }\n\n if (document) {\n schemaRules.push(_extends({\n match: [{\n object: 'document'\n }]\n }, document));\n }\n\n if (blocks) {\n for (var key in blocks) {\n schemaRules.push(_extends({\n match: [{\n object: 'block',\n type: key\n }]\n }, blocks[key]));\n }\n }\n\n if (inlines) {\n for (var _key in inlines) {\n schemaRules.push(_extends({\n match: [{\n object: 'inline',\n type: _key\n }]\n }, inlines[_key]));\n }\n }\n\n if (marks) {\n for (var _key2 in marks) {\n schemaRules.push(_extends({\n match: [{\n object: 'mark',\n type: _key2\n }]\n }, marks[_key2]));\n }\n }\n /**\n * Check if a `mark` is void based on the schema rules.\n *\n * @param {Editor} editor\n * @param {Mark} mark\n * @return {Boolean}\n */\n\n\n function isAtomic(editor, mark) {\n var rule = schemaRules.find(function (r) {\n return 'isAtomic' in r && testRules(mark, r.match);\n });\n return rule && rule.isAtomic;\n }\n /**\n * Check if a `node` is void based on the schema rules.\n *\n * @param {Editor} editor\n * @param {Node} node\n * @return {Boolean}\n */\n\n\n function isVoid(editor, node) {\n var rule = schemaRules.find(function (r) {\n return 'isVoid' in r && testRules(node, r.match);\n });\n return rule && rule.isVoid;\n }\n /**\n * Normalize a `node` with the schema rules, returning a function that will\n * fix the invalid node, or void if the node is valid.\n *\n * @param {Node} node\n * @param {Editor} editor\n * @param {Function} next\n * @return {Function|Void}\n */\n\n\n function normalizeNode(node, editor, next) {\n var error = validateNode(node, editor, function () {});\n if (!error) return next();\n return function () {\n var rule = error.rule;\n var size = editor.operations.size; // First run the user-provided `normalize` function if one exists...\n\n if (rule.normalize) {\n rule.normalize(editor, error);\n } // If the `normalize` function did not add any operations to the editor\n // object, it can't have normalized, so run the default one.\n\n\n if (editor.operations.size === size) {\n defaultNormalize(editor, error);\n }\n };\n }\n /**\n * Validate a `node` with the schema rules, returning a `SlateError` if it's\n * invalid.\n *\n * @param {Node} node\n * @param {Editor} editor\n * @param {Function} next\n * @return {Error|Void}\n */\n\n\n function validateNode(node, editor, next) {\n var matches = schemaRules.filter(function (r) {\n return testRules(node, r.match);\n });\n var failure = validateRules(node, matches, schemaRules, {\n every: true\n });\n if (!failure) return next();\n var error = new SlateError(failure.code, failure);\n return error;\n }\n /**\n * On schema-related queries, respond if we can.\n *\n * @param {Object} query\n * @param {Function} next\n */\n\n\n var queries = QueriesPlugin({\n isAtomic: isAtomic,\n isVoid: isVoid\n });\n /**\n * Return the plugins.\n *\n * @type {Object}\n */\n\n return [{\n normalizeNode: normalizeNode,\n validateNode: validateNode\n }, queries];\n}\n/**\n * Normalize an invalid value with `error` with default remedies.\n *\n * @param {Editor} editor\n * @param {SlateError} error\n */\n\n\nfunction defaultNormalize(editor, error) {\n var code = error.code,\n node = error.node,\n child = error.child,\n next = error.next,\n previous = error.previous,\n key = error.key,\n mark = error.mark;\n\n switch (code) {\n case 'child_max_invalid':\n case 'child_object_invalid':\n case 'child_type_invalid':\n case 'child_unknown':\n case 'first_child_object_invalid':\n case 'first_child_type_invalid':\n case 'last_child_object_invalid':\n case 'last_child_type_invalid':\n {\n return child.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? editor.removeNodeByKey(node.key) : editor.removeNodeByKey(child.key);\n }\n\n case 'previous_sibling_object_invalid':\n case 'previous_sibling_type_invalid':\n {\n return previous.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? editor.removeNodeByKey(node.key) : editor.removeNodeByKey(previous.key);\n }\n\n case 'next_sibling_object_invalid':\n case 'next_sibling_type_invalid':\n {\n return next.object === 'text' && node.object === 'block' && node.nodes.size === 1 ? editor.removeNodeByKey(node.key) : editor.removeNodeByKey(next.key);\n }\n\n case 'child_min_invalid':\n case 'node_text_invalid':\n case 'parent_object_invalid':\n case 'parent_type_invalid':\n {\n return node.object === 'document' ? node.nodes.forEach(function (n) {\n return editor.removeNodeByKey(n.key);\n }) : editor.removeNodeByKey(node.key);\n }\n\n case 'node_data_invalid':\n {\n return node.data.get(key) === undefined && node.object !== 'document' ? editor.removeNodeByKey(node.key) : editor.setNodeByKey(node.key, {\n data: node.data.delete(key)\n });\n }\n\n case 'node_mark_invalid':\n {\n return node.getTexts().forEach(function (t) {\n return editor.removeMarkByKey(t.key, 0, t.text.length, mark);\n });\n }\n\n default:\n {\n return editor.removeNodeByKey(node.key);\n }\n }\n}\n/**\n * Check that an `object` matches one of a set of `rules`.\n *\n * @param {Mixed} object\n * @param {Object|Array} rules\n * @return {Boolean}\n */\n\n\nfunction testRules(object, rules) {\n var error = validateRules(object, rules);\n return !error;\n}\n/**\n * Validate that a `object` matches a `rule` object or array.\n *\n * @param {Mixed} object\n * @param {Object|Array} rule\n * @param {Array|Void} rules\n * @return {Error|Void}\n */\n\n\nfunction validateRules(object, rule, rules) {\n var options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n var _options$every = options.every,\n every = _options$every === undefined ? false : _options$every;\n\n if (Array.isArray(rule)) {\n var array = rule.length ? rule : [{}];\n var first = void 0;\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = array[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var r = _step.value;\n\n var _error = validateRules(object, r, rules);\n\n first = first || _error;\n if (every && _error) return _error;\n if (!every && !_error) return;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n\n return first;\n }\n\n var error = validateObject(object, rule) || validateType(object, rule) || validateData(object, rule) || validateMarks(object, rule) || validateText(object, rule) || validateFirst(object, rule) || validateLast(object, rule) || validateNodes(object, rule, rules);\n return error;\n}\n\nfunction validateObject(node, rule) {\n if (rule.object == null) return;\n if (rule.object === node.object) return;\n if (typeof rule.object === 'function' && rule.object(node.object)) return;\n return fail('node_object_invalid', {\n rule: rule,\n node: node\n });\n}\n\nfunction validateType(node, rule) {\n if (rule.type == null) return;\n if (rule.type === node.type) return;\n if (typeof rule.type === 'function' && rule.type(node.type)) return;\n return fail('node_type_invalid', {\n rule: rule,\n node: node\n });\n}\n\nfunction validateData(node, rule) {\n if (rule.data == null) return;\n if (node.data == null) return;\n\n if (typeof rule.data === 'function') {\n if (rule.data(node.data)) return;\n return fail('node_data_invalid', {\n rule: rule,\n node: node\n });\n }\n\n for (var key in rule.data) {\n var fn = rule.data[key];\n var value = node.data && node.data.get(key);\n var valid = typeof fn === 'function' ? fn(value) : fn === value;\n if (valid) continue;\n return fail('node_data_invalid', {\n rule: rule,\n node: node,\n key: key,\n value: value\n });\n }\n}\n\nfunction validateMarks(node, rule) {\n if (rule.marks == null) return;\n var marks = node.getMarks().toArray();\n\n var _loop = function _loop(mark) {\n var valid = rule.marks.some(function (def) {\n return typeof def.type === 'function' ? def.type(mark.type) : def.type === mark.type;\n });\n if (valid) return 'continue';\n return {\n v: fail('node_mark_invalid', {\n rule: rule,\n node: node,\n mark: mark\n })\n };\n };\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = marks[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var mark = _step2.value;\n\n var _ret = _loop(mark);\n\n switch (_ret) {\n case 'continue':\n continue;\n\n default:\n if ((typeof _ret === 'undefined' ? 'undefined' : _typeof(_ret)) === \"object\") return _ret.v;\n }\n }\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n}\n\nfunction validateText(node, rule) {\n if (rule.text == null) return;\n var text = node.text;\n var valid = typeof rule.text === 'function' ? rule.text(text) : rule.text.test(text);\n if (valid) return;\n return fail('node_text_invalid', {\n rule: rule,\n node: node,\n text: text\n });\n}\n\nfunction validateFirst(node, rule) {\n if (rule.first == null) return;\n var first = node.nodes.first();\n if (!first) return;\n var error = validateRules(first, rule.first);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = first;\n error.code = error.code.replace('node_', 'first_child_');\n return error;\n}\n\nfunction validateLast(node, rule) {\n if (rule.last == null) return;\n var last = node.nodes.last();\n if (!last) return;\n var error = validateRules(last, rule.last);\n if (!error) return;\n error.rule = rule;\n error.node = node;\n error.child = last;\n error.code = error.code.replace('node_', 'last_child_');\n return error;\n}\n\nfunction validateNodes(node, rule) {\n var rules = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];\n if (node.nodes == null) return;\n var children = node.nodes;\n var defs = rule.nodes != null ? rule.nodes.slice() : [];\n var count = 0;\n var lastCount = 0;\n var min = null;\n var index = -1;\n var def = null;\n var max = null;\n var child = null;\n var previous = null;\n var next = null;\n\n function nextDef() {\n if (defs.length === 0) return false;\n def = defs.shift();\n lastCount = count;\n count = 0;\n min = def.min || null;\n max = def.max || null;\n return true;\n }\n\n function nextChild() {\n index += 1;\n previous = index ? children.get(index - 1) : null;\n child = children.get(index);\n next = children.get(index + 1);\n if (!child) return false;\n lastCount = count;\n count += 1;\n return true;\n }\n\n function rewind() {\n if (index > 0) {\n index -= 1;\n count = lastCount;\n }\n }\n\n if (rule.nodes != null) {\n nextDef();\n }\n\n while (nextChild()) {\n var err = validateParent(node, child, rules) || validatePrevious(node, child, previous, index, rules) || validateNext(node, child, next, index, rules);\n if (err) return err;\n\n if (rule.nodes != null) {\n if (!def) {\n return fail('child_unknown', {\n rule: rule,\n node: node,\n child: child,\n index: index\n });\n }\n\n if (def.match) {\n var error = validateRules(child, def.match);\n\n if (error) {\n // Since we want to report overflow on last matching child we don't\n // immediately check for count > max, but instead do so once we find\n // a child that doesn't match.\n if (max != null && count - 1 > max) {\n rewind();\n return fail('child_max_invalid', {\n rule: rule,\n node: node,\n index: index,\n child: children.get(index),\n count: count,\n limit: max\n });\n }\n\n var lastMin = min; // If there are more groups after this one then child might actually\n // be valid.\n\n if (nextDef()) {\n // If we've already satisfied the minimum for the current group,\n // then we can rewind and proceed to the next group.\n if (lastCount - 1 >= lastMin) {\n index -= 1;\n continue;\n } // Otherwise we know that current value is underflowing. There are\n // three possible causes for this...\n // 1. There might just not be enough elements for current group, and\n // current child is in fact the first of the next group. If so, the\n // next def will not report errors, in which case we can rewind and\n // report an minimum error.\n\n\n if (validateRules(child, def.match) == null) {\n rewind();\n return fail('child_min_invalid', {\n rule: rule,\n node: node,\n index: index,\n count: lastCount - 1,\n limit: lastMin\n });\n } // 2. The current group is underflowing, but there is also an\n // invalid child before the next group.\n // 3. Or the current group is not underflowing but it appears so\n // because there's an invalid child between its members.\n // It's either the second or third case. If it's the second then\n // we could report an underflow, but presence of an invalid child\n // is arguably more important, so we report it first. It also lets\n // us avoid checking for which case exactly is it.\n\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.code = error.code.replace('node_', 'child_');\n return error;\n } // Otherwise either we exhausted the last group, in which case it's\n // an unknown child, ...\n\n\n if (max != null && count > max) {\n return fail('child_unknown', {\n rule: rule,\n node: node,\n child: child,\n index: index\n });\n } // ... or it's an invalid child for the last group.\n\n\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.code = error.code.replace('node_', 'child_');\n return error;\n }\n }\n }\n } // Since we want to report overflow on last matching child we don't\n // immediately check for count > max, but do so after processing all nodes.\n\n\n if (max != null && count > max) {\n return fail('child_max_invalid', {\n rule: rule,\n node: node,\n index: index - 1,\n count: count,\n child: children.get(index - 1),\n limit: max\n });\n }\n\n if (rule.nodes != null) {\n do {\n if (count < min) {\n return fail('child_min_invalid', {\n rule: rule,\n node: node,\n index: index,\n count: count,\n limit: min\n });\n }\n } while (nextDef());\n }\n}\n\nfunction validateParent(node, child, rules) {\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = rules[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var rule = _step3.value;\n if (rule.parent == null) continue;\n if (!testRules(child, rule.match)) continue;\n var error = validateRules(node, rule.parent);\n if (!error) continue;\n error.rule = rule;\n error.parent = node;\n error.node = child;\n error.code = error.code.replace('node_', 'parent_');\n return error;\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n}\n\nfunction validatePrevious(node, child, previous, index, rules) {\n if (!previous) return;\n var _iteratorNormalCompletion4 = true;\n var _didIteratorError4 = false;\n var _iteratorError4 = undefined;\n\n try {\n for (var _iterator4 = rules[Symbol.iterator](), _step4; !(_iteratorNormalCompletion4 = (_step4 = _iterator4.next()).done); _iteratorNormalCompletion4 = true) {\n var rule = _step4.value;\n if (rule.previous == null) continue;\n if (!testRules(child, rule.match)) continue;\n var error = validateRules(previous, rule.previous);\n if (!error) continue;\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.previous = previous;\n error.code = error.code.replace('node_', 'previous_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError4 = true;\n _iteratorError4 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion4 && _iterator4.return) {\n _iterator4.return();\n }\n } finally {\n if (_didIteratorError4) {\n throw _iteratorError4;\n }\n }\n }\n}\n\nfunction validateNext(node, child, next, index, rules) {\n if (!next) return;\n var _iteratorNormalCompletion5 = true;\n var _didIteratorError5 = false;\n var _iteratorError5 = undefined;\n\n try {\n for (var _iterator5 = rules[Symbol.iterator](), _step5; !(_iteratorNormalCompletion5 = (_step5 = _iterator5.next()).done); _iteratorNormalCompletion5 = true) {\n var rule = _step5.value;\n if (rule.next == null) continue;\n if (!testRules(child, rule.match)) continue;\n var error = validateRules(next, rule.next);\n if (!error) continue;\n error.rule = rule;\n error.node = node;\n error.child = child;\n error.index = index;\n error.next = next;\n error.code = error.code.replace('node_', 'next_sibling_');\n return error;\n }\n } catch (err) {\n _didIteratorError5 = true;\n _iteratorError5 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion5 && _iterator5.return) {\n _iterator5.return();\n }\n } finally {\n if (_didIteratorError5) {\n throw _iteratorError5;\n }\n }\n }\n}\n/**\n * Create an interim failure object with `code` and `attrs`.\n *\n * @param {String} code\n * @param {Object} attrs\n * @return {Object}\n */\n\n\nfunction fail(code, attrs) {\n return _extends({\n code: code\n }, attrs);\n}\n/**\n * Ensure that an expanded selection is deleted first using the `editor.delete`\n * command. This guarantees that it uses the proper semantic \"intent\" instead of\n * using `deleteAtRange` under the covers and skipping `delete`.\n *\n * @param {Editor}\n */\n\n\nfunction deleteExpanded(editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n }\n}\n/**\n * Commands.\n *\n * @type {Object}\n */\n\n\nvar Commands$6 = {};\n/**\n * Add a `mark` to the characters in the current selection.\n *\n * @param {Editor} editor\n * @param {Mark} mark\n */\n\nCommands$6.addMark = function (editor, mark) {\n mark = Mark.create(mark);\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n\n if (selection.isExpanded) {\n editor.addMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.add(mark);\n var sel = selection.set('marks', marks);\n editor.select(sel);\n } else {\n var _marks = document.getActiveMarksAtRange(selection).add(mark);\n\n var _sel = selection.set('marks', _marks);\n\n editor.select(_sel);\n }\n};\n/**\n * Add a list of `marks` to the characters in the current selection.\n *\n * @param {Editor} editor\n * @param {Set|Array} marks\n */\n\n\nCommands$6.addMarks = function (editor, marks) {\n marks.forEach(function (mark) {\n return editor.addMark(mark);\n });\n};\n/**\n * Delete at the current selection.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.delete = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n editor.deleteAtRange(selection); // COMPAT: Ensure that the selection is collapsed, because in certain cases\n // when deleting across inline nodes, when splitting the inline node the end\n // point of the selection will end up after the split point.\n\n editor.moveToFocus();\n};\n/**\n * Delete backward `n` characters.\n *\n * @param {Editor} editor\n * @param {Number} n (optional)\n */\n\n\nCommands$6.deleteBackward = function (editor) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteBackwardAtRange(selection, n);\n }\n};\n/**\n * Delete backward one character.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.deleteCharBackward = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteCharBackwardAtRange(selection);\n }\n};\n/**\n * Delete backward one line.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.deleteLineBackward = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteLineBackwardAtRange(selection);\n }\n};\n/**\n * Delete backward one word.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.deleteWordBackward = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteWordBackwardAtRange(selection);\n }\n};\n/**\n * Delete backward `n` characters.\n *\n * @param {Editor} editor\n * @param {Number} n (optional)\n */\n\n\nCommands$6.deleteForward = function (editor) {\n var n = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteForwardAtRange(selection, n);\n }\n};\n/**\n * Delete backward one character.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.deleteCharForward = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteCharForwardAtRange(selection);\n }\n};\n/**\n * Delete backward one line.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.deleteLineForward = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteLineForwardAtRange(selection);\n }\n};\n/**\n * Delete backward one word.\n *\n * @param {Editor} editor\n */\n\n\nCommands$6.deleteWordForward = function (editor) {\n var value = editor.value;\n var selection = value.selection;\n\n if (selection.isExpanded) {\n editor.delete();\n } else {\n editor.deleteWordForwardAtRange(selection);\n }\n};\n/**\n * Insert a `block` at the current selection.\n *\n * @param {Editor} editor\n * @param {String|Object|Block} block\n */\n\n\nCommands$6.insertBlock = function (editor, block) {\n deleteExpanded(editor);\n block = Block.create(block);\n var value = editor.value;\n var selection = value.selection;\n editor.insertBlockAtRange(selection, block); // If the node was successfully inserted, update the selection.\n\n var node = editor.value.document.getNode(block.key);\n if (node) editor.moveToEndOfNode(node);\n};\n/**\n * Insert a `fragment` at the current selection.\n *\n * @param {Editor} editor\n * @param {Document} fragment\n */\n\n\nCommands$6.insertFragment = function (editor, fragment) {\n if (!fragment.nodes.size) return;\n deleteExpanded(editor);\n var value = editor.value;\n var _value = value,\n document = _value.document,\n selection = _value.selection;\n var start = selection.start,\n end = selection.end;\n var _value2 = value,\n startText = _value2.startText,\n endText = _value2.endText,\n startInline = _value2.startInline;\n var lastText = fragment.getLastText();\n var lastInline = fragment.getClosestInline(lastText.key);\n var lastBlock = fragment.getClosestBlock(lastText.key);\n var firstChild = fragment.nodes.first();\n var lastChild = fragment.nodes.last();\n var keys = document.getTexts().map(function (text) {\n return text.key;\n });\n var isAppending = !startInline || start.isAtStartOfNode(startText) || end.isAtStartOfNode(startText) || start.isAtEndOfNode(endText) || end.isAtEndOfNode(endText);\n var isInserting = firstChild.hasBlockChildren() || lastChild.hasBlockChildren();\n editor.insertFragmentAtRange(selection, fragment);\n value = editor.value;\n document = value.document;\n var newTexts = document.getTexts().filter(function (n) {\n return !keys.includes(n.key);\n });\n var newText = isAppending ? newTexts.last() : newTexts.takeLast(2).first();\n\n if (newText && (lastInline || isInserting)) {\n editor.moveToEndOfNode(newText);\n } else if (newText) {\n editor.moveToStartOfNode(newText).moveForward(lastBlock.text.length);\n }\n};\n/**\n * Insert an `inline` at the current selection.\n *\n * @param {Editor} editor\n * @param {String|Object|Inline} inline\n */\n\n\nCommands$6.insertInline = function (editor, inline) {\n deleteExpanded(editor);\n inline = Inline.create(inline);\n var value = editor.value;\n var selection = value.selection;\n editor.insertInlineAtRange(selection, inline); // If the node was successfully inserted, update the selection.\n\n var node = editor.value.document.getNode(inline.key);\n if (node) editor.moveToEndOfNode(node);\n};\n/**\n * Insert a string of `text` with optional `marks` at the current selection.\n *\n * @param {Editor} editor\n * @param {String} text\n * @param {Set} marks (optional)\n */\n\n\nCommands$6.insertText = function (editor, text, marks) {\n deleteExpanded(editor);\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n marks = marks || selection.marks || document.getInsertMarksAtRange(selection);\n editor.insertTextAtRange(selection, text, marks); // If the text was successfully inserted, and the selection had marks on it,\n // unset the selection's marks.\n\n if (selection.marks && document !== editor.value.document) {\n editor.select({\n marks: null\n });\n }\n};\n/**\n * Remove a `mark` from the characters in the current selection.\n *\n * @param {Editor} editor\n * @param {Mark} mark\n */\n\n\nCommands$6.removeMark = function (editor, mark) {\n mark = Mark.create(mark);\n var value = editor.value;\n var document = value.document,\n selection = value.selection;\n\n if (selection.isExpanded) {\n editor.removeMarkAtRange(selection, mark);\n } else if (selection.marks) {\n var marks = selection.marks.remove(mark);\n var sel = selection.set('marks', marks);\n editor.select(sel);\n } else {\n var _marks2 = document.getActiveMarksAtRange(selection).remove(mark);\n\n var _sel2 = selection.set('marks', _marks2);\n\n editor.select(_sel2);\n }\n};\n/**\n * Replace an `oldMark` with a `newMark` in the characters in the current selection.\n *\n * @param {Editor} editor\n * @param {Mark} oldMark\n * @param {Mark} newMark\n */\n\n\nCommands$6.replaceMark = function (editor, oldMark, newMark) {\n editor.removeMark(oldMark);\n editor.addMark(newMark);\n};\n/**\n * Set the `properties` of block nodes.\n *\n * @param {Editor} editor\n * @param {Object|String} properties\n */\n\n\nCommands$6.setBlocks = function (editor, properties) {\n var value = editor.value;\n var selection = value.selection;\n editor.setBlocksAtRange(selection, properties);\n};\n/**\n * Set the `properties` of inline nodes.\n *\n * @param {Editor} editor\n * @param {Object|String} properties\n */\n\n\nCommands$6.setInlines = function (editor, properties) {\n var value = editor.value;\n var selection = value.selection;\n editor.setInlinesAtRange(selection, properties);\n};\n/**\n * Split the block node at the current selection, to optional `depth`.\n *\n * @param {Editor} editor\n * @param {Number} depth (optional)\n */\n\n\nCommands$6.splitBlock = function (editor) {\n var depth = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n deleteExpanded(editor);\n var value = editor.value;\n var selection = value.selection,\n document = value.document;\n var marks = selection.marks || document.getInsertMarksAtRange(selection);\n editor.splitBlockAtRange(selection, depth).moveToEnd();\n\n if (marks && marks.size !== 0) {\n editor.select({\n marks: marks\n });\n }\n};\n/**\n * Split the inline nodes to optional `height`.\n *\n * @param {Editor} editor\n * @param {Number} height (optional)\n */\n\n\nCommands$6.splitInline = function (editor, height) {\n deleteExpanded(editor);\n var value = editor.value;\n var selection = value.selection;\n editor.splitInlineAtRange(selection, height);\n};\n/**\n * Add or remove a `mark` from the characters in the current selection,\n * depending on whether it's already there.\n *\n * @param {Editor} editor\n * @param {Mark} mark\n */\n\n\nCommands$6.toggleMark = function (editor, mark) {\n mark = Mark.create(mark);\n var value = editor.value;\n var exists = value.activeMarks.has(mark);\n\n if (exists) {\n editor.removeMark(mark);\n } else {\n editor.addMark(mark);\n }\n};\n/**\n * Unwrap nodes from a block with `properties`.\n *\n * @param {Editor} editor\n * @param {String|Object} properties\n */\n\n\nCommands$6.unwrapBlock = function (editor, properties) {\n var value = editor.value;\n var selection = value.selection;\n editor.unwrapBlockAtRange(selection, properties);\n};\n/**\n * Unwrap nodes from an inline with `properties`.\n *\n * @param {Editor} editor\n * @param {String|Object} properties\n */\n\n\nCommands$6.unwrapInline = function (editor, properties) {\n var value = editor.value;\n var selection = value.selection;\n editor.unwrapInlineAtRange(selection, properties);\n};\n/**\n * Wrap nodes in a new `block`.\n *\n * @param {Editor} editor\n * @param {Block|Object|String} block\n */\n\n\nCommands$6.wrapBlock = function (editor, block) {\n var value = editor.value;\n var selection = value.selection;\n editor.wrapBlockAtRange(selection, block);\n};\n/**\n * Wrap nodes in a new `inline`.\n *\n * @param {Editor} editor\n * @param {Inline|Object|String} inline\n */\n\n\nCommands$6.wrapInline = function (editor, inline) {\n var value = editor.value;\n var selection = value.selection;\n editor.wrapInlineAtRange(selection, inline);\n};\n/**\n * Wrap the current selection with prefix/suffix.\n *\n * @param {Editor} editor\n * @param {String} prefix\n * @param {String} suffix\n */\n\n\nCommands$6.wrapText = function (editor, prefix) {\n var suffix = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : prefix;\n var value = editor.value;\n var selection = value.selection;\n editor.wrapTextAtRange(selection, prefix, suffix); // If the selection was collapsed, it will have moved the start offset too.\n\n if (selection.isCollapsed) {\n editor.moveStartBackward(prefix.length);\n } // Adding the suffix will have pushed the end of the selection further on, so\n // we need to move it back to account for this.\n\n\n editor.moveEndBackward(suffix.length); // There's a chance that the selection points moved \"through\" each other,\n // resulting in a now-incorrect selection direction.\n\n if (selection.isForward !== editor.value.selection.isForward) {\n editor.flip();\n }\n};\n/**\n * A plugin that defines the core Slate logic.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n\nfunction CorePlugin() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var _options$plugins = options.plugins,\n plugins = _options$plugins === undefined ? [] : _options$plugins;\n /**\n * The core Slate commands.\n *\n * @type {Object}\n */\n\n var commands = CommandsPlugin(_extends({}, Commands$1, Commands$2, Commands$3, Commands$4, Commands$5, Commands$6));\n /**\n * The core Slate queries.\n *\n * @type {Object}\n */\n\n var queries = QueriesPlugin({\n isAtomic: function isAtomic() {\n return false;\n },\n isVoid: function isVoid() {\n return false;\n }\n });\n /**\n * The core Slate schema.\n *\n * @type {Object}\n */\n\n var schema = SchemaPlugin({\n rules: [// Only allow block nodes in documents.\n {\n match: {\n object: 'document'\n },\n nodes: [{\n match: {\n object: 'block'\n }\n }]\n }, // Only allow block nodes or inline and text nodes in blocks.\n {\n match: {\n object: 'block',\n first: {\n object: 'block'\n }\n },\n nodes: [{\n match: {\n object: 'block'\n }\n }]\n }, {\n match: {\n object: 'block',\n first: [{\n object: 'inline'\n }, {\n object: 'text'\n }]\n },\n nodes: [{\n match: [{\n object: 'inline'\n }, {\n object: 'text'\n }]\n }]\n }, // Only allow inline and text nodes in inlines.\n {\n match: {\n object: 'inline'\n },\n nodes: [{\n match: [{\n object: 'inline'\n }, {\n object: 'text'\n }]\n }]\n }, // Ensure that block and inline nodes have at least one text child.\n {\n match: [{\n object: 'block'\n }, {\n object: 'inline'\n }],\n nodes: [{\n min: 1\n }],\n normalize: function normalize(editor, error) {\n var code = error.code,\n node = error.node;\n\n if (code === 'child_min_invalid' && node.nodes.isEmpty()) {\n editor.insertNodeByKey(node.key, 0, Text.create());\n }\n }\n }, // Ensure that inline nodes are surrounded by text nodes.\n {\n match: {\n object: 'block'\n },\n first: [{\n object: 'block'\n }, {\n object: 'text'\n }],\n last: [{\n object: 'block'\n }, {\n object: 'text'\n }],\n normalize: function normalize(editor, error) {\n var code = error.code,\n node = error.node;\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else {\n return;\n }\n\n editor.insertNodeByKey(node.key, i, text);\n }\n }, {\n match: {\n object: 'inline'\n },\n first: [{\n object: 'block'\n }, {\n object: 'text'\n }],\n last: [{\n object: 'block'\n }, {\n object: 'text'\n }],\n previous: [{\n object: 'block'\n }, {\n object: 'text'\n }],\n next: [{\n object: 'block'\n }, {\n object: 'text'\n }],\n normalize: function normalize(editor, error) {\n var code = error.code,\n node = error.node,\n index = error.index;\n var text = Text.create();\n var i = void 0;\n\n if (code === 'first_child_object_invalid') {\n i = 0;\n } else if (code === 'last_child_object_invalid') {\n i = node.nodes.size;\n } else if (code === 'previous_sibling_object_invalid') {\n i = index;\n } else if (code === 'next_sibling_object_invalid') {\n i = index + 1;\n } else {\n return;\n }\n\n editor.insertNodeByKey(node.key, i, text);\n }\n }, // Merge adjacent text nodes.\n {\n match: {\n object: 'text'\n },\n next: [{\n object: 'block'\n }, {\n object: 'inline'\n }],\n normalize: function normalize(editor, error) {\n var code = error.code,\n next = error.next;\n\n if (code === 'next_sibling_object_invalid') {\n editor.mergeNodeByKey(next.key);\n }\n }\n }]\n });\n /**\n * Return the plugins.\n *\n * @type {Array}\n */\n\n return [schema].concat(toConsumableArray(plugins), [commands, queries]);\n}\n/**\n * Debug.\n *\n * @type {Function}\n */\n\n\nvar debug$2 = debug__WEBPACK_IMPORTED_MODULE_4___default()('slate:editor');\n/**\n * Editor.\n *\n * @type {Editor}\n */\n\nvar Editor = function () {\n /**\n * Create a new `Editor` with `attrs`.\n *\n * @param {Object} attrs\n * @param {Object} options\n */\n function Editor() {\n var attrs = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n classCallCheck(this, Editor);\n var _options$controller = options.controller,\n controller = _options$controller === undefined ? this : _options$controller,\n _options$construct = options.construct,\n construct = _options$construct === undefined ? true : _options$construct;\n var _attrs$onChange = attrs.onChange,\n onChange = _attrs$onChange === undefined ? function () {} : _attrs$onChange,\n _attrs$plugins = attrs.plugins,\n plugins = _attrs$plugins === undefined ? [] : _attrs$plugins,\n _attrs$readOnly = attrs.readOnly,\n readOnly = _attrs$readOnly === undefined ? false : _attrs$readOnly,\n _attrs$value = attrs.value,\n value = _attrs$value === undefined ? Value.create() : _attrs$value;\n this.controller = controller;\n this.middleware = {};\n this.onChange = onChange;\n this.operations = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n this.readOnly = null;\n this.value = null;\n this.tmp = {\n dirty: [],\n flushing: false,\n merge: null,\n normalize: true,\n save: true\n };\n var core = CorePlugin({\n plugins: plugins\n });\n registerPlugin(this, core);\n\n if (construct) {\n this.run('onConstruct');\n this.setReadOnly(readOnly);\n this.setValue(value, options);\n }\n }\n /**\n * Apply an `operation` to the editor, updating its value.\n *\n * @param {Operation|Object} operation\n * @return {Editor}\n */\n\n\n createClass(Editor, [{\n key: 'applyOperation',\n value: function applyOperation(operation) {\n var _this = this;\n\n var operations = this.operations,\n controller = this.controller;\n var value = this.value; // Add in the current `value` in case the operation was serialized.\n\n if (is_plain_object__WEBPACK_IMPORTED_MODULE_0___default()(operation)) {\n operation = _extends({}, operation, {\n value: value\n });\n }\n\n operation = Operation.create(operation); // Save the operation into the history. Since `save` is a command, we need\n // to do it without normalizing, since it would have side effects.\n\n this.withoutNormalizing(function () {\n controller.save(operation);\n value = _this.value;\n }); // Apply the operation to the value.\n\n debug$2('apply', {\n operation: operation\n });\n this.value = operation.apply(value);\n this.operations = operations.push(operation); // Get the paths of the affected nodes, and mark them as dirty.\n\n var newDirtyPaths = getDirtyPaths(operation);\n var dirty = this.tmp.dirty.reduce(function (memo, path) {\n path = PathUtils.create(path);\n var transformed = PathUtils.transform(path, operation);\n memo = memo.concat(transformed.toArray());\n return memo;\n }, newDirtyPaths);\n this.tmp.dirty = dirty; // If we're not already, queue the flushing process on the next tick.\n\n if (!this.tmp.flushing) {\n this.tmp.flushing = true;\n Promise.resolve().then(function () {\n return _this.flush();\n });\n }\n\n return controller;\n }\n /**\n * Flush the editor's current change.\n *\n * @return {Editor}\n */\n\n }, {\n key: 'flush',\n value: function flush() {\n this.run('onChange');\n var value = this.value,\n operations = this.operations,\n controller = this.controller;\n var change = {\n value: value,\n operations: operations\n };\n this.operations = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n this.tmp.flushing = false;\n this.onChange(change);\n return controller;\n }\n /**\n * Trigger a command by `type` with `...args`.\n *\n * @param {String|Function} type\n * @param {Any} ...args\n * @return {Editor}\n */\n\n }, {\n key: 'command',\n value: function command(type) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n var controller = this.controller;\n\n if (typeof type === 'function') {\n type.apply(undefined, [controller].concat(args));\n normalizeDirtyPaths(this);\n return controller;\n }\n\n debug$2('command', {\n type: type,\n args: args\n });\n var obj = {\n type: type,\n args: args\n };\n this.run('onCommand', obj);\n normalizeDirtyPaths(this);\n return controller;\n }\n /**\n * Checks if a command by `type` has been registered.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n }, {\n key: 'hasCommand',\n value: function hasCommand(type) {\n var controller = this.controller;\n var has = type in controller && controller[type].__command;\n return has;\n }\n /**\n * Checks if a query by `type` has been registered.\n *\n * @param {String} type\n * @return {Boolean}\n */\n\n }, {\n key: 'hasQuery',\n value: function hasQuery(type) {\n var controller = this.controller;\n var has = type in controller && controller[type].__query;\n return has;\n }\n /**\n * Normalize all of the nodes in the document from scratch.\n *\n * @return {Editor}\n */\n\n }, {\n key: 'normalize',\n value: function normalize() {\n var value = this.value,\n controller = this.controller;\n var document = value.document;\n var table = document.getKeysToPathsTable();\n var paths = Object.values(table).map(PathUtils.create);\n this.tmp.dirty = this.tmp.dirty.concat(paths);\n normalizeDirtyPaths(this);\n var selection = value.selection;\n document = value.document;\n\n if (selection.isUnset && document.nodes.size) {\n controller.moveToStartOfDocument();\n }\n\n return controller;\n }\n /**\n * Ask a query by `type` with `...args`.\n *\n * @param {String|Function} type\n * @param {Any} ...args\n * @return {Any}\n */\n\n }, {\n key: 'query',\n value: function query(type) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n var controller = this.controller;\n\n if (typeof type === 'function') {\n return type.apply(undefined, [controller].concat(args));\n }\n\n debug$2('query', {\n type: type,\n args: args\n });\n var obj = {\n type: type,\n args: args\n };\n return this.run('onQuery', obj);\n }\n /**\n * Register a command `type` with the editor.\n *\n * @param {String} type\n * @return {Editor}\n */\n\n }, {\n key: 'registerCommand',\n value: function registerCommand(type) {\n var _this2 = this;\n\n var controller = this.controller;\n\n if (type in controller && controller[type].__command) {\n return controller;\n }\n\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!(type in controller), 'You cannot register a `' + type + '` command because it would overwrite an existing property of the `Editor`.');\n\n var method = function method() {\n for (var _len3 = arguments.length, args = Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {\n args[_key3] = arguments[_key3];\n }\n\n return _this2.command.apply(_this2, [type].concat(args));\n };\n\n controller[type] = method;\n method.__command = true;\n return controller;\n }\n /**\n * Register a query `type` with the editor.\n *\n * @param {String} type\n * @return {Editor}\n */\n\n }, {\n key: 'registerQuery',\n value: function registerQuery(type) {\n var _this3 = this;\n\n var controller = this.controller;\n\n if (type in controller && controller[type].__query) {\n return controller;\n }\n\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!(type in controller), 'You cannot register a `' + type + '` query because it would overwrite an existing property of the `Editor`.');\n\n var method = function method() {\n for (var _len4 = arguments.length, args = Array(_len4), _key4 = 0; _key4 < _len4; _key4++) {\n args[_key4] = arguments[_key4];\n }\n\n return _this3.query.apply(_this3, [type].concat(args));\n };\n\n controller[type] = method;\n method.__query = true;\n return controller;\n }\n /**\n * Run through the middleware stack by `key` with `args`.\n *\n * @param {String} key\n * @param {Any} ...args\n * @return {Any}\n */\n\n }, {\n key: 'run',\n value: function run(key) {\n for (var _len5 = arguments.length, args = Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n var controller = this.controller,\n middleware = this.middleware;\n var fns = middleware[key] || [];\n var i = 0;\n\n function next() {\n var fn = fns[i++];\n if (!fn) return;\n\n for (var _len6 = arguments.length, overrides = Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n overrides[_key6] = arguments[_key6];\n }\n\n if (overrides.length) {\n args = overrides;\n }\n\n var ret = fn.apply(undefined, toConsumableArray(args).concat([controller, next]));\n return ret;\n }\n\n Object.defineProperty(next, 'change', {\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42, the `editor` is no longer passed as the third argument to event handlers. You can access it via `change.editor` instead.');\n }\n });\n Object.defineProperty(next, 'onChange', {\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42, the `editor` is no longer passed as the third argument to event handlers. You can access it via `change.editor` instead.');\n }\n });\n Object.defineProperty(next, 'props', {\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42, the `editor` is no longer passed as the third argument to event handlers. You can access it via `change.editor` instead.');\n }\n });\n Object.defineProperty(next, 'schema', {\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42, the `editor` is no longer passed as the third argument to event handlers. You can access it via `change.editor` instead.');\n }\n });\n Object.defineProperty(next, 'stack', {\n get: function get$$1() {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(false, 'As of Slate 0.42, the `editor` is no longer passed as the third argument to event handlers. You can access it via `change.editor` instead.');\n }\n });\n return next();\n }\n /**\n * Set the `readOnly` flag.\n *\n * @param {Boolean} readOnly\n * @return {Editor}\n */\n\n }, {\n key: 'setReadOnly',\n value: function setReadOnly(readOnly) {\n this.readOnly = readOnly;\n return this;\n }\n /**\n * Set the editor's `value`.\n *\n * @param {Value} value\n * @param {Options} options\n * @return {Editor}\n */\n\n }, {\n key: 'setValue',\n value: function setValue(value) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var _options$normalize = options.normalize,\n normalize = _options$normalize === undefined ? value !== this.value : _options$normalize;\n this.value = value;\n\n if (normalize) {\n this.normalize();\n }\n\n return this;\n }\n /**\n * Apply a series of changes inside a synchronous `fn`, deferring\n * normalization until after the function has finished executing.\n *\n * @param {Function} fn\n * @return {Editor}\n */\n\n }, {\n key: 'withoutNormalizing',\n value: function withoutNormalizing(fn) {\n var controller = this.controller;\n var value = this.tmp.normalize;\n this.tmp.normalize = false;\n fn(controller);\n this.tmp.normalize = value;\n normalizeDirtyPaths(this);\n return controller;\n }\n /**\n * Deprecated.\n */\n\n }, {\n key: 'change',\n value: function change(fn) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of Slate 0.43 the `change` object has been replaced with `editor`, so the `editor.change()` method is deprecated.`');\n\n for (var _len7 = arguments.length, args = Array(_len7 > 1 ? _len7 - 1 : 0), _key7 = 1; _key7 < _len7; _key7++) {\n args[_key7 - 1] = arguments[_key7];\n }\n\n fn.apply(undefined, [this.controller].concat(args));\n }\n }, {\n key: 'call',\n value: function call(fn) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of Slate 0.43 the `editor.call(fn)` method has been deprecated, please use `editor.command(fn)` instead.');\n\n for (var _len8 = arguments.length, args = Array(_len8 > 1 ? _len8 - 1 : 0), _key8 = 1; _key8 < _len8; _key8++) {\n args[_key8 - 1] = arguments[_key8];\n }\n\n fn.apply(undefined, [this.controller].concat(args));\n return this.controller;\n }\n }, {\n key: 'applyOperations',\n value: function applyOperations(operations) {\n var _this4 = this;\n\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of Slate 0.43 the `applyOperations` method is deprecated, please apply each operation in a loop instead.');\n operations.forEach(function (op) {\n return _this4.applyOperation(op);\n });\n return this.controller;\n }\n }, {\n key: 'setOperationFlag',\n value: function setOperationFlag(key, value) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.41 the `change.setOperationFlag` method has been deprecated.');\n this.tmp[key] = value;\n return this;\n }\n }, {\n key: 'getFlag',\n value: function getFlag(key) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.41 the `change.getFlag` method has been deprecated.');\n return options[key] !== undefined ? options[key] : this.tmp[key];\n }\n }, {\n key: 'unsetOperationFlag',\n value: function unsetOperationFlag(key) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.41 the `change.unsetOperationFlag` method has been deprecated.');\n delete this.tmp[key];\n return this;\n }\n }, {\n key: 'withoutNormalization',\n value: function withoutNormalization(fn) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.41 the `change.withoutNormalization` helper has been renamed to `change.withoutNormalizing`.');\n return this.withoutNormalizing(fn);\n }\n }, {\n key: 'editor',\n get: function get$$1() {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, \"As of Slate 0.43 the `change` object has been replaced with `editor`, so you don't need to access `change.editor`.\");\n return this.controller;\n }\n }]);\n return Editor;\n}();\n/**\n * Get the \"dirty\" paths for a given `operation`.\n *\n * @param {Operation} operation\n * @return {Array}\n */\n\n\nfunction getDirtyPaths(operation) {\n var type = operation.type,\n node = operation.node,\n path = operation.path,\n newPath = operation.newPath;\n\n switch (type) {\n case 'add_mark':\n case 'insert_text':\n case 'remove_mark':\n case 'remove_text':\n case 'set_mark':\n case 'set_node':\n {\n var ancestors = PathUtils.getAncestors(path).toArray();\n return [].concat(toConsumableArray(ancestors), [path]);\n }\n\n case 'insert_node':\n {\n var table = node.getKeysToPathsTable();\n var paths = Object.values(table).map(function (p) {\n return path.concat(p);\n });\n\n var _ancestors = PathUtils.getAncestors(path).toArray();\n\n return [].concat(toConsumableArray(_ancestors), [path], toConsumableArray(paths));\n }\n\n case 'split_node':\n {\n var _ancestors2 = PathUtils.getAncestors(path).toArray();\n\n var nextPath = PathUtils.increment(path);\n return [].concat(toConsumableArray(_ancestors2), [path, nextPath]);\n }\n\n case 'merge_node':\n {\n var _ancestors3 = PathUtils.getAncestors(path).toArray();\n\n var previousPath = PathUtils.decrement(path);\n return [].concat(toConsumableArray(_ancestors3), [previousPath]);\n }\n\n case 'move_node':\n {\n if (PathUtils.isEqual(path, newPath)) {\n return [];\n }\n\n var oldAncestors = PathUtils.getAncestors(path).reduce(function (arr, p) {\n arr.push.apply(arr, toConsumableArray(PathUtils.transform(p, operation).toArray()));\n return arr;\n }, []);\n var newAncestors = PathUtils.getAncestors(newPath).reduce(function (arr, p) {\n arr.push.apply(arr, toConsumableArray(PathUtils.transform(p, operation).toArray()));\n return arr;\n }, []);\n return [].concat(toConsumableArray(oldAncestors), toConsumableArray(newAncestors));\n }\n\n case 'remove_node':\n {\n var _ancestors4 = PathUtils.getAncestors(path).toArray();\n\n return [].concat(toConsumableArray(_ancestors4));\n }\n\n default:\n {\n return [];\n }\n }\n}\n/**\n * Normalize any new \"dirty\" paths that have been added to the change.\n *\n * @param {Editor}\n */\n\n\nfunction normalizeDirtyPaths(editor) {\n if (!editor.tmp.normalize) {\n return;\n }\n\n if (!editor.tmp.dirty.length) {\n return;\n }\n\n editor.withoutNormalizing(function () {\n while (editor.tmp.dirty.length) {\n var path = editor.tmp.dirty.pop();\n normalizeNodeByPath(editor, path);\n }\n });\n}\n/**\n * Normalize the node at a specific `path`.\n *\n * @param {Editor} editor\n * @param {Array} path\n */\n\n\nfunction normalizeNodeByPath(editor, path) {\n var controller = editor.controller;\n var value = editor.value;\n var _value = value,\n document = _value.document;\n var node = document.assertNode(path);\n var iterations = 0;\n var max = 100 + (node.object === 'text' ? 1 : node.nodes.size);\n\n while (node) {\n var fn = node.normalize(controller);\n\n if (!fn) {\n break;\n } // Run the normalize `fn` to fix the node.\n\n\n fn(controller); // Attempt to re-find the node by path, or by key if it has changed\n // locations in the tree continue iterating.\n\n value = editor.value;\n document = value.document;\n var _node = node,\n key = _node.key;\n var found = document.getDescendant(path);\n\n if (found && found.key === key) {\n node = found;\n } else {\n found = document.getDescendant(key);\n\n if (found) {\n node = found;\n path = document.getPath(key);\n } else {\n // If it no longer exists by key, it was removed, so we're done.\n break;\n }\n } // Increment the iterations counter, and check to make sure that we haven't\n // exceeded the max. Without this check, it's easy for the `normalize`\n // function of a schema rule to be written incorrectly and for an infinite\n // invalid loop to occur.\n\n\n iterations++;\n\n if (iterations > max) {\n throw new Error('A schema rule could not be normalized after sufficient iterations. This is usually due to a `rule.normalize` or `plugin.normalizeNode` function of a schema being incorrectly written, causing an infinite loop.');\n }\n }\n}\n/**\n * Register a `plugin` with the editor.\n *\n * @param {Editor} editor\n * @param {Object|Array} plugin\n */\n\n\nfunction registerPlugin(editor, plugin) {\n if (Array.isArray(plugin)) {\n plugin.forEach(function (p) {\n return registerPlugin(editor, p);\n });\n return;\n }\n\n var commands = plugin.commands,\n queries = plugin.queries,\n schema = plugin.schema,\n rest = objectWithoutProperties(plugin, ['commands', 'queries', 'schema']);\n\n if (commands) {\n var commandsPlugin = CommandsPlugin(commands);\n registerPlugin(editor, commandsPlugin);\n }\n\n if (queries) {\n var queriesPlugin = QueriesPlugin(queries);\n registerPlugin(editor, queriesPlugin);\n }\n\n if (schema) {\n var schemaPlugin = SchemaPlugin(schema);\n registerPlugin(editor, schemaPlugin);\n }\n\n for (var key in rest) {\n var fn = rest[key];\n var middleware = editor.middleware[key] = editor.middleware[key] || [];\n middleware.push(fn);\n }\n}\n/**\n * Mix in an `Interface` to a `Class`.\n *\n * @param {Class} Interface\n * @param {Class} Class\n */\n\n\nfunction mixin(Interface, Classes) {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n for (var _iterator = Classes[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var Class = _step.value; // Copy static properties from the interface.\n\n var _iteratorNormalCompletion2 = true;\n var _didIteratorError2 = false;\n var _iteratorError2 = undefined;\n\n try {\n for (var _iterator2 = Object.getOwnPropertyNames(Interface)[Symbol.iterator](), _step2; !(_iteratorNormalCompletion2 = (_step2 = _iterator2.next()).done); _iteratorNormalCompletion2 = true) {\n var name = _step2.value;\n if (Class.hasOwnProperty(name)) continue;\n var desc = Object.getOwnPropertyDescriptor(Interface, name);\n Object.defineProperty(Class, name, desc);\n } // Copy instance properties from the interface.\n\n } catch (err) {\n _didIteratorError2 = true;\n _iteratorError2 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion2 && _iterator2.return) {\n _iterator2.return();\n }\n } finally {\n if (_didIteratorError2) {\n throw _iteratorError2;\n }\n }\n }\n\n var _iteratorNormalCompletion3 = true;\n var _didIteratorError3 = false;\n var _iteratorError3 = undefined;\n\n try {\n for (var _iterator3 = Object.getOwnPropertyNames(Interface.prototype)[Symbol.iterator](), _step3; !(_iteratorNormalCompletion3 = (_step3 = _iterator3.next()).done); _iteratorNormalCompletion3 = true) {\n var _name = _step3.value;\n if (Class.prototype.hasOwnProperty(_name)) continue;\n var desc = Object.getOwnPropertyDescriptor(Interface.prototype, _name);\n Object.defineProperty(Class.prototype, _name, desc);\n }\n } catch (err) {\n _didIteratorError3 = true;\n _iteratorError3 = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion3 && _iterator3.return) {\n _iterator3.return();\n }\n } finally {\n if (_didIteratorError3) {\n throw _iteratorError3;\n }\n }\n }\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n}\n/**\n * A factory for the interface that all Slate objects implement.\n *\n * @type {Function}\n */\n\n\nfunction create$2(type) {\n var TYPE = TYPES[type];\n var camel = '' + type.charAt(0).toUpperCase() + type.slice(1);\n var is$$1 = 'is' + camel;\n\n var ObjectInterface = function () {\n function ObjectInterface() {\n classCallCheck(this, ObjectInterface);\n }\n\n createClass(ObjectInterface, [{\n key: 'object',\n\n /**\n * Return the type of the object.\n *\n * @return {String}\n */\n get: function get$$1() {\n return type;\n }\n }]);\n return ObjectInterface;\n }();\n\n ObjectInterface[is$$1] = isObject.bind(null, type);\n ObjectInterface.prototype[TYPE] = true;\n return ObjectInterface;\n}\n/**\n * Mix in the object interfaces.\n */\n\n\nObject.entries({\n Block: Block,\n Change: Change,\n Decoration: Decoration,\n Document: Document,\n Editor: Editor,\n Inline: Inline,\n Leaf: Leaf,\n Mark: Mark,\n Node: Node,\n Operation: Operation,\n Point: Point,\n Range: Range,\n Selection: Selection,\n Text: Text,\n Value: Value\n}).forEach(function (_ref) {\n var _ref2 = slicedToArray(_ref, 2),\n camel = _ref2[0],\n obj = _ref2[1];\n\n return mixin(create$2(camel.toLowerCase()), [obj]);\n});\n/**\n * The interface that all Slate models implement.\n *\n * @type {Class}\n */\n\nvar ModelInterface = function () {\n function ModelInterface() {\n classCallCheck(this, ModelInterface);\n }\n\n createClass(ModelInterface, [{\n key: 'toJS',\n\n /**\n * Alias `toJS`.\n */\n value: function toJS() {\n return this.toJSON.apply(this, arguments);\n }\n }], [{\n key: 'fromJS',\n\n /**\n * Alias `fromJS`.\n */\n value: function fromJS$$1() {\n return this.fromJSON.apply(this, arguments);\n }\n }]);\n return ModelInterface;\n}();\n/**\n * Mix in the common interface.\n *\n * @param {Record}\n */\n\n\nmixin(ModelInterface, [Block, Decoration, Document, Inline, Leaf, Mark, Node, Operation, Point, Range, Selection, Text, Value]);\n/**\n * The interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Class}\n */\n\nvar NodeInterface = function () {\n function NodeInterface() {\n classCallCheck(this, NodeInterface);\n }\n\n createClass(NodeInterface, [{\n key: 'getFirstText',\n\n /**\n * Get the first text node of a node, or the node itself.\n *\n * @return {Node|Null}\n */\n value: function getFirstText() {\n if (this.object === 'text') {\n return this;\n }\n\n var descendant = null;\n var found = this.nodes.find(function (node) {\n if (node.object === 'text') return true;\n descendant = node.getFirstText();\n return !!descendant;\n });\n return descendant || found;\n }\n /**\n * Get an object mapping all the keys in the node to their paths.\n *\n * @return {Object}\n */\n\n }, {\n key: 'getKeysToPathsTable',\n value: function getKeysToPathsTable() {\n var ret = defineProperty({}, this.key, []);\n\n if (this.nodes) {\n this.nodes.forEach(function (node, i) {\n var nested = node.getKeysToPathsTable();\n\n for (var key in nested) {\n var path = nested[key];\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(!(key in ret), 'A node with a duplicate key of \"' + key + '\" was found! Duplicate keys are not allowed, you should use `node.regenerateKey` before inserting if you are reusing an existing node.');\n ret[key] = [i].concat(toConsumableArray(path));\n }\n });\n }\n\n return ret;\n }\n /**\n * Get the last text node of a node, or the node itself.\n *\n * @return {Node|Null}\n */\n\n }, {\n key: 'getLastText',\n value: function getLastText() {\n if (this.object === 'text') {\n return this;\n }\n\n var descendant = null;\n var found = this.nodes.findLast(function (node) {\n if (node.object === 'text') return true;\n descendant = node.getLastText();\n return descendant;\n });\n return descendant || found;\n }\n /**\n * Get a node in the tree, or the node itself.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNode',\n value: function getNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (this.object === 'text' && path.size) return null;\n var node = path.size ? this.getDescendant(path) : this;\n return node;\n }\n /**\n * Find the path to a node.\n *\n * @param {String|List} key\n * @return {List}\n */\n\n }, {\n key: 'getPath',\n value: function getPath(key) {\n // Handle the case of passing in a path directly, to match other methods.\n if (immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"].isList(key)) return key;\n var dict = this.getKeysToPathsTable();\n var path = dict[key];\n return path ? Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(path) : null;\n }\n /**\n * Get the concatenated text string of a node.\n *\n * @return {String}\n */\n\n }, {\n key: 'getText',\n value: function getText() {\n var children = this.object === 'text' ? this.leaves : this.nodes;\n var text = children.reduce(function (memo, c) {\n return memo + c.text;\n }, '');\n return text;\n }\n /**\n * Check if a node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasNode',\n value: function hasNode(path) {\n var node = this.getNode(path);\n return !!node;\n }\n /**\n * Normalize the text node with an `editor`.\n *\n * @param {Editor} editor\n * @return {Function|Void}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(editor) {\n var normalizer = editor.run('normalizeNode', this);\n return normalizer;\n }\n /**\n * Regenerate the node's key.\n *\n * @return {Node}\n */\n\n }, {\n key: 'regenerateKey',\n value: function regenerateKey() {\n var key = KeyUtils.create();\n var node = this.set('key', key);\n return node;\n }\n /**\n * Resolve a path from a path list or key string.\n *\n * An `index` can be provided, in which case paths created from a key string\n * will have the index pushed onto them. This is helpful in cases where you\n * want to accept either a `path` or a `key, index` combination for targeting\n * a location in the tree that doesn't exist yet, like when inserting.\n *\n * @param {List|String} value\n * @param {Number} index\n * @return {List}\n */\n\n }, {\n key: 'resolvePath',\n value: function resolvePath(path, index) {\n if (typeof path === 'string') {\n path = this.getPath(path);\n\n if (index != null) {\n path = path.concat(index);\n }\n } else {\n path = PathUtils.create(path);\n }\n\n return path;\n }\n /**\n * Validate the node with an `editor`.\n *\n * @param {Editor} editor\n * @return {Error|Void}\n */\n\n }, {\n key: 'validate',\n value: function validate(editor) {\n var error = editor.run('validateNode', this);\n return error;\n }\n }, {\n key: 'text',\n\n /**\n * Get the concatenated text of the node.\n *\n * @return {String}\n */\n get: function get$$1() {\n return this.getText();\n }\n }]);\n return NodeInterface;\n}();\n/**\n * Memoize read methods.\n */\n\n\nmemoize(NodeInterface.prototype, ['getFirstText', 'getKeysToPathsTable', 'getLastText', 'getText', 'normalize', 'validate']);\n/**\n * Mix in the node interface.\n */\n\nmixin(NodeInterface, [Block, Document, Inline, Text]);\n/**\n * The interface that `Document`, `Block` and `Inline` all implement, to make\n * working with the recursive node tree easier.\n *\n * @type {Class}\n */\n\nvar ElementInterface = function () {\n function ElementInterface() {\n classCallCheck(this, ElementInterface);\n }\n\n createClass(ElementInterface, [{\n key: 'addMark',\n\n /**\n * Add mark to text at `offset` and `length` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n value: function addMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.addMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n /**\n * Create a decoration with `properties` relative to the node.\n *\n * @param {Object|Decoration} properties\n * @return {Decoration}\n */\n\n }, {\n key: 'createDecoration',\n value: function createDecoration(properties) {\n properties = Decoration.createProperties(properties);\n var decoration = this.resolveDecoration(properties);\n return decoration;\n }\n /**\n * Create a point with `properties` relative to the node.\n *\n * @param {Object|Point} properties\n * @return {Range}\n */\n\n }, {\n key: 'createPoint',\n value: function createPoint(properties) {\n properties = Point.createProperties(properties);\n var point = this.resolvePoint(properties);\n return point;\n }\n /**\n * Create a range with `properties` relative to the node.\n *\n * @param {Object|Range} properties\n * @return {Range}\n */\n\n }, {\n key: 'createRange',\n value: function createRange(properties) {\n properties = Range.createProperties(properties);\n var range = this.resolveRange(properties);\n return range;\n }\n /**\n * Create a selection with `properties` relative to the node.\n *\n * @param {Object|Selection} properties\n * @return {Selection}\n */\n\n }, {\n key: 'createSelection',\n value: function createSelection(properties) {\n properties = Selection.createProperties(properties);\n var selection = this.resolveSelection(properties);\n return selection;\n }\n /**\n * Recursively filter all descendant nodes with `iterator`.\n *\n * @param {Function} iterator\n * @return {List}\n */\n\n }, {\n key: 'filterDescendants',\n value: function filterDescendants(iterator) {\n var matches = [];\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) matches.push(node);\n });\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(matches);\n }\n /**\n * Recursively find a descendant node by `iterator`.\n *\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'findDescendant',\n value: function findDescendant(iterator) {\n var found = null;\n this.forEachDescendant(function (node, i, nodes) {\n if (iterator(node, i, nodes)) {\n found = node;\n return false;\n }\n });\n return found;\n }\n /**\n * Recursively find a descendant node and its path by `iterator`.\n *\n * @param {Function} iterator\n * @return {Null|[Node, List]}\n */\n\n }, {\n key: 'findDescendantAndPath',\n value: function findDescendantAndPath(iterator) {\n var pathToThisNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PathUtils.create([]);\n var findLast = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var found = void 0;\n var foundPath = void 0;\n this.forEachDescendantWithPath(function (node, path, nodes) {\n if (iterator(node, path, nodes)) {\n found = node;\n foundPath = path;\n return false;\n }\n }, pathToThisNode, findLast);\n return found ? [found, foundPath] : null;\n } // Easy helpers to avoid needing to pass findLast boolean\n\n }, {\n key: 'findFirstDescendantAndPath',\n value: function findFirstDescendantAndPath(iterator, pathToThisNode) {\n return this.findDescendantAndPath(iterator, pathToThisNode, false);\n }\n }, {\n key: 'findLastDescendantAndPath',\n value: function findLastDescendantAndPath(iterator, pathToThisNode) {\n return this.findDescendantAndPath(iterator, pathToThisNode, true);\n }\n /**\n * Recursively iterate over all descendant nodes with `iterator`. If the\n * iterator returns false it will break the loop.\n *\n * @param {Function} iterator\n */\n\n }, {\n key: 'forEachDescendant',\n value: function forEachDescendant(iterator) {\n var ret = void 0;\n this.nodes.forEach(function (child, i, nodes) {\n if (iterator(child, i, nodes) === false) {\n ret = false;\n return false;\n }\n\n if (child.object !== 'text') {\n ret = child.forEachDescendant(iterator);\n return ret;\n }\n });\n return ret;\n }\n /**\n * Recursively iterate over all descendant nodes with `iterator`. If the\n * iterator returns false it will break the loop.\n * Calls iterator with node and path.\n *\n * @param {Function} iterator\n * @param {List} path\n * @param {Boolean} findLast - whether to iterate in reverse order\n */\n\n }, {\n key: 'forEachDescendantWithPath',\n value: function forEachDescendantWithPath(iterator) {\n var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : PathUtils.create([]);\n var findLast = arguments[2];\n var nodes = this.nodes;\n var ret = void 0;\n if (findLast) nodes = nodes.reverse();\n nodes.forEach(function (child, i) {\n var childPath = path.concat(i);\n\n if (iterator(child, childPath, nodes) === false) {\n ret = false;\n return false;\n }\n\n if (child.object !== 'text') {\n ret = child.forEachDescendantWithPath(iterator, childPath, findLast);\n return ret;\n }\n });\n return ret;\n }\n /**\n * Get a set of the active marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getActiveMarksAtRange',\n value: function getActiveMarksAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n\n if (range.isCollapsed) {\n var _range = range,\n _start = _range.start;\n return this.getMarksAtPosition(_start.path, _start.offset).toSet();\n }\n\n var _range2 = range,\n start = _range2.start,\n end = _range2.end;\n var startPath = start.path;\n var startOffset = start.offset;\n var endPath = end.path;\n var endOffset = end.offset;\n var startText = this.getDescendant(startPath);\n var endText = this.getDescendant(endPath);\n\n if (!PathUtils.isEqual(startPath, endPath)) {\n while (!PathUtils.isEqual(startPath, endPath) && endOffset === 0) {\n var _getPreviousTextAndPa = this.getPreviousTextAndPath(endPath);\n\n var _getPreviousTextAndPa2 = slicedToArray(_getPreviousTextAndPa, 2);\n\n endText = _getPreviousTextAndPa2[0];\n endPath = _getPreviousTextAndPa2[1];\n endOffset = endText.text.length;\n }\n\n while (!PathUtils.isEqual(startPath, endPath) && startOffset === startText.text.length) {\n var _getNextTextAndPath = this.getNextTextAndPath(startPath);\n\n var _getNextTextAndPath2 = slicedToArray(_getNextTextAndPath, 2);\n\n startText = _getNextTextAndPath2[0];\n startPath = _getNextTextAndPath2[1];\n startOffset = 0;\n }\n }\n\n if (PathUtils.isEqual(startPath, endPath)) {\n return startText.getActiveMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var startMarks = startText.getActiveMarksBetweenOffsets(startOffset, startText.text.length);\n if (startMarks.size === 0) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n var endMarks = endText.getActiveMarksBetweenOffsets(0, endOffset);\n var marks = startMarks.intersect(endMarks); // If marks is already empty, the active marks is empty\n\n if (marks.size === 0) {\n return marks;\n }\n\n var _getNextTextAndPath3 = this.getNextTextAndPath(startPath);\n\n var _getNextTextAndPath4 = slicedToArray(_getNextTextAndPath3, 2);\n\n startText = _getNextTextAndPath4[0];\n startPath = _getNextTextAndPath4[1];\n\n while (!PathUtils.isEqual(startPath, endPath)) {\n if (startText.text.length !== 0) {\n marks = marks.intersect(startText.getActiveMarks());\n if (marks.size === 0) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n }\n\n var _getNextTextAndPath5 = this.getNextTextAndPath(startPath);\n\n var _getNextTextAndPath6 = slicedToArray(_getNextTextAndPath5, 2);\n\n startText = _getNextTextAndPath6[0];\n startPath = _getNextTextAndPath6[1];\n }\n\n return marks;\n }\n /**\n * Get a list of the ancestors of a descendant.\n *\n * @param {List|String} path\n * @return {List|Null}\n */\n\n }, {\n key: 'getAncestors',\n value: function getAncestors(path) {\n var _this = this;\n\n path = this.resolvePath(path);\n if (!path) return null;\n var ancestors = [];\n path.forEach(function (p, i) {\n var current = path.slice(0, i);\n\n var parent = _this.getNode(current);\n\n ancestors.push(parent);\n });\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(ancestors);\n }\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getBlocks',\n value: function getBlocks() {\n var array = this.getBlocksAsArray();\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(array);\n }\n /**\n * Get the leaf block descendants of the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getBlocksAsArray',\n value: function getBlocksAsArray() {\n return this.nodes.reduce(function (array, child) {\n if (child.object !== 'block') return array;\n if (!child.isLeafBlock()) return array.concat(child.getBlocksAsArray());\n array.push(child);\n return array;\n }, []);\n }\n /**\n * Get the leaf block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getBlocksAtRange',\n value: function getBlocksAtRange(range) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.44 the `node.getBlocksAtRange` method has been renamed to `getLeafBlocksAtRange`.');\n return this.getLeafBlocksAtRange(range);\n }\n /**\n * Get the bottom-most block descendants in a `range` as an array\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksAtRangeAsArray',\n value: function getBlocksAtRangeAsArray(range) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.44 the `node.getBlocksAtRangeAsArray` method has been renamed to `getLeafBlocksAtRangeAsArray`.');\n return this.getLeafBlocksAtRangeAsArray(range);\n }\n /**\n * Get all of the leaf blocks that match a `type`.\n *\n * @param {String} type\n * @return {List}\n */\n\n }, {\n key: 'getBlocksByType',\n value: function getBlocksByType(type) {\n var array = this.getBlocksByTypeAsArray(type);\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(array);\n }\n /**\n * Get all of the leaf blocks that match a `type` as an array\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getBlocksByTypeAsArray',\n value: function getBlocksByTypeAsArray(type) {\n return this.nodes.reduce(function (array, node) {\n if (node.object !== 'block') {\n return array;\n } else if (node.isLeafBlock() && node.type === type) {\n array.push(node);\n return array;\n } else {\n return array.concat(node.getBlocksByTypeAsArray(type));\n }\n }, []);\n }\n /**\n * Get a child node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getChild',\n value: function getChild(path) {\n path = this.resolvePath(path);\n if (!path || path.size > 1) return null;\n var child = this.nodes.get(path.first());\n return child;\n }\n /**\n * Get closest parent of node that matches an `iterator`.\n *\n * @param {List|String} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosest',\n value: function getClosest(path, iterator) {\n var _this2 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n var closest = ancestors.findLast(function (node) {\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n } // We never want to include the top-level node.\n\n\n if (node === _this2) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n return closest || null;\n }\n /**\n * Get the closest block parent of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestBlock',\n value: function getClosestBlock(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'block';\n });\n return closest;\n }\n /**\n * Get the closest inline parent of a node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestInline',\n value: function getClosestInline(path) {\n var closest = this.getClosest(path, function (n) {\n return n.object === 'inline';\n });\n return closest;\n }\n /**\n * Get the closest void parent of a node by `path`.\n *\n * @param {List|String} path\n * @param {Editor} editor\n * @return {Node|Null}\n */\n\n }, {\n key: 'getClosestVoid',\n value: function getClosestVoid(path, editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!Value.isValue(editor), 'As of Slate 0.42.0, the `node.getClosestVoid` method takes an `editor` instead of a `value`.');\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n var ancestor = ancestors.findLast(function (a) {\n return editor.query('isVoid', a);\n });\n return ancestor;\n }\n /**\n * Get the common ancestor of nodes `a` and `b`.\n *\n * @param {List} a\n * @param {List} b\n * @return {Node}\n */\n\n }, {\n key: 'getCommonAncestor',\n value: function getCommonAncestor(a, b) {\n a = this.resolvePath(a);\n b = this.resolvePath(b);\n if (!a || !b) return null;\n var path = PathUtils.relate(a, b);\n var node = this.getNode(path);\n return node;\n }\n /**\n * Get the decorations for the node from an `editor`.\n *\n * @param {Editor} editor\n * @return {List}\n */\n\n }, {\n key: 'getDecorations',\n value: function getDecorations(editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!Value.isValue(editor), 'As of Slate 0.42.0, the `node.getDecorations` method takes an `editor` instead of a `value`.');\n var array = editor.run('decorateNode', this);\n var decorations = Decoration.createList(array);\n return decorations;\n }\n /**\n * Get the depth of a descendant, with optional `startAt`.\n *\n * @param {List|String} path\n * @param {Number} startAt\n * @return {Number|Null}\n */\n\n }, {\n key: 'getDepth',\n value: function getDepth(path) {\n var startAt = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;\n path = this.resolvePath(path);\n if (!path) return null;\n var node = this.getNode(path);\n var depth = node ? path.size - 1 + startAt : null;\n return depth;\n }\n /**\n * Get a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getDescendant',\n value: function getDescendant(path) {\n path = this.resolvePath(path);\n if (!path || !path.size) return null;\n var node = this;\n path.forEach(function (index) {\n node = node.getIn(['nodes', index]);\n return !!node;\n });\n return node;\n }\n /**\n * Get a fragment of the node at a `range`.\n *\n * @param {Range} range\n * @return {Document}\n */\n\n }, {\n key: 'getFragmentAtRange',\n value: function getFragmentAtRange(range) {\n range = this.resolveRange(range);\n\n if (range.isUnset) {\n return Document.create();\n }\n\n var _range3 = range,\n start = _range3.start,\n end = _range3.end;\n var node = this;\n var targetPath = end.path;\n var targetPosition = end.offset;\n var mode = 'end';\n\n while (targetPath.size) {\n var index = targetPath.last();\n node = node.splitNode(targetPath, targetPosition);\n targetPosition = index + 1;\n targetPath = PathUtils.lift(targetPath);\n\n if (!targetPath.size && mode === 'end') {\n targetPath = start.path;\n targetPosition = start.offset;\n mode = 'start';\n }\n }\n\n var startIndex = start.path.first() + 1;\n var endIndex = end.path.first() + 2;\n var nodes = node.nodes.slice(startIndex, endIndex);\n var fragment = Document.create({\n nodes: nodes\n });\n return fragment;\n }\n /**\n * Get the furthest parent of a node that matches an `iterator`.\n *\n * @param {Path} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthest',\n value: function getFurthest(path, iterator) {\n var _this3 = this;\n\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n var furthest = ancestors.find(function (node) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n } // We never want to include the top-level node.\n\n\n if (node === _this3) return false;\n return iterator.apply(undefined, [node].concat(args));\n });\n return furthest || null;\n }\n /**\n * Get the furthest ancestor of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestAncestor',\n value: function getFurthestAncestor(path) {\n path = this.resolvePath(path);\n if (!path || !path.size) return null;\n var furthest = this.nodes.get(path.first());\n return furthest;\n }\n /**\n * Get the furthest block parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestBlock',\n value: function getFurthestBlock(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'block';\n });\n return furthest;\n }\n /**\n * Get the furthest inline parent of a node.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestInline',\n value: function getFurthestInline(path) {\n var furthest = this.getFurthest(path, function (n) {\n return n.object === 'inline';\n });\n return furthest;\n }\n /**\n * Get the furthest ancestor of a node, where all ancestors to that point only have one child.\n *\n * @param {Path} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getFurthestOnlyChildAncestor',\n value: function getFurthestOnlyChildAncestor(path) {\n var ancestors = this.getAncestors(path);\n if (!ancestors) return null;\n var furthest = ancestors.rest().reverse().takeUntil(function (p) {\n return p.nodes.size > 1;\n }).last();\n return furthest || null;\n }\n /**\n * Get the closest inline nodes for each text node in the node.\n *\n * @return {List}\n */\n\n }, {\n key: 'getInlines',\n value: function getInlines() {\n var array = this.getInlinesAsArray();\n var list = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(array);\n return list;\n }\n /**\n * Get the closest inline nodes for each text node in the node, as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesAsArray',\n value: function getInlinesAsArray() {\n var array = [];\n this.nodes.forEach(function (child) {\n if (child.object === 'text') return;\n\n if (child.isLeafInline()) {\n array.push(child);\n } else {\n array = array.concat(child.getInlinesAsArray());\n }\n });\n return array;\n }\n /**\n * Get the bottom-most inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getInlinesAtRange',\n value: function getInlinesAtRange(range) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.44 the `node.getInlinesAtRange` method has been renamed to `getLeafInlinesAtRange`.');\n return this.getLeafInlinesAtRange(range);\n }\n /**\n * Get the bottom-most inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesAtRangeAsArray',\n value: function getInlinesAtRangeAsArray(range) {\n Object(tiny_warning__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(false, 'As of slate@0.44 the `node.getInlinesAtRangeAsArray` method has been renamed to `getLeafInlinesAtRangeAsArray`.');\n return this.getLeafInlinesAtRangeAsArray(range);\n }\n /**\n * Get all of the leaf inline nodes that match a `type`.\n *\n * @param {String} type\n * @return {List}\n */\n\n }, {\n key: 'getInlinesByType',\n value: function getInlinesByType(type) {\n var array = this.getInlinesByTypeAsArray(type);\n var list = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(array);\n return list;\n }\n /**\n * Get all of the leaf inline nodes that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getInlinesByTypeAsArray',\n value: function getInlinesByTypeAsArray(type) {\n var array = this.nodes.reduce(function (inlines, node) {\n if (node.object === 'text') {\n return inlines;\n } else if (node.isLeafInline() && node.type === type) {\n inlines.push(node);\n return inlines;\n } else {\n return inlines.concat(node.getInlinesByTypeAsArray(type));\n }\n }, []);\n return array;\n }\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getInsertMarksAtRange',\n value: function getInsertMarksAtRange(range) {\n range = this.resolveRange(range);\n var _range4 = range,\n start = _range4.start;\n\n if (range.isUnset) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n }\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use key and offset as proxies for cache\n return this.getMarksAtPosition(start.path, start.offset);\n }\n\n var text = this.getDescendant(start.path);\n var marks = text.getMarksAtIndex(start.offset + 1);\n return marks;\n }\n /**\n * Get the bottom-most block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getLeafBlocksAtRange',\n value: function getLeafBlocksAtRange(range) {\n var array = this.getLeafBlocksAtRangeAsArray(range); // Eliminate duplicates by converting to an `OrderedSet` first.\n\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])(array));\n }\n /**\n * Get the bottom-most descendants in a `range` as an array\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getLeafBlocksAtRangeAsArray',\n value: function getLeafBlocksAtRangeAsArray(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n var _range5 = range,\n start = _range5.start,\n end = _range5.end;\n return this.getLeafBlocksBetweenPathPositionsAsArray(start.path, end.path);\n }\n /**\n * Get the bottom-most descendants between two paths as an array\n *\n * @param {List|Null} startPath\n * @param {List|Null} endPath\n * @return {Array}\n */\n\n }, {\n key: 'getLeafBlocksBetweenPathPositionsAsArray',\n value: function getLeafBlocksBetweenPathPositionsAsArray(startPath, endPath) {\n // PERF: the most common case is when the range is in a single block node,\n // where we can avoid a lot of iterating of the tree.\n if (startPath && endPath && PathUtils.isEqual(startPath, endPath)) {\n return [this.getClosestBlock(startPath)];\n } else if (!startPath && !endPath) {\n return this.getBlocksAsArray();\n }\n\n var startIndex = startPath ? startPath.get(0, 0) : 0;\n var endIndex = endPath ? endPath.get(0, this.nodes.size - 1) : this.nodes.size - 1;\n var array = [];\n this.nodes.slice(startIndex, endIndex + 1).forEach(function (node, i) {\n if (node.object !== 'block') {\n return;\n } else if (node.isLeafBlock()) {\n array.push(node);\n } else {\n var childStartPath = startPath && i === 0 ? PathUtils.drop(startPath) : null;\n var childEndPath = endPath && i === endIndex - startIndex ? PathUtils.drop(endPath) : null;\n array = array.concat(node.getLeafBlocksBetweenPathPositionsAsArray(childStartPath, childEndPath));\n }\n });\n return array;\n }\n /**\n * Get the bottom-most inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getLeafInlinesAtRange',\n value: function getLeafInlinesAtRange(range) {\n var array = this.getLeafInlinesAtRangeAsArray(range); // Remove duplicates by converting it to an `OrderedSet` first.\n\n var list = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])(array));\n return list;\n }\n /**\n * Get the bottom-most inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getLeafInlinesAtRangeAsArray',\n value: function getLeafInlinesAtRangeAsArray(range) {\n var _this4 = this;\n\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n var array = this.getTextsAtRangeAsArray(range).map(function (text) {\n return _this4.getClosestInline(text.key);\n }).filter(function (exists) {\n return exists;\n });\n return array;\n }\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {Set}\n */\n\n }, {\n key: 'getMarks',\n value: function getMarks() {\n var array = this.getMarksAsArray();\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])(array);\n }\n /**\n * Get all of the marks as an array.\n *\n * @return {Array}\n */\n\n }, {\n key: 'getMarksAsArray',\n value: function getMarksAsArray() {\n var _ref;\n\n var result = [];\n this.nodes.forEach(function (node) {\n result.push(node.getMarksAsArray());\n }); // PERF: use only one concat rather than multiple for speed.\n\n var array = (_ref = []).concat.apply(_ref, result);\n\n return array;\n }\n /**\n * Get a set of marks in a `position`, the equivalent of a collapsed range\n *\n * @param {List|string} key\n * @param {number} offset\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtPosition',\n value: function getMarksAtPosition(path, offset) {\n path = this.resolvePath(path);\n var text = this.getDescendant(path);\n var currentMarks = text.getMarksAtIndex(offset);\n if (offset !== 0) return currentMarks;\n var closestBlock = this.getClosestBlock(path);\n\n if (closestBlock.text === '') {\n // insert mark for empty block; the empty block are often created by split node or add marks in a range including empty blocks\n return currentMarks;\n }\n\n var previous = this.getPreviousTextAndPath(path);\n if (!previous) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])();\n\n var _previous = slicedToArray(previous, 2),\n previousText = _previous[0],\n previousPath = _previous[1];\n\n if (closestBlock.hasDescendant(previousPath)) {\n return previous.getMarksAtIndex(previousText.text.length);\n }\n\n return currentMarks;\n }\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {Set}\n */\n\n }, {\n key: 'getMarksAtRange',\n value: function getMarksAtRange(range) {\n var marks = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])(this.getOrderedMarksAtRange(range));\n return marks;\n }\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {Set}\n */\n\n }, {\n key: 'getMarksByType',\n value: function getMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Set\"])(array);\n }\n /**\n * Get all of the marks that match a `type` as an array.\n *\n * @param {String} type\n * @return {Array}\n */\n\n }, {\n key: 'getMarksByTypeAsArray',\n value: function getMarksByTypeAsArray(type) {\n var array = this.nodes.reduce(function (memo, node) {\n return node.object === 'text' ? memo.concat(node.getMarksAsArray().filter(function (m) {\n return m.type === type;\n })) : memo.concat(node.getMarksByTypeAsArray(type));\n }, []);\n return array;\n }\n /**\n * Get the block node after a descendant text node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextBlock',\n value: function getNextBlock(path) {\n path = this.resolvePath(path);\n var match = this.getNextDeepMatchingNodeAndPath(path, function (n) {\n return n.object === 'block';\n });\n return match ? match[0] : null;\n }\n /**\n * Get the next node in the tree from a node.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the next ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextNode',\n value: function getNextNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n var target = PathUtils.increment(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n /**\n * Get the next node in the tree from a node that matches iterator\n *\n * This will not only check for siblings but instead move up the tree\n * returning the next ancestor if no sibling is found.\n *\n * @param {List} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextMatchingNodeAndPath',\n value: function getNextMatchingNodeAndPath(path) {\n var iterator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n if (!path) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n var nextPath = PathUtils.increment(p);\n var nextNode = this.getNode(nextPath);\n\n while (nextNode && !iterator(nextNode)) {\n nextPath = PathUtils.increment(nextPath);\n nextNode = this.getNode(nextPath);\n }\n\n if (nextNode) return [nextNode, nextPath];\n }\n\n return null;\n }\n /**\n * Get the next, deepest node in the tree from a node that matches iterator\n *\n * This will not only check for siblings but instead move up the tree\n * returning the next ancestor if no sibling is found.\n *\n * @param {List} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextDeepMatchingNodeAndPath',\n value: function getNextDeepMatchingNodeAndPath(path) {\n var iterator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n var match = this.getNextMatchingNodeAndPath(path);\n if (!match) return null;\n\n var _match = slicedToArray(match, 2),\n nextNode = _match[0],\n nextPath = _match[1];\n\n var childMatch = void 0;\n\n var assign = function assign() {\n childMatch = nextNode.object !== 'text' && nextNode.findFirstDescendantAndPath(iterator, nextPath);\n return childMatch;\n };\n\n while (assign(childMatch)) {\n var _childMatch = childMatch;\n\n var _childMatch2 = slicedToArray(_childMatch, 2);\n\n nextNode = _childMatch2[0];\n nextPath = _childMatch2[1];\n }\n\n if (!nextNode) return null;\n return iterator(nextNode) ? [nextNode, nextPath] : this.getNextDeepMatchingNodeAndPath(match[1], iterator);\n }\n /**\n * Get the next sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextSibling',\n value: function getNextSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var p = PathUtils.increment(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n /**\n * Get the text node after a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getNextText',\n value: function getNextText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var next = this.getNextNode(path);\n if (!next) return null;\n var text = next.getFirstText();\n return text;\n }\n }, {\n key: 'getNextTextAndPath',\n value: function getNextTextAndPath(path) {\n if (!path) return null;\n if (!path.size) return null;\n var match = this.getNextDeepMatchingNodeAndPath(path, function (n) {\n return n.object === 'text';\n });\n return match;\n }\n /**\n * Get all of the nodes in a `range`. This includes all of the\n * text nodes inside the range and all ancestors of those text\n * nodes up to this node.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getNodesAtRange',\n value: function getNodesAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var _range6 = range,\n start = _range6.start,\n end = _range6.end; // Do a depth-first stack-based search for all nodes in the range\n // Nodes that are pushed to the stack are inside the range\n // Start with the nodes that are on the highest level in the tree\n\n var stack = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"Stack\"])(this.nodes.slice(start.path.get(0), end.path.get(0) + 1).map(function (node, index) {\n return {\n node: node,\n onStartEdge: index === 0,\n onEndEdge: index === end.path.get(0) - start.path.get(0),\n relativeStartPath: start.path.slice(1),\n relativeEndPath: end.path.slice(1)\n };\n }));\n var result = [];\n\n var _loop = function _loop() {\n var _stack$peek = stack.peek(),\n node = _stack$peek.node,\n onStartEdge = _stack$peek.onStartEdge,\n onEndEdge = _stack$peek.onEndEdge,\n relativeStartPath = _stack$peek.relativeStartPath,\n relativeEndPath = _stack$peek.relativeEndPath;\n\n stack = stack.shift();\n result.push(node);\n if (node.object === 'text') return 'continue'; // Modify indexes to exclude children that are outside of the range\n\n var startIndex = onStartEdge ? relativeStartPath.get(0) : 0;\n var endIndex = onEndEdge ? relativeEndPath.get(0) : node.nodes.size - 1; // Push children that are inside the range to the stack\n\n stack = stack.pushAll(node.nodes.slice(startIndex, endIndex + 1).map(function (n, i) {\n return {\n node: n,\n onStartEdge: onStartEdge && i === 0,\n onEndEdge: onEndEdge && i === endIndex - startIndex,\n relativeStartPath: onStartEdge && i === 0 ? relativeStartPath.slice(1) : null,\n relativeEndPath: onEndEdge && i === endIndex - startIndex ? relativeEndPath.slice(1) : null\n };\n }));\n };\n\n while (stack.size > 0) {\n var _ret = _loop();\n\n if (_ret === 'continue') continue;\n }\n\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(result);\n }\n /**\n * Get the offset for a descendant text node by `path` or `key`.\n *\n * @param {List|string} path\n * @return {Number}\n */\n\n }, {\n key: 'getOffset',\n value: function getOffset(path) {\n path = this.resolvePath(path);\n this.assertDescendant(path); // Calculate the offset of the nodes before the highest child.\n\n var index = path.first();\n var offset = this.nodes.slice(0, index).reduce(function (memo, n) {\n return memo + n.text.length;\n }, 0); // Recurse if need be.\n\n var ret = path.size === 1 ? offset : offset + this.nodes.get(index).getOffset(PathUtils.drop(path));\n return ret;\n }\n /**\n * Get the offset from a `range`.\n *\n * @param {Range} range\n * @return {Number}\n */\n\n }, {\n key: 'getOffsetAtRange',\n value: function getOffsetAtRange(range) {\n range = this.resolveRange(range);\n\n if (range.isUnset) {\n throw new Error('The range cannot be unset to calculcate its offset.');\n }\n\n if (range.isExpanded) {\n throw new Error('The range must be collapsed to calculcate its offset.');\n }\n\n var _range7 = range,\n start = _range7.start;\n var offset = this.getOffset(start.path) + start.offset;\n return offset;\n }\n /**\n * Get all of the marks for all of the characters of every text node.\n *\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarks',\n value: function getOrderedMarks() {\n var array = this.getMarksAsArray();\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])(array);\n }\n /**\n * Get a set of the marks in a `range`.\n *\n * @param {Range} range\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksAtRange',\n value: function getOrderedMarksAtRange(range) {\n range = this.resolveRange(range);\n var _range8 = range,\n start = _range8.start,\n end = _range8.end;\n\n if (range.isUnset) {\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])();\n }\n\n if (range.isCollapsed) {\n // PERF: range is not cachable, use path? and offset as proxies for cache\n return this.getMarksAtPosition(start.path, start.offset);\n }\n\n var marks = this.getOrderedMarksBetweenPositions(start.path, start.offset, end.path, end.offset);\n return marks;\n }\n /**\n * Get a set of the marks in a `range`.\n * PERF: arguments use key and offset for utilizing cache\n *\n * @param {List|string} startPath\n * @param {number} startOffset\n * @param {List|string} endPath\n * @param {number} endOffset\n * @returns {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksBetweenPositions',\n value: function getOrderedMarksBetweenPositions(startPath, startOffset, endPath, endOffset) {\n startPath = this.resolvePath(startPath);\n endPath = this.resolvePath(endPath);\n var startText = this.getDescendant(startPath);\n\n if (PathUtils.isEqual(startPath, endPath)) {\n return startText.getMarksBetweenOffsets(startOffset, endOffset);\n }\n\n var endText = this.getDescendant(endPath);\n var texts = this.getTextsBetweenPathPositionsAsArray(startPath, endPath);\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])().withMutations(function (result) {\n texts.forEach(function (text) {\n if (text.key === startText.key) {\n result.union(text.getMarksBetweenOffsets(startOffset, text.text.length));\n } else if (text.key === endText.key) {\n result.union(text.getMarksBetweenOffsets(0, endOffset));\n } else {\n result.union(text.getMarks());\n }\n });\n });\n }\n /**\n * Get all of the marks that match a `type`.\n *\n * @param {String} type\n * @return {OrderedSet}\n */\n\n }, {\n key: 'getOrderedMarksByType',\n value: function getOrderedMarksByType(type) {\n var array = this.getMarksByTypeAsArray(type);\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])(array);\n }\n /**\n * Get the parent of a descendant node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getParent',\n value: function getParent(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var parentPath = PathUtils.lift(path);\n var parent = this.getNode(parentPath);\n return parent;\n }\n /**\n * Get the block node before a descendant text node by `path`.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousBlock',\n value: function getPreviousBlock(path) {\n path = this.resolvePath(path);\n var match = this.getPreviousDeepMatchingNodeAndPath(path, function (n) {\n return n.object === 'block';\n });\n return match ? match[0] : null;\n }\n /**\n * Get the highest block descendants in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getRootBlocksAtRange',\n value: function getRootBlocksAtRange(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var _range9 = range,\n start = _range9.start,\n end = _range9.end;\n return this.nodes.slice(start.path.first(), end.path.first() + 1);\n }\n /**\n * Get the top-most inline nodes for each text node in a `range`.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getRootInlinesAtRange',\n value: function getRootInlinesAtRange(range) {\n var array = this.getRootInlinesAtRangeAsArray(range); // Remove duplicates by converting it to an `OrderedSet` first.\n\n var list = Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"OrderedSet\"])(array));\n return list;\n }\n /**\n * Get the top-most inline nodes for each text node in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getRootInlinesAtRangeAsArray',\n value: function getRootInlinesAtRangeAsArray(range) {\n var _this5 = this;\n\n range = this.resolveRange(range);\n if (range.isUnset) return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])();\n var array = this.getTextsAtRangeAsArray(range).map(function (text) {\n return _this5.getFurthestInline(text.key);\n }).filter(function (exists) {\n return exists;\n });\n return array;\n }\n /**\n * Get the previous node from a node in the tree.\n *\n * This will not only check for siblings but instead move up the tree\n * returning the previous ancestor if no sibling is found.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousNode',\n value: function getPreviousNode(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n if (p.last() === 0) continue;\n var target = PathUtils.decrement(p);\n var node = this.getNode(target);\n if (node) return node;\n }\n\n return null;\n }\n /**\n * Get the previous node in the tree from a node that matches iterator\n *\n * This will not only check for siblings but instead move up the tree\n * returning the previous ancestor if no sibling is found.\n *\n * @param {List} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousMatchingNodeAndPath',\n value: function getPreviousMatchingNodeAndPath(path) {\n var iterator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n if (!path) return null;\n\n for (var i = path.size; i > 0; i--) {\n var p = path.slice(0, i);\n if (p.last() === 0) continue;\n var previousPath = PathUtils.decrement(p);\n var previousNode = this.getNode(previousPath);\n\n while (previousNode && !iterator(previousNode)) {\n previousPath = PathUtils.decrement(previousPath);\n previousNode = this.getNode(previousPath);\n }\n\n if (previousNode) return [previousNode, previousPath];\n }\n\n return null;\n }\n /**\n * Get the next previous in the tree from a node that matches iterator\n *\n * This will not only check for siblings but instead move up the tree\n * returning the previous ancestor if no sibling is found.\n * Once a node is found, the last deepest child matching is returned\n *\n * @param {List} path\n * @param {Function} iterator\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousDeepMatchingNodeAndPath',\n value: function getPreviousDeepMatchingNodeAndPath(path) {\n var iterator = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {\n return true;\n };\n var match = this.getPreviousMatchingNodeAndPath(path);\n if (!match) return null;\n\n var _match2 = slicedToArray(match, 2),\n previousNode = _match2[0],\n previousPath = _match2[1];\n\n var childMatch = void 0;\n\n var assign = function assign() {\n childMatch = previousNode.object !== 'text' && previousNode.findLastDescendantAndPath(iterator, previousPath);\n return childMatch;\n };\n\n while (assign(childMatch)) {\n var _childMatch3 = childMatch;\n\n var _childMatch4 = slicedToArray(_childMatch3, 2);\n\n previousNode = _childMatch4[0];\n previousPath = _childMatch4[1];\n }\n\n if (!previousNode) return null;\n return iterator(previousNode) ? [previousNode, previousPath] : this.getPreviousDeepMatchingNodeAndPath(match[1], iterator);\n }\n /**\n * Get the previous sibling of a node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousSibling',\n value: function getPreviousSibling(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n if (path.last() === 0) return null;\n var p = PathUtils.decrement(path);\n var sibling = this.getNode(p);\n return sibling;\n }\n /**\n * Get the text node before a descendant text node.\n *\n * @param {List|String} path\n * @return {Node|Null}\n */\n\n }, {\n key: 'getPreviousText',\n value: function getPreviousText(path) {\n path = this.resolvePath(path);\n if (!path) return null;\n if (!path.size) return null;\n var previous = this.getPreviousNode(path);\n if (!previous) return null;\n var match = previous.getLastText();\n return match;\n }\n }, {\n key: 'getPreviousTextAndPath',\n value: function getPreviousTextAndPath(path) {\n if (!path) return null;\n if (!path.size) return null;\n var match = this.getPreviousDeepMatchingNodeAndPath(path, function (n) {\n return n.object === 'text';\n });\n return match;\n }\n /**\n * Get the indexes of the selection for a `range`, given an extra flag for\n * whether the node `isSelected`, to determine whether not finding matches\n * means everything is selected or nothing is.\n *\n * @param {Range} range\n * @param {Boolean} isSelected\n * @return {Object|Null}\n */\n\n }, {\n key: 'getSelectionIndexes',\n value: function getSelectionIndexes(range) {\n var isSelected = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n var start = range.start,\n end = range.end; // PERF: if we're not selected, we can exit early.\n\n if (!isSelected) {\n return null;\n } // if we've been given an invalid selection we can exit early.\n\n\n if (range.isUnset) {\n return null;\n } // PERF: if the start and end keys are the same, just check for the child\n // that contains that single key.\n\n\n if (start.key === end.key) {\n var child = this.getFurthestAncestor(start.key);\n var index = child ? this.nodes.indexOf(child) : null;\n return {\n start: index,\n end: index + 1\n };\n } // Otherwise, check all of the children...\n\n\n var startIndex = null;\n var endIndex = null;\n this.nodes.forEach(function (child, i) {\n if (child.object === 'text') {\n if (startIndex == null && child.key === start.key) startIndex = i;\n if (endIndex == null && child.key === end.key) endIndex = i + 1;\n } else {\n if (startIndex == null && child.hasDescendant(start.key)) startIndex = i;\n if (endIndex == null && child.hasDescendant(end.key)) endIndex = i + 1;\n } // PERF: exit early if both start and end have been found.\n\n\n return startIndex == null || endIndex == null;\n });\n if (isSelected && startIndex == null) startIndex = 0;\n if (isSelected && endIndex == null) endIndex = this.nodes.size;\n return startIndex == null ? null : {\n start: startIndex,\n end: endIndex\n };\n }\n /**\n * Get the descendent text node at an `offset`.\n *\n * @param {String} offset\n * @return {Node|Null}\n */\n\n }, {\n key: 'getTextAtOffset',\n value: function getTextAtOffset(offset) {\n // PERF: Add a few shortcuts for the obvious cases.\n if (offset === 0) return this.getFirstText();\n if (offset === this.text.length) return this.getLastText();\n if (offset < 0 || offset > this.text.length) return null;\n var length = 0;\n var text = this.getTexts().find(function (node, i, nodes) {\n length += node.text.length;\n return length > offset;\n });\n return text;\n }\n /**\n * Get the direction of the node's text.\n *\n * @return {String}\n */\n\n }, {\n key: 'getTextDirection',\n value: function getTextDirection() {\n var dir = direction__WEBPACK_IMPORTED_MODULE_8___default()(this.text);\n return dir === 'neutral' ? null : dir;\n }\n /**\n * Recursively get all of the child text nodes in order of appearance.\n *\n * @return {List}\n */\n\n }, {\n key: 'getTexts',\n value: function getTexts() {\n var array = this.getTextsAsArray();\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(array);\n }\n /**\n * Recursively get all the leaf text nodes in order of appearance, as array.\n *\n * @return {List}\n */\n\n }, {\n key: 'getTextsAsArray',\n value: function getTextsAsArray() {\n var array = [];\n this.nodes.forEach(function (node) {\n if (node.object === 'text') {\n array.push(node);\n } else {\n array = array.concat(node.getTextsAsArray());\n }\n });\n return array;\n }\n /**\n * Get all of the text nodes in a `range` as a List.\n *\n * @param {Range} range\n * @return {List}\n */\n\n }, {\n key: 'getTextsAtRange',\n value: function getTextsAtRange(range) {\n var arr = this.getTextsAtRangeAsArray(range);\n return Object(immutable__WEBPACK_IMPORTED_MODULE_1__[\"List\"])(arr);\n }\n /**\n * Get all of the text nodes in a `range` as an array.\n *\n * @param {Range} range\n * @return {Array}\n */\n\n }, {\n key: 'getTextsAtRangeAsArray',\n value: function getTextsAtRangeAsArray(range) {\n range = this.resolveRange(range);\n if (range.isUnset) return [];\n var _range10 = range,\n start = _range10.start,\n end = _range10.end;\n var texts = this.getTextsBetweenPathPositionsAsArray(start.path, end.path);\n return texts;\n }\n /**\n * Get all of the text nodes in a `range` as an array.\n * PERF: use key / path in arguments for cache\n *\n * @param {List|string} startPath\n * @param {List|string} endPath\n * @returns {Array}\n */\n\n }, {\n key: 'getTextsBetweenPositionsAsArray',\n value: function getTextsBetweenPositionsAsArray(startPath, endPath) {\n startPath = this.resolvePath(startPath);\n endPath = this.resolvePath(endPath);\n return this.getTextsBetweenPathPositionsAsArray(startPath, endPath);\n }\n /**\n * Get all of the text nodes in a `range` as an array.\n *\n * @param {List|falsey} startPath\n * @param {List|falsey} endPath\n * @returns {Array}\n */\n\n }, {\n key: 'getTextsBetweenPathPositionsAsArray',\n value: function getTextsBetweenPathPositionsAsArray(startPath, endPath) {\n // PERF: the most common case is when the range is in a single text node,\n // where we can avoid a lot of iterating of the tree.\n if (startPath && endPath && PathUtils.isEqual(startPath, endPath)) {\n return [this.getDescendant(startPath)];\n } else if (!startPath && !endPath) {\n return this.getTextsAsArray();\n }\n\n var startIndex = startPath ? startPath.get(0, 0) : 0;\n var endIndex = endPath ? endPath.get(0, this.nodes.size - 1) : this.nodes.size - 1;\n var array = [];\n this.nodes.slice(startIndex, endIndex + 1).forEach(function (node, i) {\n if (node.object === 'text') {\n array.push(node);\n } else {\n // For the node at start and end of this list, we want to provide a start and end path\n // For other nodes, we can just get all their text nodes, they are between the paths\n var childStartPath = startPath && i === 0 ? PathUtils.drop(startPath) : null;\n var childEndPath = endPath && i === endIndex - startIndex ? PathUtils.drop(endPath) : null;\n array = array.concat(node.getTextsBetweenPathPositionsAsArray(childStartPath, childEndPath));\n }\n });\n return array;\n }\n /**\n * Check if the node has block children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasBlockChildren',\n value: function hasBlockChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'block';\n }));\n }\n /**\n * Check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasChild',\n value: function hasChild(path) {\n var child = this.getChild(path);\n return !!child;\n }\n /**\n * Check if a node has inline children.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'hasInlineChildren',\n value: function hasInlineChildren() {\n return !!(this.nodes && this.nodes.find(function (n) {\n return n.object === 'inline' || n.object === 'text';\n }));\n }\n /**\n * Recursively check if a child node exists.\n *\n * @param {List|String} path\n * @return {Boolean}\n */\n\n }, {\n key: 'hasDescendant',\n value: function hasDescendant(path) {\n var descendant = this.getDescendant(path);\n return !!descendant;\n }\n /**\n * Check if a node has a void parent.\n *\n * @param {List|String} path\n * @param {Editor} editor\n * @return {Boolean}\n */\n\n }, {\n key: 'hasVoidParent',\n value: function hasVoidParent(path, editor) {\n Object(tiny_invariant__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(!Value.isValue(editor), 'As of Slate 0.42.0, the `node.hasVoidParent` method takes an `editor` instead of a `value`.');\n var closest = this.getClosestVoid(path, editor);\n return !!closest;\n }\n /**\n * Insert a `node`.\n *\n * @param {List|String} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'insertNode',\n value: function insertNode(path, node) {\n path = this.resolvePath(path);\n var index = path.last();\n var parentPath = PathUtils.lift(path);\n var parent = this.assertNode(parentPath);\n var nodes = parent.nodes.splice(index, 0, node);\n parent = parent.set('nodes', nodes);\n var ret = this.replaceNode(parentPath, parent);\n return ret;\n }\n /**\n * Insert `text` at `offset` in node by `path`.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {String} text\n * @param {Set} marks\n * @return {Node}\n */\n\n }, {\n key: 'insertText',\n value: function insertText(path, offset, text, marks) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.insertText(offset, text, marks);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n /**\n * Check whether the node is a leaf block.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafBlock',\n value: function isLeafBlock() {\n var object = this.object,\n nodes = this.nodes;\n if (object !== 'block') return false;\n if (!nodes.size) return true;\n return nodes.first().object !== 'block';\n }\n /**\n * Check whether the node is a leaf inline.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isLeafInline',\n value: function isLeafInline() {\n var object = this.object,\n nodes = this.nodes;\n if (object !== 'inline') return false;\n if (!nodes.size) return true;\n return nodes.first().object !== 'inline';\n }\n /**\n * Check whether a descendant node is inside a range. This will return true for all\n * text nodes inside the range and all ancestors of those text nodes up to this node.\n *\n * @param {List|string} path\n * @param {Range} range\n * @return {Node}\n */\n\n }, {\n key: 'isNodeInRange',\n value: function isNodeInRange(path, range) {\n this.assertDescendant(path);\n path = this.resolvePath(path);\n range = this.resolveRange(range);\n if (range.isUnset) return false;\n var toStart = PathUtils.compare(path, range.start.path);\n var toEnd = range.start.key === range.end.key ? toStart : PathUtils.compare(path, range.end.path);\n var is$$1 = toStart !== -1 && toEnd !== 1;\n return is$$1;\n }\n /**\n * Map all child nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapChildren',\n value: function mapChildren(iterator) {\n var _this6 = this;\n\n var nodes = this.nodes;\n nodes.forEach(function (node, i) {\n var ret = iterator(node, i, _this6.nodes);\n if (ret !== node) nodes = nodes.set(ret.key, ret);\n });\n var ret = this.set('nodes', nodes);\n return ret;\n }\n /**\n * Map all descendant nodes, updating them in their parents. This method is\n * optimized to not return a new node if no changes are made.\n *\n * @param {Function} iterator\n * @return {Node}\n */\n\n }, {\n key: 'mapDescendants',\n value: function mapDescendants(iterator) {\n var _this7 = this;\n\n var nodes = this.nodes;\n nodes.forEach(function (node, index) {\n var ret = node;\n if (ret.object !== 'text') ret = ret.mapDescendants(iterator);\n ret = iterator(ret, index, _this7.nodes);\n if (ret === node) return;\n nodes = nodes.set(index, ret);\n });\n var ret = this.set('nodes', nodes);\n return ret;\n }\n /**\n * Merge a node backwards its previous sibling.\n *\n * @param {List|Key} path\n * @return {Node}\n */\n\n }, {\n key: 'mergeNode',\n value: function mergeNode(path) {\n var b = this.assertNode(path);\n path = this.resolvePath(path);\n\n if (path.last() === 0) {\n throw new Error('Unable to merge node because it has no previous sibling: ' + b);\n }\n\n var withPath = PathUtils.decrement(path);\n var a = this.assertNode(withPath);\n\n if (a.object !== b.object) {\n throw new Error('Unable to merge two different kinds of nodes: ' + a + ' and ' + b);\n }\n\n var newNode = a.object === 'text' ? a.mergeText(b) : a.set('nodes', a.nodes.concat(b.nodes));\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.removeNode(withPath);\n ret = ret.insertNode(withPath, newNode);\n return ret;\n }\n /**\n * Move a node by `path` to `newPath`.\n *\n * A `newIndex` can be provided when move nodes by `key`, to account for not\n * being able to have a key for a location in the tree that doesn't exist yet.\n *\n * @param {List|Key} path\n * @param {List|Key} newPath\n * @param {Number} newIndex\n * @return {Node}\n */\n\n }, {\n key: 'moveNode',\n value: function moveNode(path, newPath) {\n var newIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 0;\n var node = this.assertNode(path);\n path = this.resolvePath(path);\n newPath = this.resolvePath(newPath, newIndex);\n var newParentPath = PathUtils.lift(newPath);\n this.assertNode(newParentPath); // TODO: this is a bit hacky, re-creating the operation that led to this method being called\n // Alternative 1: pass the operation through from apply -> value.moveNode\n // Alternative 2: add a third property to the operation called \"transformedNewPath\", pass that through\n\n var op = Operation.create({\n type: 'move_node',\n path: path,\n newPath: newPath\n });\n newPath = PathUtils.transform(path, op).first();\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(newPath, node);\n return ret;\n }\n /**\n * Remove mark from text at `offset` and `length` in node.\n *\n * @param {List} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @return {Node}\n */\n\n }, {\n key: 'removeMark',\n value: function removeMark(path, offset, length, mark) {\n var node = this.assertDescendant(path);\n path = this.resolvePath(path);\n node = node.removeMark(offset, length, mark);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n /**\n * Remove a node.\n *\n * @param {List|String} path\n * @return {Node}\n */\n\n }, {\n key: 'removeNode',\n value: function removeNode(path) {\n this.assertDescendant(path);\n path = this.resolvePath(path);\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.deleteIn(deep);\n return ret;\n }\n /**\n * Remove `text` at `offset` in node.\n *\n * @param {List|Key} path\n * @param {Number} offset\n * @param {String} text\n * @return {Node}\n */\n\n }, {\n key: 'removeText',\n value: function removeText(path, offset, text) {\n var node = this.assertDescendant(path);\n node = node.removeText(offset, text.length);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n /**\n * Replace a `node` in the tree.\n *\n * @param {List|Key} path\n * @param {Node} node\n * @return {Node}\n */\n\n }, {\n key: 'replaceNode',\n value: function replaceNode(path, node) {\n path = this.resolvePath(path);\n\n if (!path) {\n throw new Error('Unable to replace a node because it could not be found in the first place: ' + path);\n }\n\n if (!path.size) return node;\n this.assertNode(path);\n var deep = path.flatMap(function (x) {\n return ['nodes', x];\n });\n var ret = this.setIn(deep, node);\n return ret;\n }\n /**\n * Resolve a `decoration`, relative to the node, ensuring that the keys and\n * offsets in the decoration exist and that they are synced with the paths.\n *\n * @param {Decoration|Object} decoration\n * @return {Decoration}\n */\n\n }, {\n key: 'resolveDecoration',\n value: function resolveDecoration(decoration) {\n decoration = Decoration.create(decoration);\n decoration = decoration.normalize(this);\n return decoration;\n }\n /**\n * Resolve a `point`, relative to the node, ensuring that the keys and\n * offsets in the point exist and that they are synced with the paths.\n *\n * @param {Point|Object} point\n * @return {Point}\n */\n\n }, {\n key: 'resolvePoint',\n value: function resolvePoint(point) {\n point = Point.create(point);\n point = point.normalize(this);\n return point;\n }\n /**\n * Resolve a `range`, relative to the node, ensuring that the keys and\n * offsets in the range exist and that they are synced with the paths.\n *\n * @param {Range|Object} range\n * @return {Range}\n */\n\n }, {\n key: 'resolveRange',\n value: function resolveRange(range) {\n range = Range.create(range);\n range = range.normalize(this);\n return range;\n }\n /**\n * Resolve a `selection`, relative to the node, ensuring that the keys and\n * offsets in the selection exist and that they are synced with the paths.\n *\n * @param {Selection|Object} selection\n * @return {Selection}\n */\n\n }, {\n key: 'resolveSelection',\n value: function resolveSelection(selection) {\n selection = Selection.create(selection);\n selection = selection.normalize(this);\n return selection;\n }\n /**\n * Set `properties` on a node.\n *\n * @param {List|String} path\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setNode',\n value: function setNode(path, properties) {\n var node = this.assertNode(path);\n node = node.merge(properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n /**\n * Set `properties` on `mark` on text at `offset` and `length` in node.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @param {Number} length\n * @param {Mark} mark\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'setMark',\n value: function setMark(path, offset, length, mark, properties) {\n var node = this.assertNode(path);\n node = node.updateMark(offset, length, mark, properties);\n var ret = this.replaceNode(path, node);\n return ret;\n }\n /**\n * Split a node by `path` at `position` with optional `properties` to apply\n * to the newly split node.\n *\n * @param {List|String} path\n * @param {Number} position\n * @param {Object} properties\n * @return {Node}\n */\n\n }, {\n key: 'splitNode',\n value: function splitNode(path, position, properties) {\n var child = this.assertNode(path);\n path = this.resolvePath(path);\n var a = void 0;\n var b = void 0;\n\n if (child.object === 'text') {\n var _child$splitText = child.splitText(position);\n\n var _child$splitText2 = slicedToArray(_child$splitText, 2);\n\n a = _child$splitText2[0];\n b = _child$splitText2[1];\n } else {\n var befores = child.nodes.take(position);\n var afters = child.nodes.skip(position);\n a = child.set('nodes', befores);\n b = child.set('nodes', afters).regenerateKey();\n }\n\n if (properties && child.object !== 'text') {\n b = b.merge(properties);\n }\n\n var ret = this;\n ret = ret.removeNode(path);\n ret = ret.insertNode(path, b);\n ret = ret.insertNode(path, a);\n return ret;\n }\n }]);\n return ElementInterface;\n}();\n/**\n * Mix in assertion variants.\n */\n\n\nvar ASSERTS = ['Child', 'Depth', 'Descendant', 'Node', 'Parent', 'Path'];\n\nvar _loop2 = function _loop2(method) {\n ElementInterface.prototype['assert' + method] = function (path) {\n for (var _len3 = arguments.length, args = Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n var ret = this['get' + method].apply(this, [path].concat(args));\n\n if (ret == null) {\n throw new Error('`Node.assert' + method + '` could not find node with path or key: ' + path);\n }\n\n return ret;\n };\n};\n\nvar _iteratorNormalCompletion$1 = true;\nvar _didIteratorError$1 = false;\nvar _iteratorError$1 = undefined;\n\ntry {\n for (var _iterator$1 = ASSERTS[Symbol.iterator](), _step$1; !(_iteratorNormalCompletion$1 = (_step$1 = _iterator$1.next()).done); _iteratorNormalCompletion$1 = true) {\n var method$1 = _step$1.value;\n\n _loop2(method$1);\n }\n /**\n * Memoize read methods.\n */\n\n} catch (err) {\n _didIteratorError$1 = true;\n _iteratorError$1 = err;\n} finally {\n try {\n if (!_iteratorNormalCompletion$1 && _iterator$1.return) {\n _iterator$1.return();\n }\n } finally {\n if (_didIteratorError$1) {\n throw _iteratorError$1;\n }\n }\n}\n\nmemoize(ElementInterface.prototype, ['getBlocksAsArray', 'getLeafBlocksAtRangeAsArray', 'getBlocksByTypeAsArray', 'getDecorations', 'getFragmentAtRange', 'getInlinesAsArray', 'getInlinesByTypeAsArray', 'getLeafBlocksAtRangeAsArray', 'getLeafInlinesAtRangeAsArray', 'getMarksAsArray', 'getMarksAtPosition', 'getNodesAtRange', 'getOrderedMarksBetweenPositions', 'getInsertMarksAtRange', 'getMarksByTypeAsArray', 'getNextBlock', 'getOffset', 'getOffsetAtRange', 'getPreviousBlock', 'getRootBlocksAtRange', 'getRootInlinesAtRangeAsArray', 'getTextAtOffset', 'getTextDirection', 'getTextsAsArray', 'getTextsBetweenPathPositionsAsArray']);\n/**\n * Mix in the element interface.\n */\n\nmixin(ElementInterface, [Block, Document, Inline]);\n/**\n * The interface that `Decoration`, `Range` and `Selection` all implement, to make\n * working anchor and focus points easier.\n *\n * @type {Class}\n */\n\nvar RangeInterface = function () {\n function RangeInterface() {\n classCallCheck(this, RangeInterface);\n }\n\n createClass(RangeInterface, [{\n key: 'flip',\n\n /**\n * Flip the range.\n *\n * @return {Range}\n */\n value: function flip() {\n var range = this.setPoints([this.focus, this.anchor]);\n return range;\n }\n /**\n * Move the anchor and focus offsets forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveForward',\n value: function moveForward(n) {\n return this.updatePoints(function (point) {\n return point.moveForward(n);\n });\n }\n /**\n * Move the anchor and focus offsets backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveBackward',\n value: function moveBackward(n) {\n return this.updatePoints(function (point) {\n return point.moveBackward(n);\n });\n }\n /**\n * Move the anchor offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorBackward',\n value: function moveAnchorBackward(n) {\n var range = this.setAnchor(this.anchor.moveBackward(n));\n return range;\n }\n /**\n * Move the anchor offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorForward',\n value: function moveAnchorForward(n) {\n var range = this.setAnchor(this.anchor.moveForward(n));\n return range;\n }\n /**\n * Move the range's anchor point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorTo',\n value: function moveAnchorTo(path, offset) {\n var range = this.setAnchor(this.anchor.moveTo(path, offset));\n return range;\n }\n /**\n * Move the range's anchor point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToStartOfNode',\n value: function moveAnchorToStartOfNode(node) {\n var range = this.setAnchor(this.anchor.moveToStartOfNode(node));\n return range;\n }\n /**\n * Move the range's anchor point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveAnchorToEndOfNode',\n value: function moveAnchorToEndOfNode(node) {\n var range = this.setAnchor(this.anchor.moveToEndOfNode(node));\n return range;\n }\n /**\n * Move the end offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveEndBackward',\n value: function moveEndBackward(n) {\n var range = this.setEnd(this.end.moveBackward(n));\n return range;\n }\n /**\n * Move the end offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveEndForward',\n value: function moveEndForward(n) {\n var range = this.setEnd(this.end.moveForward(n));\n return range;\n }\n /**\n * Move the range's end point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveEndTo',\n value: function moveEndTo(path, offset) {\n var range = this.setEnd(this.end.moveTo(path, offset));\n return range;\n }\n /**\n * Move the range's end point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveEndToStartOfNode',\n value: function moveEndToStartOfNode(node) {\n var range = this.setEnd(this.end.moveToStartOfNode(node));\n return range;\n }\n /**\n * Move the range's end point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveEndToEndOfNode',\n value: function moveEndToEndOfNode(node) {\n var range = this.setEnd(this.end.moveToEndOfNode(node));\n return range;\n }\n /**\n * Move the focus offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusBackward',\n value: function moveFocusBackward(n) {\n var range = this.setFocus(this.focus.moveBackward(n));\n return range;\n }\n /**\n * Move the focus offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusForward',\n value: function moveFocusForward(n) {\n var range = this.setFocus(this.focus.moveForward(n));\n return range;\n }\n /**\n * Move the range's focus point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusTo',\n value: function moveFocusTo(path, offset) {\n var range = this.setFocus(this.focus.moveTo(path, offset));\n return range;\n }\n /**\n * Move the range's focus point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToStartOfNode',\n value: function moveFocusToStartOfNode(node) {\n var range = this.setFocus(this.focus.moveToStartOfNode(node));\n return range;\n }\n /**\n * Move the range's focus point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveFocusToEndOfNode',\n value: function moveFocusToEndOfNode(node) {\n var range = this.setFocus(this.focus.moveToEndOfNode(node));\n return range;\n }\n /**\n * Move the start offset backward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveStartBackward',\n value: function moveStartBackward(n) {\n var range = this.setStart(this.start.moveBackward(n));\n return range;\n }\n /**\n * Move the start offset forward `n` characters.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveStartForward',\n value: function moveStartForward(n) {\n var range = this.setStart(this.start.moveForward(n));\n return range;\n }\n /**\n * Move the range's start point to a new `path` and `offset`.\n *\n * Optionally, the `path` can be a key string, or omitted entirely in which\n * case it would be the offset number.\n *\n * @param {List|String} path\n * @param {Number} offset\n * @return {Range}\n */\n\n }, {\n key: 'moveStartTo',\n value: function moveStartTo(path, offset) {\n var range = this.setStart(this.start.moveTo(path, offset));\n return range;\n }\n /**\n * Move the range's start point to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveStartToStartOfNode',\n value: function moveStartToStartOfNode(node) {\n var range = this.setStart(this.start.moveToStartOfNode(node));\n return range;\n }\n /**\n * Move the range's start point to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveStartToEndOfNode',\n value: function moveStartToEndOfNode(node) {\n var range = this.setStart(this.start.moveToEndOfNode(node));\n return range;\n }\n /**\n * Move range's points to a new `path` and `offset`.\n *\n * @param {Number} n\n * @return {Range}\n */\n\n }, {\n key: 'moveTo',\n value: function moveTo(path, offset) {\n return this.updatePoints(function (point) {\n return point.moveTo(path, offset);\n });\n }\n /**\n * Move the focus point to the anchor point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToAnchor',\n value: function moveToAnchor() {\n var range = this.setFocus(this.anchor);\n return range;\n }\n /**\n * Move the start point to the end point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToEnd',\n value: function moveToEnd() {\n var range = this.setStart(this.end);\n return range;\n }\n /**\n * Move the range's points to the end of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveToEndOfNode',\n value: function moveToEndOfNode(node) {\n return this.updatePoints(function (point) {\n return point.moveToEndOfNode(node);\n });\n }\n /**\n * Move the anchor point to the focus point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToFocus',\n value: function moveToFocus() {\n var range = this.setAnchor(this.focus);\n return range;\n }\n /**\n * Move to the entire range of `start` and `end` nodes.\n *\n * @param {Node} start\n * @param {Node} end (optional)\n * @return {Range}\n */\n\n }, {\n key: 'moveToRangeOfNode',\n value: function moveToRangeOfNode(start) {\n var end = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : start;\n var range = this.setPoints([this.anchor.moveToStartOfNode(start), this.focus.moveToEndOfNode(end)]);\n return range;\n }\n /**\n * Move the end point to the start point.\n *\n * @return {Range}\n */\n\n }, {\n key: 'moveToStart',\n value: function moveToStart() {\n var range = this.setEnd(this.start);\n return range;\n }\n /**\n * Move the range's points to the start of a `node`.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'moveToStartOfNode',\n value: function moveToStartOfNode(node) {\n return this.updatePoints(function (point) {\n return point.moveToStartOfNode(node);\n });\n }\n /**\n * Normalize the range, relative to a `node`, ensuring that the anchor\n * and focus nodes of the range always refer to leaf text nodes.\n *\n * @param {Node} node\n * @return {Range}\n */\n\n }, {\n key: 'normalize',\n value: function normalize(node) {\n return this.updatePoints(function (point) {\n return point.normalize(node);\n });\n }\n /**\n * Set the anchor point to a new `anchor`.\n *\n * @param {Point} anchor\n * @return {Range}\n */\n\n }, {\n key: 'setAnchor',\n value: function setAnchor(anchor) {\n var range = this.set('anchor', anchor);\n return range;\n }\n /**\n * Set the end point to a new `point`.\n *\n * @param {Point} point\n * @return {Range}\n */\n\n }, {\n key: 'setEnd',\n value: function setEnd(point) {\n var range = this.isBackward ? this.setAnchor(point) : this.setFocus(point);\n return range;\n }\n /**\n * Set the focus point to a new `focus`.\n *\n * @param {Point} focus\n * @return {Range}\n */\n\n }, {\n key: 'setFocus',\n value: function setFocus(focus) {\n var range = this.set('focus', focus);\n return range;\n }\n /**\n * Set the anchor and focus points to new `values`.\n *\n * @param {Array} values\n * @return {Range}\n */\n\n }, {\n key: 'setPoints',\n value: function setPoints(values) {\n var _values = slicedToArray(values, 2),\n anchor = _values[0],\n focus = _values[1];\n\n var range = this.set('anchor', anchor).set('focus', focus);\n return range;\n }\n /**\n * Set the anchor and focus points with `updater` callback\n *\n * @param {Function} updater\n * @return {Range}\n */\n\n }, {\n key: 'updatePoints',\n value: function updatePoints(updater) {\n var anchor = this.anchor,\n focus = this.focus;\n anchor = updater(anchor);\n focus = updater(focus);\n return this.merge({\n anchor: anchor,\n focus: focus\n });\n }\n /**\n * Set the start point to a new `point`.\n *\n * @param {Point} point\n * @return {Range}\n */\n\n }, {\n key: 'setStart',\n value: function setStart(point) {\n var range = this.isBackward ? this.setFocus(point) : this.setAnchor(point);\n return range;\n }\n /**\n * Set new `properties` on the range.\n *\n * @param {Object|Range} properties\n * @return {Range}\n */\n\n }, {\n key: 'setProperties',\n value: function setProperties(properties) {\n properties = Range.createProperties(properties);\n var _properties = properties,\n anchor = _properties.anchor,\n focus = _properties.focus,\n props = objectWithoutProperties(_properties, ['anchor', 'focus']);\n\n if (anchor) {\n props.anchor = Point.create(anchor);\n }\n\n if (focus) {\n props.focus = Point.create(focus);\n }\n\n var range = this.merge(props);\n return range;\n }\n /**\n * Return a JSON representation of the range.\n *\n * @param {Object} options\n * @return {Object}\n */\n\n }, {\n key: 'toJSON',\n value: function toJSON() {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var object = {\n object: this.object,\n anchor: this.anchor.toJSON(options),\n focus: this.focus.toJSON(options)\n };\n return object;\n }\n /**\n * Return a `Range` instance from any range-like instance.\n *\n * @return {Range}\n */\n\n }, {\n key: 'toRange',\n value: function toRange() {\n var properties = Range.createProperties(this);\n var range = Range.create(properties);\n return range;\n }\n /**\n * Unset the range.\n *\n * @return {Range}\n */\n\n }, {\n key: 'unset',\n value: function unset() {\n var range = this.updatePoints(function (p) {\n return p.unset();\n });\n return range;\n }\n }, {\n key: 'isCollapsed',\n\n /**\n * Check whether the range is collapsed.\n *\n * @return {Boolean}\n */\n get: function get$$1() {\n return this.anchor === this.focus || this.anchor.key === this.focus.key && this.anchor.offset === this.focus.offset;\n }\n /**\n * Check whether the range is expanded.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isExpanded',\n get: function get$$1() {\n return !this.isCollapsed;\n }\n /**\n * Check whether the range is backward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isBackward',\n get: function get$$1() {\n var isUnset = this.isUnset,\n anchor = this.anchor,\n focus = this.focus;\n\n if (isUnset) {\n return null;\n }\n\n if (anchor.key === focus.key) {\n return anchor.offset > focus.offset;\n }\n\n var isBackward = PathUtils.isBefore(focus.path, anchor.path);\n return isBackward;\n }\n /**\n * Check whether the range is forward.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isForward',\n get: function get$$1() {\n var isBackward = this.isBackward;\n var isForward = isBackward == null ? null : !isBackward;\n return isForward;\n }\n /**\n * Check whether the range isn't set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isUnset',\n get: function get$$1() {\n var anchor = this.anchor,\n focus = this.focus;\n var isUnset = anchor.isUnset || focus.isUnset;\n return isUnset;\n }\n /**\n * Check whether the range is set.\n *\n * @return {Boolean}\n */\n\n }, {\n key: 'isSet',\n get: function get$$1() {\n return !this.isUnset;\n }\n /**\n * Get the start point.\n *\n * @return {String}\n */\n\n }, {\n key: 'start',\n get: function get$$1() {\n return this.isBackward ? this.focus : this.anchor;\n }\n /**\n * Get the end point.\n *\n * @return {String}\n */\n\n }, {\n key: 'end',\n get: function get$$1() {\n return this.isBackward ? this.anchor : this.focus;\n }\n }]);\n return RangeInterface;\n}();\n/**\n * Mix in the range interface.\n *\n * @param {Record}\n */\n\n\nmixin(RangeInterface, [Decoration, Range, Selection]);\nvar index = {\n Block: Block,\n Change: Change,\n Data: Data,\n Decoration: Decoration,\n Document: Document,\n Editor: Editor,\n Inline: Inline,\n KeyUtils: KeyUtils,\n Leaf: Leaf,\n Mark: Mark,\n Node: Node,\n Operation: Operation,\n PathUtils: PathUtils,\n Point: Point,\n Range: Range,\n resetMemoization: resetMemoization,\n Selection: Selection,\n Text: Text,\n TextUtils: TextUtils,\n useMemoization: useMemoization,\n Value: Value\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n\n//# sourceURL=webpack:///./node_modules/slate/lib/slate.es.js?"); /***/ }), @@ -19631,7 +19188,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, exports, __webpack_require__) { "use strict"; -eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console; // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n\n\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = Object({\"NODE_ENV\":\"production\",\"PUBLIC_URL\":\"\",\"REACT_APP_BASENAME\":\"\",\"REACT_APP_AUTH_SERVER\":\"https://betatoken.dictybase.local\",\"REACT_APP_API_SERVER\":\"https://betaapi.dictybase.local\",\"REACT_APP_GA_TRACKING_ID\":\"\",\"REACT_APP_NAVBAR_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/navbar/navbar.json\",\"REACT_APP_FOOTER_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/footer/footer.json\",\"REACT_APP_DOWNLOAD_TABS_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/downloads/organisms.dev.json\"}).DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/slate/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/slate/node_modules/debug/src/browser.js?"); +eval("/* WEBPACK VAR INJECTION */(function(process) {\n\nfunction _typeof(obj) {\n if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") {\n _typeof = function _typeof(obj) {\n return typeof obj;\n };\n } else {\n _typeof = function _typeof(obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n }\n\n return _typeof(obj);\n}\n/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\n\nexports.log = log;\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\n/**\n * Colors.\n */\n\nexports.colors = ['#0000CC', '#0000FF', '#0033CC', '#0033FF', '#0066CC', '#0066FF', '#0099CC', '#0099FF', '#00CC00', '#00CC33', '#00CC66', '#00CC99', '#00CCCC', '#00CCFF', '#3300CC', '#3300FF', '#3333CC', '#3333FF', '#3366CC', '#3366FF', '#3399CC', '#3399FF', '#33CC00', '#33CC33', '#33CC66', '#33CC99', '#33CCCC', '#33CCFF', '#6600CC', '#6600FF', '#6633CC', '#6633FF', '#66CC00', '#66CC33', '#9900CC', '#9900FF', '#9933CC', '#9933FF', '#99CC00', '#99CC33', '#CC0000', '#CC0033', '#CC0066', '#CC0099', '#CC00CC', '#CC00FF', '#CC3300', '#CC3333', '#CC3366', '#CC3399', '#CC33CC', '#CC33FF', '#CC6600', '#CC6633', '#CC9900', '#CC9933', '#CCCC00', '#CCCC33', '#FF0000', '#FF0033', '#FF0066', '#FF0099', '#FF00CC', '#FF00FF', '#FF3300', '#FF3333', '#FF3366', '#FF3399', '#FF33CC', '#FF33FF', '#FF6600', '#FF6633', '#FF9900', '#FF9933', '#FFCC00', '#FFCC33'];\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n// eslint-disable-next-line complexity\n\nfunction useColors() {\n // NB: In an Electron preload script, document will be defined but not fully\n // initialized. Since we know we're in Chrome, we'll just detect this case\n // explicitly\n if (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n return true;\n } // Internet Explorer and Edge do not support colors.\n\n\n if (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n return false;\n } // Is webkit? http://stackoverflow.com/a/16459606/376773\n // document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\n\n return typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance || // Is firebug? http://stackoverflow.com/a/398120/376773\n typeof window !== 'undefined' && window.console && (window.console.firebug || window.console.exception && window.console.table) || // Is firefox >= v31?\n // https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31 || // Double check webkit in userAgent just in case we are in a worker\n typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/);\n}\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\n\nfunction formatArgs(args) {\n args[0] = (this.useColors ? '%c' : '') + this.namespace + (this.useColors ? ' %c' : ' ') + args[0] + (this.useColors ? '%c ' : ' ') + '+' + module.exports.humanize(this.diff);\n\n if (!this.useColors) {\n return;\n }\n\n var c = 'color: ' + this.color;\n args.splice(1, 0, c, 'color: inherit'); // The final \"%c\" is somewhat tricky, because there could be other\n // arguments passed either before or after the %c, so we need to\n // figure out the correct index to insert the CSS into\n\n var index = 0;\n var lastC = 0;\n args[0].replace(/%[a-zA-Z%]/g, function (match) {\n if (match === '%%') {\n return;\n }\n\n index++;\n\n if (match === '%c') {\n // We only are interested in the *last* %c\n // (the user may have provided their own)\n lastC = index;\n }\n });\n args.splice(lastC, 0, c);\n}\n/**\n * Invokes `console.log()` when available.\n * No-op when `console.log` is not a \"function\".\n *\n * @api public\n */\n\n\nfunction log() {\n var _console; // This hackery is required for IE8/9, where\n // the `console.log` function doesn't have 'apply'\n\n\n return (typeof console === \"undefined\" ? \"undefined\" : _typeof(console)) === 'object' && console.log && (_console = console).log.apply(_console, arguments);\n}\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\n\n\nfunction save(namespaces) {\n try {\n if (namespaces) {\n exports.storage.setItem('debug', namespaces);\n } else {\n exports.storage.removeItem('debug');\n }\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\n\n\nfunction load() {\n var r;\n\n try {\n r = exports.storage.getItem('debug');\n } catch (error) {} // Swallow\n // XXX (@Qix-) should we be logging these?\n // If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\n\n if (!r && typeof process !== 'undefined' && 'env' in process) {\n r = Object({\"NODE_ENV\":\"production\",\"PUBLIC_URL\":\"\",\"REACT_APP_BASENAME\":\"\",\"REACT_APP_AUTH_SERVER\":\"https://betatoken.dictybase.org\",\"REACT_APP_API_SERVER\":\"https://betaapi.dictybase.org\",\"REACT_APP_GA_TRACKING_ID\":\"UA-16352781-8\",\"REACT_APP_NAVBAR_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/navbar/navbar.json\",\"REACT_APP_FOOTER_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/footer/footer.json\",\"REACT_APP_DOWNLOAD_TABS_JSON\":\"https://raw.githubusercontent.com/dictyBase/migration-data/master/downloads/organisms.staging.json\"}).DEBUG;\n }\n\n return r;\n}\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\n\nfunction localstorage() {\n try {\n // TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n // The Browser also has localStorage in the global context.\n return localStorage;\n } catch (error) {// Swallow\n // XXX (@Qix-) should we be logging these?\n }\n}\n\nmodule.exports = __webpack_require__(/*! ./common */ \"./node_modules/slate/node_modules/debug/src/common.js\")(exports);\nvar formatters = module.exports.formatters;\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n try {\n return JSON.stringify(v);\n } catch (error) {\n return '[UnexpectedJSONParseError]: ' + error.message;\n }\n};\n/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! ./../../../../process/browser.js */ \"./node_modules/process/browser.js\")))\n\n//# sourceURL=webpack:///./node_modules/slate/node_modules/debug/src/browser.js?"); /***/ }), @@ -19647,6 +19204,18 @@ eval("\n/**\n * This is the common logic for both the Node.js and web browser\n /***/ }), +/***/ "./node_modules/slate/node_modules/tiny-warning/dist/tiny-warning.esm.js": +/*!*******************************************************************************!*\ + !*** ./node_modules/slate/node_modules/tiny-warning/dist/tiny-warning.esm.js ***! + \*******************************************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\nvar isProduction = \"production\" === 'production';\n\nvar index = function index(condition, message) {\n if (!isProduction) {\n if (condition) {\n return;\n }\n\n console.warn(message);\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (index);\n\n//# sourceURL=webpack:///./node_modules/slate/node_modules/tiny-warning/dist/tiny-warning.esm.js?"); + +/***/ }), + /***/ "./node_modules/sourcemap-codec/dist/sourcemap-codec.es.js": /*!*****************************************************************!*\ !*** ./node_modules/sourcemap-codec/dist/sourcemap-codec.es.js ***! @@ -19659,6 +19228,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ }), +/***/ "./node_modules/strip-html-comments/index.js": +/*!***************************************************!*\ + !*** ./node_modules/strip-html-comments/index.js ***! + \***************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +eval("\n\nmodule.exports = function stripHtmlComments(html) {\n if (typeof html !== 'string') {\n throw new TypeError('strip-html-comments expected a string');\n }\n\n return html.replace(/)/g, '');\n};\n\n//# sourceURL=webpack:///./node_modules/strip-html-comments/index.js?"); + +/***/ }), + /***/ "./node_modules/style-loader/lib/addStyles.js": /*!****************************************************!*\ !*** ./node_modules/style-loader/lib/addStyles.js ***! @@ -19712,7 +19293,7 @@ eval("/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {\n /* eslint-disable */\n true ? module['exports'] = factory(null) : undefined;\n})(\n/** @param {*=} options */\nfunction factory(options) {\n /* eslint-disable */\n 'use strict';\n /**\n * Notes\n *\n * The [''] pattern is used to support closure compiler\n * the jsdoc signatures are also used to the same effect\n *\n * ----\n *\n * int + int + int === n4 [faster]\n *\n * vs\n *\n * int === n1 && int === n2 && int === n3\n *\n * ----\n *\n * switch (int) { case ints...} [faster]\n *\n * vs\n *\n * if (int == 1 && int === 2 ...)\n *\n * ----\n *\n * The (first*n1 + second*n2 + third*n3) format used in the property parser\n * is a simple way to hash the sequence of characters\n * taking into account the index they occur in\n * since any number of 3 character sequences could produce duplicates.\n *\n * On the other hand sequences that are directly tied to the index of the character\n * resolve a far more accurate measure, it's also faster\n * to evaluate one condition in a switch statement\n * than three in an if statement regardless of the added math.\n *\n * This allows the vendor prefixer to be both small and fast.\n */\n\n var nullptn = /^\\0+/g;\n /* matches leading null characters */\n\n var formatptn = /[\\0\\r\\f]/g;\n /* matches new line, null and formfeed characters */\n\n var colonptn = /: */g;\n /* splits animation rules */\n\n var cursorptn = /zoo|gra/;\n /* assert cursor varient */\n\n var transformptn = /([,: ])(transform)/g;\n /* vendor prefix transform, older webkit */\n\n var animationptn = /,+\\s*(?![^(]*[)])/g;\n /* splits multiple shorthand notation animations */\n\n var propertiesptn = / +\\s*(?![^(]*[)])/g;\n /* animation properties */\n\n var elementptn = / *[\\0] */g;\n /* selector elements */\n\n var selectorptn = /,\\r+?/g;\n /* splits selectors */\n\n var andptn = /([\\t\\r\\n ])*\\f?&/g;\n /* match & */\n\n var escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g;\n /* matches :global(.*) */\n\n var invalidptn = /\\W+/g;\n /* removes invalid characters from keyframes */\n\n var keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/;\n /* matches @keyframes $1 */\n\n var plcholdrptn = /::(place)/g;\n /* match ::placeholder varient */\n\n var readonlyptn = /:(read-only)/g;\n /* match :read-only varient */\n\n var beforeptn = /\\s+(?=[{\\];=:>])/g;\n /* matches \\s before ] ; = : */\n\n var afterptn = /([[}=:>])\\s+/g;\n /* matches \\s after characters [ } = : */\n\n var tailptn = /(\\{[^{]+?);(?=\\})/g;\n /* matches tail semi-colons ;} */\n\n var whiteptn = /\\s{2,}/g;\n /* matches repeating whitespace */\n\n var pseudoptn = /([^\\(])(:+) */g;\n /* pseudo element */\n\n var writingptn = /[svh]\\w+-[tblr]{2}/;\n /* match writing mode property values */\n\n var gradientptn = /([\\w-]+t\\()/g;\n /* match *gradient property */\n\n var supportsptn = /\\(\\s*(.*)\\s*\\)/g;\n /* match supports (groups) */\n\n var propertyptn = /([\\s\\S]*?);/g;\n /* match properties leading semicolon */\n\n var selfptn = /-self|flex-/g;\n /* match flex- and -self in align-self: flex-*; */\n\n var pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/;\n /* extrats :readonly or :placholder from selector */\n\n var trimptn = /[ \\t]+$/;\n /* match tail whitspace */\n\n var dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/;\n /* match max/min/fit-content, fill-available */\n\n var imgsrcptn = /([^-])(image-set\\()/;\n /* vendors */\n\n var webkit = '-webkit-';\n var moz = '-moz-';\n var ms = '-ms-';\n /* character codes */\n\n var SEMICOLON = 59;\n /* ; */\n\n var CLOSEBRACES = 125;\n /* } */\n\n var OPENBRACES = 123;\n /* { */\n\n var OPENPARENTHESES = 40;\n /* ( */\n\n var CLOSEPARENTHESES = 41;\n /* ) */\n\n var OPENBRACKET = 91;\n /* [ */\n\n var CLOSEBRACKET = 93;\n /* ] */\n\n var NEWLINE = 10;\n /* \\n */\n\n var CARRIAGE = 13;\n /* \\r */\n\n var TAB = 9;\n /* \\t */\n\n var AT = 64;\n /* @ */\n\n var SPACE = 32;\n /* */\n\n var AND = 38;\n /* & */\n\n var DASH = 45;\n /* - */\n\n var UNDERSCORE = 95;\n /* _ */\n\n var STAR = 42;\n /* * */\n\n var COMMA = 44;\n /* , */\n\n var COLON = 58;\n /* : */\n\n var SINGLEQUOTE = 39;\n /* ' */\n\n var DOUBLEQUOTE = 34;\n /* \" */\n\n var FOWARDSLASH = 47;\n /* / */\n\n var GREATERTHAN = 62;\n /* > */\n\n var PLUS = 43;\n /* + */\n\n var TILDE = 126;\n /* ~ */\n\n var NULL = 0;\n /* \\0 */\n\n var FORMFEED = 12;\n /* \\f */\n\n var VERTICALTAB = 11;\n /* \\v */\n\n /* special identifiers */\n\n var KEYFRAME = 107;\n /* k */\n\n var MEDIA = 109;\n /* m */\n\n var SUPPORTS = 115;\n /* s */\n\n var PLACEHOLDER = 112;\n /* p */\n\n var READONLY = 111;\n /* o */\n\n var IMPORT = 105;\n /* i */\n\n var CHARSET = 99;\n /* c */\n\n var DOCUMENT = 100;\n /* d */\n\n var PAGE = 112;\n /* p */\n\n var column = 1;\n /* current column */\n\n var line = 1;\n /* current line numebr */\n\n var pattern = 0;\n /* :pattern */\n\n var cascade = 1;\n /* #id h1 h2 vs h1#id h2#id */\n\n var prefix = 1;\n /* vendor prefix */\n\n var escape = 1;\n /* escape :global() pattern */\n\n var compress = 0;\n /* compress output */\n\n var semicolon = 0;\n /* no/semicolon option */\n\n var preserve = 0;\n /* preserve empty selectors */\n\n /* empty reference */\n\n var array = [];\n /* plugins */\n\n var plugins = [];\n var plugged = 0;\n var should = null;\n /* plugin context */\n\n var POSTS = -2;\n var PREPS = -1;\n var UNKWN = 0;\n var PROPS = 1;\n var BLCKS = 2;\n var ATRUL = 3;\n /* plugin newline context */\n\n var unkwn = 0;\n /* keyframe animation */\n\n var keyed = 1;\n var key = '';\n /* selector namespace */\n\n var nscopealt = '';\n var nscope = '';\n /**\n * Compile\n *\n * @param {Array} parent\n * @param {Array} current\n * @param {string} body\n * @param {number} id\n * @param {number} depth\n * @return {string}\n */\n\n function compile(parent, current, body, id, depth) {\n var bracket = 0;\n /* brackets [] */\n\n var comment = 0;\n /* comments /* // or /* */\n\n var parentheses = 0;\n /* functions () */\n\n var quote = 0;\n /* quotes '', \"\" */\n\n var first = 0;\n /* first character code */\n\n var second = 0;\n /* second character code */\n\n var code = 0;\n /* current character code */\n\n var tail = 0;\n /* previous character code */\n\n var trail = 0;\n /* character before previous code */\n\n var peak = 0;\n /* previous non-whitespace code */\n\n var counter = 0;\n /* count sequence termination */\n\n var context = 0;\n /* track current context */\n\n var atrule = 0;\n /* track @at-rule context */\n\n var pseudo = 0;\n /* track pseudo token index */\n\n var caret = 0;\n /* current character index */\n\n var format = 0;\n /* control character formating context */\n\n var insert = 0;\n /* auto semicolon insertion */\n\n var invert = 0;\n /* inverted selector pattern */\n\n var length = 0;\n /* generic length address */\n\n var eof = body.length;\n /* end of file(length) */\n\n var eol = eof - 1;\n /* end of file(characters) */\n\n var char = '';\n /* current character */\n\n var chars = '';\n /* current buffer of characters */\n\n var child = '';\n /* next buffer of characters */\n\n var out = '';\n /* compiled body */\n\n var children = '';\n /* compiled children */\n\n var flat = '';\n /* compiled leafs */\n\n var selector;\n /* generic selector address */\n\n var result;\n /* generic address */\n // ...build body\n\n while (caret < eof) {\n code = body.charCodeAt(caret); // eof varient\n\n if (caret === eol) {\n // last character + noop context, add synthetic padding for noop context to terminate\n if (comment + quote + parentheses + bracket !== 0) {\n if (comment !== 0) {\n code = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH;\n }\n\n quote = parentheses = bracket = 0;\n eof++;\n eol++;\n }\n }\n\n if (comment + quote + parentheses + bracket === 0) {\n // eof varient\n if (caret === eol) {\n if (format > 0) {\n chars = chars.replace(formatptn, '');\n }\n\n if (chars.trim().length > 0) {\n switch (code) {\n case SPACE:\n case TAB:\n case SEMICOLON:\n case CARRIAGE:\n case NEWLINE:\n {\n break;\n }\n\n default:\n {\n chars += body.charAt(caret);\n }\n }\n\n code = SEMICOLON;\n }\n } // auto semicolon insertion\n\n\n if (insert === 1) {\n switch (code) {\n // false flags\n case OPENBRACES:\n case CLOSEBRACES:\n case SEMICOLON:\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n case OPENPARENTHESES:\n case CLOSEPARENTHESES:\n case COMMA:\n {\n insert = 0;\n }\n // ignore\n\n case TAB:\n case CARRIAGE:\n case NEWLINE:\n case SPACE:\n {\n break;\n }\n // valid\n\n default:\n {\n insert = 0;\n length = caret;\n first = code;\n caret--;\n code = SEMICOLON;\n\n while (length < eof) {\n switch (body.charCodeAt(length++)) {\n case NEWLINE:\n case CARRIAGE:\n case SEMICOLON:\n {\n ++caret;\n code = first;\n length = eof;\n break;\n }\n\n case COLON:\n {\n if (format > 0) {\n ++caret;\n code = first;\n }\n }\n\n case OPENBRACES:\n {\n length = eof;\n }\n }\n }\n }\n }\n } // token varient\n\n\n switch (code) {\n case OPENBRACES:\n {\n chars = chars.trim();\n first = chars.charCodeAt(0);\n counter = 1;\n length = ++caret;\n\n while (caret < eof) {\n switch (code = body.charCodeAt(caret)) {\n case OPENBRACES:\n {\n counter++;\n break;\n }\n\n case CLOSEBRACES:\n {\n counter--;\n break;\n }\n\n case FOWARDSLASH:\n {\n switch (second = body.charCodeAt(caret + 1)) {\n // /*, //\n case STAR:\n case FOWARDSLASH:\n {\n caret = delimited(second, caret, eol, body);\n }\n }\n\n break;\n }\n // given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\n case OPENBRACKET:\n {\n code++;\n }\n // given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\n case OPENPARENTHESES:\n {\n code++;\n }\n // quote tail delimiter is identical to the head delimiter hence noop,\n // fallthrough clauses have been shifted to the correct tail delimiter\n\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n {\n while (caret++ < eol) {\n if (body.charCodeAt(caret) === code) {\n break;\n }\n }\n }\n }\n\n if (counter === 0) {\n break;\n }\n\n caret++;\n }\n\n child = body.substring(length, caret);\n\n if (first === NULL) {\n first = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0);\n }\n\n switch (first) {\n // @at-rule\n case AT:\n {\n if (format > 0) {\n chars = chars.replace(formatptn, '');\n }\n\n second = chars.charCodeAt(1);\n\n switch (second) {\n case DOCUMENT:\n case MEDIA:\n case SUPPORTS:\n case DASH:\n {\n selector = current;\n break;\n }\n\n default:\n {\n selector = array;\n }\n }\n\n child = compile(current, selector, child, second, depth + 1);\n length = child.length; // preserve empty @at-rule\n\n if (preserve > 0 && length === 0) {\n length = chars.length;\n } // execute plugins, @at-rule context\n\n\n if (plugged > 0) {\n selector = select(array, chars, invert);\n result = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id);\n chars = selector.join('');\n\n if (result !== void 0) {\n if ((length = (child = result.trim()).length) === 0) {\n second = 0;\n child = '';\n }\n }\n }\n\n if (length > 0) {\n switch (second) {\n case SUPPORTS:\n {\n chars = chars.replace(supportsptn, supports);\n }\n\n case DOCUMENT:\n case MEDIA:\n case DASH:\n {\n child = chars + '{' + child + '}';\n break;\n }\n\n case KEYFRAME:\n {\n chars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''));\n child = chars + '{' + child + '}';\n\n if (prefix === 1 || prefix === 2 && vendor('@' + child, 3)) {\n child = '@' + webkit + child + '@' + child;\n } else {\n child = '@' + child;\n }\n\n break;\n }\n\n default:\n {\n child = chars + child;\n\n if (id === PAGE) {\n child = (out += child, '');\n }\n }\n }\n } else {\n child = '';\n }\n\n break;\n }\n // selector\n\n default:\n {\n child = compile(current, select(current, chars, invert), child, id, depth + 1);\n }\n }\n\n children += child; // reset\n\n context = 0;\n insert = 0;\n pseudo = 0;\n format = 0;\n invert = 0;\n atrule = 0;\n chars = '';\n child = '';\n code = body.charCodeAt(++caret);\n break;\n }\n\n case CLOSEBRACES:\n case SEMICOLON:\n {\n chars = (format > 0 ? chars.replace(formatptn, '') : chars).trim();\n\n if ((length = chars.length) > 1) {\n // monkey-patch missing colon\n if (pseudo === 0) {\n first = chars.charCodeAt(0); // first character is a letter or dash, buffer has a space character\n\n if (first === DASH || first > 96 && first < 123) {\n length = (chars = chars.replace(' ', ':')).length;\n }\n } // execute plugins, property context\n\n\n if (plugged > 0) {\n if ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n if ((length = (chars = result.trim()).length) === 0) {\n chars = '\\0\\0';\n }\n }\n }\n\n first = chars.charCodeAt(0);\n second = chars.charCodeAt(1);\n\n switch (first) {\n case NULL:\n {\n break;\n }\n\n case AT:\n {\n if (second === IMPORT || second === CHARSET) {\n flat += chars + body.charAt(caret);\n break;\n }\n }\n\n default:\n {\n if (chars.charCodeAt(length - 1) === COLON) {\n break;\n }\n\n out += property(chars, first, second, chars.charCodeAt(2));\n }\n }\n } // reset\n\n\n context = 0;\n insert = 0;\n pseudo = 0;\n format = 0;\n invert = 0;\n chars = '';\n code = body.charCodeAt(++caret);\n break;\n }\n }\n } // parse characters\n\n\n switch (code) {\n case CARRIAGE:\n case NEWLINE:\n {\n // auto insert semicolon\n if (comment + quote + parentheses + bracket + semicolon === 0) {\n // valid non-whitespace characters that\n // may precede a newline\n switch (peak) {\n case CLOSEPARENTHESES:\n case SINGLEQUOTE:\n case DOUBLEQUOTE:\n case AT:\n case TILDE:\n case GREATERTHAN:\n case STAR:\n case PLUS:\n case FOWARDSLASH:\n case DASH:\n case COLON:\n case COMMA:\n case SEMICOLON:\n case OPENBRACES:\n case CLOSEBRACES:\n {\n break;\n }\n\n default:\n {\n // current buffer has a colon\n if (pseudo > 0) {\n insert = 1;\n }\n }\n }\n } // terminate line comment\n\n\n if (comment === FOWARDSLASH) {\n comment = 0;\n } else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n format = 1;\n chars += '\\0';\n } // execute plugins, newline context\n\n\n if (plugged * unkwn > 0) {\n proxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id);\n } // next line, reset column position\n\n\n column = 1;\n line++;\n break;\n }\n\n case SEMICOLON:\n case CLOSEBRACES:\n {\n if (comment + quote + parentheses + bracket === 0) {\n column++;\n break;\n }\n }\n\n default:\n {\n // increment column position\n column++; // current character\n\n char = body.charAt(caret); // remove comments, escape functions, strings, attributes and prepare selectors\n\n switch (code) {\n case TAB:\n case SPACE:\n {\n if (quote + bracket + comment === 0) {\n switch (tail) {\n case COMMA:\n case COLON:\n case TAB:\n case SPACE:\n {\n char = '';\n break;\n }\n\n default:\n {\n if (code !== SPACE) {\n char = ' ';\n }\n }\n }\n }\n\n break;\n }\n // escape breaking control characters\n\n case NULL:\n {\n char = '\\\\0';\n break;\n }\n\n case FORMFEED:\n {\n char = '\\\\f';\n break;\n }\n\n case VERTICALTAB:\n {\n char = '\\\\v';\n break;\n }\n // &\n\n case AND:\n {\n // inverted selector pattern i.e html &\n if (quote + comment + bracket === 0 && cascade > 0) {\n invert = 1;\n format = 1;\n char = '\\f' + char;\n }\n\n break;\n }\n // ::paceholder, l\n // :read-ony, l\n\n case 108:\n {\n if (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n switch (caret - pseudo) {\n // ::placeholder\n case 2:\n {\n if (tail === PLACEHOLDER && body.charCodeAt(caret - 3) === COLON) {\n pattern = tail;\n }\n }\n // :read-only\n\n case 8:\n {\n if (trail === READONLY) {\n pattern = trail;\n }\n }\n }\n }\n\n break;\n }\n // :\n\n case COLON:\n {\n if (quote + comment + bracket === 0) {\n pseudo = caret;\n }\n\n break;\n }\n // selectors\n\n case COMMA:\n {\n if (comment + parentheses + quote + bracket === 0) {\n format = 1;\n char += '\\r';\n }\n\n break;\n }\n // quotes\n\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n {\n if (comment === 0) {\n quote = quote === code ? 0 : quote === 0 ? code : quote;\n }\n\n break;\n }\n // attributes\n\n case OPENBRACKET:\n {\n if (quote + comment + parentheses === 0) {\n bracket++;\n }\n\n break;\n }\n\n case CLOSEBRACKET:\n {\n if (quote + comment + parentheses === 0) {\n bracket--;\n }\n\n break;\n }\n // functions\n\n case CLOSEPARENTHESES:\n {\n if (quote + comment + bracket === 0) {\n parentheses--;\n }\n\n break;\n }\n\n case OPENPARENTHESES:\n {\n if (quote + comment + bracket === 0) {\n if (context === 0) {\n switch (tail * 2 + trail * 3) {\n // :matches\n case 533:\n {\n break;\n }\n // :global, :not, :nth-child etc...\n\n default:\n {\n counter = 0;\n context = 1;\n }\n }\n }\n\n parentheses++;\n }\n\n break;\n }\n\n case AT:\n {\n if (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n atrule = 1;\n }\n\n break;\n }\n // block/line comments\n\n case STAR:\n case FOWARDSLASH:\n {\n if (quote + bracket + parentheses > 0) {\n break;\n }\n\n switch (comment) {\n // initialize line/block comment context\n case 0:\n {\n switch (code * 2 + body.charCodeAt(caret + 1) * 3) {\n // //\n case 235:\n {\n comment = FOWARDSLASH;\n break;\n }\n // /*\n\n case 220:\n {\n length = caret;\n comment = STAR;\n break;\n }\n }\n\n break;\n }\n // end block comment context\n\n case STAR:\n {\n if (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n // /* ... */, !\n if (body.charCodeAt(length + 2) === 33) {\n out += body.substring(length, caret + 1);\n }\n\n char = '';\n comment = 0;\n }\n }\n }\n }\n } // ignore comment blocks\n\n\n if (comment === 0) {\n // aggressive isolation mode, divide each individual selector\n // including selectors in :not function but excluding selectors in :global function\n if (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n switch (code) {\n case COMMA:\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case CLOSEPARENTHESES:\n case OPENPARENTHESES:\n {\n if (context === 0) {\n // outside of an isolated context i.e nth-child(<...>)\n switch (tail) {\n case TAB:\n case SPACE:\n case NEWLINE:\n case CARRIAGE:\n {\n char = char + '\\0';\n break;\n }\n\n default:\n {\n char = '\\0' + char + (code === COMMA ? '' : '\\0');\n }\n }\n\n format = 1;\n } else {\n // within an isolated context, sleep untill it's terminated\n switch (code) {\n case OPENPARENTHESES:\n {\n // :globa(\n if (pseudo + 7 === caret && tail === 108) {\n pseudo = 0;\n }\n\n context = ++counter;\n break;\n }\n\n case CLOSEPARENTHESES:\n {\n if ((context = --counter) === 0) {\n format = 1;\n char += '\\0';\n }\n\n break;\n }\n }\n }\n\n break;\n }\n\n case TAB:\n case SPACE:\n {\n switch (tail) {\n case NULL:\n case OPENBRACES:\n case CLOSEBRACES:\n case SEMICOLON:\n case COMMA:\n case FORMFEED:\n case TAB:\n case SPACE:\n case NEWLINE:\n case CARRIAGE:\n {\n break;\n }\n\n default:\n {\n // ignore in isolated contexts\n if (context === 0) {\n format = 1;\n char += '\\0';\n }\n }\n }\n }\n }\n } // concat buffer of characters\n\n\n chars += char; // previous non-whitespace character code\n\n if (code !== SPACE && code !== TAB) {\n peak = code;\n }\n }\n }\n } // tail character codes\n\n\n trail = tail;\n tail = code; // visit every character\n\n caret++;\n }\n\n length = out.length; // preserve empty selector\n\n if (preserve > 0) {\n if (length === 0 && children.length === 0 && current[0].length === 0 === false) {\n if (id !== MEDIA || current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0]) {\n length = current.join(',').length + 2;\n }\n }\n }\n\n if (length > 0) {\n // cascade isolation mode?\n selector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current; // execute plugins, block context\n\n if (plugged > 0) {\n result = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id);\n\n if (result !== void 0 && (out = result).length === 0) {\n return flat + out + children;\n }\n }\n\n out = selector.join(',') + '{' + out + '}';\n\n if (prefix * pattern !== 0) {\n if (prefix === 2 && !vendor(out, 2)) pattern = 0;\n\n switch (pattern) {\n // ::read-only\n case READONLY:\n {\n out = out.replace(readonlyptn, ':' + moz + '$1') + out;\n break;\n }\n // ::placeholder\n\n case PLACEHOLDER:\n {\n out = out.replace(plcholdrptn, '::' + webkit + 'input-$1') + out.replace(plcholdrptn, '::' + moz + '$1') + out.replace(plcholdrptn, ':' + ms + 'input-$1') + out;\n break;\n }\n }\n\n pattern = 0;\n }\n }\n\n return flat + out + children;\n }\n /**\n * Select\n *\n * @param {Array} parent\n * @param {string} current\n * @param {number} invert\n * @return {Array}\n */\n\n\n function select(parent, current, invert) {\n var selectors = current.trim().split(selectorptn);\n var out = selectors;\n var length = selectors.length;\n var l = parent.length;\n\n switch (l) {\n // 0-1 parent selectors\n case 0:\n case 1:\n {\n for (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n out[i] = scope(selector, out[i], invert, l).trim();\n }\n\n break;\n }\n // >2 parent selectors, nested\n\n default:\n {\n for (var i = 0, j = 0, out = []; i < length; ++i) {\n for (var k = 0; k < l; ++k) {\n out[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim();\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Scope\n *\n * @param {string} parent\n * @param {string} current\n * @param {number} invert\n * @param {number} level\n * @return {string}\n */\n\n\n function scope(parent, current, invert, level) {\n var selector = current;\n var code = selector.charCodeAt(0); // trim leading whitespace\n\n if (code < 33) {\n code = (selector = selector.trim()).charCodeAt(0);\n }\n\n switch (code) {\n // &\n case AND:\n {\n switch (cascade + level) {\n case 0:\n case 1:\n {\n if (parent.trim().length === 0) {\n break;\n }\n }\n\n default:\n {\n return selector.replace(andptn, '$1' + parent.trim());\n }\n }\n\n break;\n }\n // :\n\n case COLON:\n {\n switch (selector.charCodeAt(1)) {\n // g in :global\n case 103:\n {\n if (escape > 0 && cascade > 0) {\n return selector.replace(escapeptn, '$1').replace(andptn, '$1' + nscope);\n }\n\n break;\n }\n\n default:\n {\n // :hover\n return parent.trim() + selector.replace(andptn, '$1' + parent.trim());\n }\n }\n }\n\n default:\n {\n // html &\n if (invert * cascade > 0 && selector.indexOf('\\f') > 0) {\n return selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1') + parent.trim());\n }\n }\n }\n\n return parent + selector;\n }\n /**\n * Property\n *\n * @param {string} input\n * @param {number} first\n * @param {number} second\n * @param {number} third\n * @return {string}\n */\n\n\n function property(input, first, second, third) {\n var index = 0;\n var out = input + ';';\n var hash = first * 2 + second * 3 + third * 4;\n var cache; // animation: a, n, i characters\n\n if (hash === 944) {\n return animation(out);\n } else if (prefix === 0 || prefix === 2 && !vendor(out, 1)) {\n return out;\n } // vendor prefix\n\n\n switch (hash) {\n // text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n case 1015:\n {\n // text-shadow/text-align/text-transform, a\n return out.charCodeAt(10) === 97 ? webkit + out + out : out;\n }\n // filter/fill f, i, l\n\n case 951:\n {\n // filter, t\n return out.charCodeAt(3) === 116 ? webkit + out + out : out;\n }\n // color/column, c, o, l\n\n case 963:\n {\n // column, n\n return out.charCodeAt(5) === 110 ? webkit + out + out : out;\n }\n // box-decoration-break, b, o, x\n\n case 1009:\n {\n if (out.charCodeAt(4) !== 100) {\n break;\n }\n }\n // mask, m, a, s\n // clip-path, c, l, i\n\n case 969:\n case 942:\n {\n return webkit + out + out;\n }\n // appearance: a, p, p\n\n case 978:\n {\n return webkit + out + moz + out + out;\n }\n // hyphens: h, y, p\n // user-select: u, s, e\n\n case 1019:\n case 983:\n {\n return webkit + out + moz + out + ms + out + out;\n }\n // background/backface-visibility, b, a, c\n\n case 883:\n {\n // backface-visibility, -\n if (out.charCodeAt(8) === DASH) {\n return webkit + out + out;\n } // image-set(...)\n\n\n if (out.indexOf('image-set(', 11) > 0) {\n return out.replace(imgsrcptn, '$1' + webkit + '$2') + out;\n }\n\n return out;\n }\n // flex: f, l, e\n\n case 932:\n {\n if (out.charCodeAt(4) === DASH) {\n switch (out.charCodeAt(5)) {\n // flex-grow, g\n case 103:\n {\n return webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out;\n }\n // flex-shrink, s\n\n case 115:\n {\n return webkit + out + ms + out.replace('shrink', 'negative') + out;\n }\n // flex-basis, b\n\n case 98:\n {\n return webkit + out + ms + out.replace('basis', 'preferred-size') + out;\n }\n }\n }\n\n return webkit + out + ms + out + out;\n }\n // order: o, r, d\n\n case 964:\n {\n return webkit + out + ms + 'flex' + '-' + out + out;\n }\n // justify-items/justify-content, j, u, s\n\n case 1023:\n {\n // justify-content, c\n if (out.charCodeAt(8) !== 99) {\n break;\n }\n\n cache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out;\n }\n // cursor, c, u, r\n\n case 1005:\n {\n return cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out;\n }\n // writing-mode, w, r, i\n\n case 1000:\n {\n cache = out.substring(13).trim();\n index = cache.indexOf('-') + 1;\n\n switch (cache.charCodeAt(0) + cache.charCodeAt(index)) {\n // vertical-lr\n case 226:\n {\n cache = out.replace(writingptn, 'tb');\n break;\n }\n // vertical-rl\n\n case 232:\n {\n cache = out.replace(writingptn, 'tb-rl');\n break;\n }\n // horizontal-tb\n\n case 220:\n {\n cache = out.replace(writingptn, 'lr');\n break;\n }\n\n default:\n {\n return out;\n }\n }\n\n return webkit + out + ms + cache + out;\n }\n // position: sticky\n\n case 1017:\n {\n if (out.indexOf('sticky', 9) === -1) {\n return out;\n }\n }\n // display(flex/inline-flex/inline-box): d, i, s\n\n case 975:\n {\n index = (out = input).length - 10;\n cache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim();\n\n switch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7) | 0)) {\n // inline-\n case 203:\n {\n // inline-box\n if (cache.charCodeAt(8) < 111) {\n break;\n }\n }\n // inline-box/sticky\n\n case 115:\n {\n out = out.replace(cache, webkit + cache) + ';' + out;\n break;\n }\n // inline-flex\n // flex\n\n case 207:\n case 102:\n {\n out = out.replace(cache, webkit + (hash > 102 ? 'inline-' : '') + 'box') + ';' + out.replace(cache, webkit + cache) + ';' + out.replace(cache, ms + cache + 'box') + ';' + out;\n }\n }\n\n return out + ';';\n }\n // align-items, align-center, align-self: a, l, i, -\n\n case 938:\n {\n if (out.charCodeAt(5) === DASH) {\n switch (out.charCodeAt(6)) {\n // align-items, i\n case 105:\n {\n cache = out.replace('-items', '');\n return webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out;\n }\n // align-self, s\n\n case 115:\n {\n return webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out;\n }\n // align-content\n\n default:\n {\n return webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out;\n }\n }\n }\n\n break;\n }\n // min/max\n\n case 973:\n case 989:\n {\n // min-/max- height/width/block-size/inline-size\n if (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n break;\n }\n }\n // height/width: min-content / width: max-content\n\n case 931:\n case 953:\n {\n if (dimensionptn.test(input) === true) {\n // stretch\n if ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115) return property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch');else return out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out;\n }\n\n break;\n }\n // transform, transition: t, r, a\n\n case 962:\n {\n out = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out; // transitions\n\n if (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n return out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out;\n }\n\n break;\n }\n }\n\n return out;\n }\n /**\n * Vendor\n *\n * @param {string} content\n * @param {number} context\n * @return {boolean}\n */\n\n\n function vendor(content, context) {\n var index = content.indexOf(context === 1 ? ':' : '{');\n var key = content.substring(0, context !== 3 ? index : 10);\n var value = content.substring(index + 1, content.length - 1);\n return should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context);\n }\n /**\n * Supports\n *\n * @param {string} match\n * @param {string} group\n * @return {string}\n */\n\n\n function supports(match, group) {\n var out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2));\n return out !== group + ';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '(' + group + ')';\n }\n /**\n * Animation\n *\n * @param {string} input\n * @return {string}\n */\n\n\n function animation(input) {\n var length = input.length;\n var index = input.indexOf(':', 9) + 1;\n var declare = input.substring(0, index).trim();\n var out = input.substring(index, length - 1).trim();\n\n switch (input.charCodeAt(9) * keyed) {\n case 0:\n {\n break;\n }\n // animation-*, -\n\n case DASH:\n {\n // animation-name, n\n if (input.charCodeAt(10) !== 110) {\n break;\n }\n }\n // animation/animation-name\n\n default:\n {\n // split in case of multiple animations\n var list = out.split((out = '', animationptn));\n\n for (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n var value = list[i];\n var items = value.split(propertiesptn);\n\n while (value = items[index]) {\n var peak = value.charCodeAt(0);\n\n if (keyed === 1 && ( // letters\n peak > AT && peak < 90 || peak > 96 && peak < 123 || peak === UNDERSCORE || // dash but not in sequence i.e --\n peak === DASH && value.charCodeAt(1) !== DASH)) {\n // not a number/function\n switch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n case 1:\n {\n switch (value) {\n // not a valid reserved keyword\n case 'infinite':\n case 'alternate':\n case 'backwards':\n case 'running':\n case 'normal':\n case 'forwards':\n case 'both':\n case 'none':\n case 'linear':\n case 'ease':\n case 'ease-in':\n case 'ease-out':\n case 'ease-in-out':\n case 'paused':\n case 'reverse':\n case 'alternate-reverse':\n case 'inherit':\n case 'initial':\n case 'unset':\n case 'step-start':\n case 'step-end':\n {\n break;\n }\n\n default:\n {\n value += key;\n }\n }\n }\n }\n }\n\n items[index++] = value;\n }\n\n out += (i === 0 ? '' : ',') + items.join(' ');\n }\n }\n }\n\n out = declare + out + ';';\n if (prefix === 1 || prefix === 2 && vendor(out, 1)) return webkit + out + out;\n return out;\n }\n /**\n * Isolate\n *\n * @param {Array} current\n */\n\n\n function isolate(current) {\n for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n // split individual elements in a selector i.e h1 h2 === [h1, h2]\n var elements = current[i].split(elementptn);\n var out = '';\n\n for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n // empty element\n if ((size = (element = elements[j]).length) === 0 && l > 1) {\n continue;\n }\n\n tail = out.charCodeAt(out.length - 1);\n code = element.charCodeAt(0);\n padding = '';\n\n if (j !== 0) {\n // determine if we need padding\n switch (tail) {\n case STAR:\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case SPACE:\n case OPENPARENTHESES:\n {\n break;\n }\n\n default:\n {\n padding = ' ';\n }\n }\n }\n\n switch (code) {\n case AND:\n {\n element = padding + nscopealt;\n }\n\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case SPACE:\n case CLOSEPARENTHESES:\n case OPENPARENTHESES:\n {\n break;\n }\n\n case OPENBRACKET:\n {\n element = padding + element + nscopealt;\n break;\n }\n\n case COLON:\n {\n switch (element.charCodeAt(1) * 2 + element.charCodeAt(2) * 3) {\n // :global\n case 530:\n {\n if (escape > 0) {\n element = padding + element.substring(8, size - 1);\n break;\n }\n }\n // :hover, :nth-child(), ...\n\n default:\n {\n if (j < 1 || elements[j - 1].length < 1) {\n element = padding + nscopealt + element;\n }\n }\n }\n\n break;\n }\n\n case COMMA:\n {\n padding = '';\n }\n\n default:\n {\n if (size > 1 && element.indexOf(':') > 0) {\n element = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2');\n } else {\n element = padding + element + nscopealt;\n }\n }\n }\n\n out += element;\n }\n\n selector[i] = out.replace(formatptn, '').trim();\n }\n\n return selector;\n }\n /**\n * Proxy\n *\n * @param {number} context\n * @param {string} content\n * @param {Array} selectors\n * @param {Array} parents\n * @param {number} line\n * @param {number} column\n * @param {number} length\n * @param {number} id\n * @param {number} depth\n * @param {number} at\n * @return {(string|void|*)}\n */\n\n\n function proxy(context, content, selectors, parents, line, column, length, id, depth, at) {\n for (var i = 0, out = content, next; i < plugged; ++i) {\n switch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n case void 0:\n case false:\n case true:\n case null:\n {\n break;\n }\n\n default:\n {\n out = next;\n }\n }\n }\n\n if (out !== content) {\n return out;\n }\n }\n /**\n * @param {number} code\n * @param {number} index\n * @param {number} length\n * @param {string} body\n * @return {number}\n */\n\n\n function delimited(code, index, length, body) {\n for (var i = index + 1; i < length; ++i) {\n switch (body.charCodeAt(i)) {\n // /*\n case FOWARDSLASH:\n {\n if (code === STAR) {\n if (body.charCodeAt(i - 1) === STAR && index + 2 !== i) {\n return i + 1;\n }\n }\n\n break;\n }\n // //\n\n case NEWLINE:\n {\n if (code === FOWARDSLASH) {\n return i + 1;\n }\n }\n }\n }\n\n return i;\n }\n /**\n * @param {number} type\n * @param {number} index\n * @param {number} length\n * @param {number} find\n * @param {string} body\n * @return {number}\n */\n\n\n function match(type, index, length, body) {\n for (var i = index + 1; i < length; ++i) {\n switch (body.charCodeAt(i)) {\n case type:\n {\n return i;\n }\n }\n }\n\n return i;\n }\n /**\n * Minify\n *\n * @param {(string|*)} output\n * @return {string}\n */\n\n\n function minify(output) {\n return output.replace(formatptn, '').replace(beforeptn, '').replace(afterptn, '$1').replace(tailptn, '$1').replace(whiteptn, ' ');\n }\n /**\n * Use\n *\n * @param {(Array|function(...?)|number|void)?} plugin\n */\n\n\n function use(plugin) {\n switch (plugin) {\n case void 0:\n case null:\n {\n plugged = plugins.length = 0;\n break;\n }\n\n default:\n {\n if (typeof plugin === 'function') {\n plugins[plugged++] = plugin;\n } else if (typeof plugin === 'object') {\n for (var i = 0, length = plugin.length; i < length; ++i) {\n use(plugin[i]);\n }\n } else {\n unkwn = !!plugin | 0;\n }\n }\n }\n\n return use;\n }\n /**\n * Set\n *\n * @param {*} options\n */\n\n\n function set(options) {\n for (var name in options) {\n var value = options[name];\n\n switch (name) {\n case 'keyframe':\n keyed = value | 0;\n break;\n\n case 'global':\n escape = value | 0;\n break;\n\n case 'cascade':\n cascade = value | 0;\n break;\n\n case 'compress':\n compress = value | 0;\n break;\n\n case 'semicolon':\n semicolon = value | 0;\n break;\n\n case 'preserve':\n preserve = value | 0;\n break;\n\n case 'prefix':\n should = null;\n\n if (!value) {\n prefix = 0;\n } else if (typeof value !== 'function') {\n prefix = 1;\n } else {\n prefix = 2;\n should = value;\n }\n\n }\n }\n\n return set;\n }\n /**\n * Stylis\n *\n * @param {string} selector\n * @param {string} input\n * @return {*}\n */\n\n\n function stylis(selector, input) {\n if (this !== void 0 && this.constructor === stylis) {\n return factory(selector);\n } // setup\n\n\n var ns = selector;\n var code = ns.charCodeAt(0); // trim leading whitespace\n\n if (code < 33) {\n code = (ns = ns.trim()).charCodeAt(0);\n } // keyframe/animation namespace\n\n\n if (keyed > 0) {\n key = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-');\n } // reset, used to assert if a plugin is moneky-patching the return value\n\n\n code = 1; // cascade/isolate\n\n if (cascade === 1) {\n nscope = ns;\n } else {\n nscopealt = ns;\n }\n\n var selectors = [nscope];\n var result; // execute plugins, pre-process context\n\n if (plugged > 0) {\n result = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0);\n\n if (result !== void 0 && typeof result === 'string') {\n input = result;\n }\n } // build\n\n\n var output = compile(array, selectors, input, 0, 0); // execute plugins, post-process context\n\n if (plugged > 0) {\n result = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0); // bypass minification\n\n if (result !== void 0 && typeof (output = result) !== 'string') {\n code = 0;\n }\n } // reset\n\n\n key = '';\n nscope = '';\n nscopealt = '';\n pattern = 0;\n line = 1;\n column = 1;\n return compress * code === 0 ? output : minify(output);\n }\n\n stylis['use'] = use;\n stylis['set'] = set;\n\n if (options !== void 0) {\n set(options);\n }\n\n return stylis;\n});\n\n//# sourceURL=webpack:///./node_modules/stylis/stylis.js?"); +eval("/*\n * __ ___\n * _____/ /___ __/ (_)____\n * / ___/ __/ / / / / / ___/\n * (__ ) /_/ /_/ / / (__ )\n * /____/\\__/\\__, /_/_/____/\n * /____/\n *\n * light - weight css preprocessor @licence MIT\n */\n(function (factory) {\n /* eslint-disable */\n true ? module['exports'] = factory(null) : undefined;\n})(\n/** @param {*=} options */\nfunction factory(options) {\n /* eslint-disable */\n 'use strict';\n /**\n * Notes\n *\n * The [''] pattern is used to support closure compiler\n * the jsdoc signatures are also used to the same effect\n *\n * ----\n *\n * int + int + int === n4 [faster]\n *\n * vs\n *\n * int === n1 && int === n2 && int === n3\n *\n * ----\n *\n * switch (int) { case ints...} [faster]\n *\n * vs\n *\n * if (int == 1 && int === 2 ...)\n *\n * ----\n *\n * The (first*n1 + second*n2 + third*n3) format used in the property parser\n * is a simple way to hash the sequence of characters\n * taking into account the index they occur in\n * since any number of 3 character sequences could produce duplicates.\n *\n * On the other hand sequences that are directly tied to the index of the character\n * resolve a far more accurate measure, it's also faster\n * to evaluate one condition in a switch statement\n * than three in an if statement regardless of the added math.\n *\n * This allows the vendor prefixer to be both small and fast.\n */\n\n var nullptn = /^\\0+/g;\n /* matches leading null characters */\n\n var formatptn = /[\\0\\r\\f]/g;\n /* matches new line, null and formfeed characters */\n\n var colonptn = /: */g;\n /* splits animation rules */\n\n var cursorptn = /zoo|gra/;\n /* assert cursor varient */\n\n var transformptn = /([,: ])(transform)/g;\n /* vendor prefix transform, older webkit */\n\n var animationptn = /,+\\s*(?![^(]*[)])/g;\n /* splits multiple shorthand notation animations */\n\n var propertiesptn = / +\\s*(?![^(]*[)])/g;\n /* animation properties */\n\n var elementptn = / *[\\0] */g;\n /* selector elements */\n\n var selectorptn = /,\\r+?/g;\n /* splits selectors */\n\n var andptn = /([\\t\\r\\n ])*\\f?&/g;\n /* match & */\n\n var escapeptn = /:global\\(((?:[^\\(\\)\\[\\]]*|\\[.*\\]|\\([^\\(\\)]*\\))*)\\)/g;\n /* matches :global(.*) */\n\n var invalidptn = /\\W+/g;\n /* removes invalid characters from keyframes */\n\n var keyframeptn = /@(k\\w+)\\s*(\\S*)\\s*/;\n /* matches @keyframes $1 */\n\n var plcholdrptn = /::(place)/g;\n /* match ::placeholder varient */\n\n var readonlyptn = /:(read-only)/g;\n /* match :read-only varient */\n\n var beforeptn = /\\s+(?=[{\\];=:>])/g;\n /* matches \\s before ] ; = : */\n\n var afterptn = /([[}=:>])\\s+/g;\n /* matches \\s after characters [ } = : */\n\n var tailptn = /(\\{[^{]+?);(?=\\})/g;\n /* matches tail semi-colons ;} */\n\n var whiteptn = /\\s{2,}/g;\n /* matches repeating whitespace */\n\n var pseudoptn = /([^\\(])(:+) */g;\n /* pseudo element */\n\n var writingptn = /[svh]\\w+-[tblr]{2}/;\n /* match writing mode property values */\n\n var gradientptn = /([\\w-]+t\\()/g;\n /* match *gradient property */\n\n var supportsptn = /\\(\\s*(.*)\\s*\\)/g;\n /* match supports (groups) */\n\n var propertyptn = /([\\s\\S]*?);/g;\n /* match properties leading semicolon */\n\n var selfptn = /-self|flex-/g;\n /* match flex- and -self in align-self: flex-*; */\n\n var pseudofmt = /[^]*?(:[rp][el]a[\\w-]+)[^]*/;\n /* extrats :readonly or :placholder from selector */\n\n var trimptn = /[ \\t]+$/;\n /* match tail whitspace */\n\n var dimensionptn = /stretch|:\\s*\\w+\\-(?:conte|avail)/;\n /* match max/min/fit-content, fill-available */\n\n var imgsrcptn = /([^-])(image-set\\()/;\n /* vendors */\n\n var webkit = '-webkit-';\n var moz = '-moz-';\n var ms = '-ms-';\n /* character codes */\n\n var SEMICOLON = 59;\n /* ; */\n\n var CLOSEBRACES = 125;\n /* } */\n\n var OPENBRACES = 123;\n /* { */\n\n var OPENPARENTHESES = 40;\n /* ( */\n\n var CLOSEPARENTHESES = 41;\n /* ) */\n\n var OPENBRACKET = 91;\n /* [ */\n\n var CLOSEBRACKET = 93;\n /* ] */\n\n var NEWLINE = 10;\n /* \\n */\n\n var CARRIAGE = 13;\n /* \\r */\n\n var TAB = 9;\n /* \\t */\n\n var AT = 64;\n /* @ */\n\n var SPACE = 32;\n /* */\n\n var AND = 38;\n /* & */\n\n var DASH = 45;\n /* - */\n\n var UNDERSCORE = 95;\n /* _ */\n\n var STAR = 42;\n /* * */\n\n var COMMA = 44;\n /* , */\n\n var COLON = 58;\n /* : */\n\n var SINGLEQUOTE = 39;\n /* ' */\n\n var DOUBLEQUOTE = 34;\n /* \" */\n\n var FOWARDSLASH = 47;\n /* / */\n\n var GREATERTHAN = 62;\n /* > */\n\n var PLUS = 43;\n /* + */\n\n var TILDE = 126;\n /* ~ */\n\n var NULL = 0;\n /* \\0 */\n\n var FORMFEED = 12;\n /* \\f */\n\n var VERTICALTAB = 11;\n /* \\v */\n\n /* special identifiers */\n\n var KEYFRAME = 107;\n /* k */\n\n var MEDIA = 109;\n /* m */\n\n var SUPPORTS = 115;\n /* s */\n\n var PLACEHOLDER = 112;\n /* p */\n\n var READONLY = 111;\n /* o */\n\n var IMPORT = 105;\n /* i */\n\n var CHARSET = 99;\n /* c */\n\n var DOCUMENT = 100;\n /* d */\n\n var PAGE = 112;\n /* p */\n\n var column = 1;\n /* current column */\n\n var line = 1;\n /* current line numebr */\n\n var pattern = 0;\n /* :pattern */\n\n var cascade = 1;\n /* #id h1 h2 vs h1#id h2#id */\n\n var prefix = 1;\n /* vendor prefix */\n\n var escape = 1;\n /* escape :global() pattern */\n\n var compress = 0;\n /* compress output */\n\n var semicolon = 0;\n /* no/semicolon option */\n\n var preserve = 0;\n /* preserve empty selectors */\n\n /* empty reference */\n\n var array = [];\n /* plugins */\n\n var plugins = [];\n var plugged = 0;\n var should = null;\n /* plugin context */\n\n var POSTS = -2;\n var PREPS = -1;\n var UNKWN = 0;\n var PROPS = 1;\n var BLCKS = 2;\n var ATRUL = 3;\n /* plugin newline context */\n\n var unkwn = 0;\n /* keyframe animation */\n\n var keyed = 1;\n var key = '';\n /* selector namespace */\n\n var nscopealt = '';\n var nscope = '';\n /**\n * Compile\n *\n * @param {Array} parent\n * @param {Array} current\n * @param {string} body\n * @param {number} id\n * @param {number} depth\n * @return {string}\n */\n\n function compile(parent, current, body, id, depth) {\n var bracket = 0;\n /* brackets [] */\n\n var comment = 0;\n /* comments /* // or /* */\n\n var parentheses = 0;\n /* functions () */\n\n var quote = 0;\n /* quotes '', \"\" */\n\n var first = 0;\n /* first character code */\n\n var second = 0;\n /* second character code */\n\n var code = 0;\n /* current character code */\n\n var tail = 0;\n /* previous character code */\n\n var trail = 0;\n /* character before previous code */\n\n var peak = 0;\n /* previous non-whitespace code */\n\n var counter = 0;\n /* count sequence termination */\n\n var context = 0;\n /* track current context */\n\n var atrule = 0;\n /* track @at-rule context */\n\n var pseudo = 0;\n /* track pseudo token index */\n\n var caret = 0;\n /* current character index */\n\n var format = 0;\n /* control character formating context */\n\n var insert = 0;\n /* auto semicolon insertion */\n\n var invert = 0;\n /* inverted selector pattern */\n\n var length = 0;\n /* generic length address */\n\n var eof = body.length;\n /* end of file(length) */\n\n var eol = eof - 1;\n /* end of file(characters) */\n\n var _char = '';\n /* current character */\n\n var chars = '';\n /* current buffer of characters */\n\n var child = '';\n /* next buffer of characters */\n\n var out = '';\n /* compiled body */\n\n var children = '';\n /* compiled children */\n\n var flat = '';\n /* compiled leafs */\n\n var selector;\n /* generic selector address */\n\n var result;\n /* generic address */\n // ...build body\n\n while (caret < eof) {\n code = body.charCodeAt(caret); // eof varient\n\n if (caret === eol) {\n // last character + noop context, add synthetic padding for noop context to terminate\n if (comment + quote + parentheses + bracket !== 0) {\n if (comment !== 0) {\n code = comment === FOWARDSLASH ? NEWLINE : FOWARDSLASH;\n }\n\n quote = parentheses = bracket = 0;\n eof++;\n eol++;\n }\n }\n\n if (comment + quote + parentheses + bracket === 0) {\n // eof varient\n if (caret === eol) {\n if (format > 0) {\n chars = chars.replace(formatptn, '');\n }\n\n if (chars.trim().length > 0) {\n switch (code) {\n case SPACE:\n case TAB:\n case SEMICOLON:\n case CARRIAGE:\n case NEWLINE:\n {\n break;\n }\n\n default:\n {\n chars += body.charAt(caret);\n }\n }\n\n code = SEMICOLON;\n }\n } // auto semicolon insertion\n\n\n if (insert === 1) {\n switch (code) {\n // false flags\n case OPENBRACES:\n case CLOSEBRACES:\n case SEMICOLON:\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n case OPENPARENTHESES:\n case CLOSEPARENTHESES:\n case COMMA:\n {\n insert = 0;\n }\n // ignore\n\n case TAB:\n case CARRIAGE:\n case NEWLINE:\n case SPACE:\n {\n break;\n }\n // valid\n\n default:\n {\n insert = 0;\n length = caret;\n first = code;\n caret--;\n code = SEMICOLON;\n\n while (length < eof) {\n switch (body.charCodeAt(length++)) {\n case NEWLINE:\n case CARRIAGE:\n case SEMICOLON:\n {\n ++caret;\n code = first;\n length = eof;\n break;\n }\n\n case COLON:\n {\n if (format > 0) {\n ++caret;\n code = first;\n }\n }\n\n case OPENBRACES:\n {\n length = eof;\n }\n }\n }\n }\n }\n } // token varient\n\n\n switch (code) {\n case OPENBRACES:\n {\n chars = chars.trim();\n first = chars.charCodeAt(0);\n counter = 1;\n length = ++caret;\n\n while (caret < eof) {\n switch (code = body.charCodeAt(caret)) {\n case OPENBRACES:\n {\n counter++;\n break;\n }\n\n case CLOSEBRACES:\n {\n counter--;\n break;\n }\n\n case FOWARDSLASH:\n {\n switch (second = body.charCodeAt(caret + 1)) {\n // /*, //\n case STAR:\n case FOWARDSLASH:\n {\n caret = delimited(second, caret, eol, body);\n }\n }\n\n break;\n }\n // given \"[\" === 91 & \"]\" === 93 hence forth 91 + 1 + 1 === 93\n\n case OPENBRACKET:\n {\n code++;\n }\n // given \"(\" === 40 & \")\" === 41 hence forth 40 + 1 === 41\n\n case OPENPARENTHESES:\n {\n code++;\n }\n // quote tail delimiter is identical to the head delimiter hence noop,\n // fallthrough clauses have been shifted to the correct tail delimiter\n\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n {\n while (caret++ < eol) {\n if (body.charCodeAt(caret) === code) {\n break;\n }\n }\n }\n }\n\n if (counter === 0) {\n break;\n }\n\n caret++;\n }\n\n child = body.substring(length, caret);\n\n if (first === NULL) {\n first = (chars = chars.replace(nullptn, '').trim()).charCodeAt(0);\n }\n\n switch (first) {\n // @at-rule\n case AT:\n {\n if (format > 0) {\n chars = chars.replace(formatptn, '');\n }\n\n second = chars.charCodeAt(1);\n\n switch (second) {\n case DOCUMENT:\n case MEDIA:\n case SUPPORTS:\n case DASH:\n {\n selector = current;\n break;\n }\n\n default:\n {\n selector = array;\n }\n }\n\n child = compile(current, selector, child, second, depth + 1);\n length = child.length; // preserve empty @at-rule\n\n if (preserve > 0 && length === 0) {\n length = chars.length;\n } // execute plugins, @at-rule context\n\n\n if (plugged > 0) {\n selector = select(array, chars, invert);\n result = proxy(ATRUL, child, selector, current, line, column, length, second, depth, id);\n chars = selector.join('');\n\n if (result !== void 0) {\n if ((length = (child = result.trim()).length) === 0) {\n second = 0;\n child = '';\n }\n }\n }\n\n if (length > 0) {\n switch (second) {\n case SUPPORTS:\n {\n chars = chars.replace(supportsptn, supports);\n }\n\n case DOCUMENT:\n case MEDIA:\n case DASH:\n {\n child = chars + '{' + child + '}';\n break;\n }\n\n case KEYFRAME:\n {\n chars = chars.replace(keyframeptn, '$1 $2' + (keyed > 0 ? key : ''));\n child = chars + '{' + child + '}';\n\n if (prefix === 1 || prefix === 2 && vendor('@' + child, 3)) {\n child = '@' + webkit + child + '@' + child;\n } else {\n child = '@' + child;\n }\n\n break;\n }\n\n default:\n {\n child = chars + child;\n\n if (id === PAGE) {\n child = (out += child, '');\n }\n }\n }\n } else {\n child = '';\n }\n\n break;\n }\n // selector\n\n default:\n {\n child = compile(current, select(current, chars, invert), child, id, depth + 1);\n }\n }\n\n children += child; // reset\n\n context = 0;\n insert = 0;\n pseudo = 0;\n format = 0;\n invert = 0;\n atrule = 0;\n chars = '';\n child = '';\n code = body.charCodeAt(++caret);\n break;\n }\n\n case CLOSEBRACES:\n case SEMICOLON:\n {\n chars = (format > 0 ? chars.replace(formatptn, '') : chars).trim();\n\n if ((length = chars.length) > 1) {\n // monkey-patch missing colon\n if (pseudo === 0) {\n first = chars.charCodeAt(0); // first character is a letter or dash, buffer has a space character\n\n if (first === DASH || first > 96 && first < 123) {\n length = (chars = chars.replace(' ', ':')).length;\n }\n } // execute plugins, property context\n\n\n if (plugged > 0) {\n if ((result = proxy(PROPS, chars, current, parent, line, column, out.length, id, depth, id)) !== void 0) {\n if ((length = (chars = result.trim()).length) === 0) {\n chars = '\\0\\0';\n }\n }\n }\n\n first = chars.charCodeAt(0);\n second = chars.charCodeAt(1);\n\n switch (first) {\n case NULL:\n {\n break;\n }\n\n case AT:\n {\n if (second === IMPORT || second === CHARSET) {\n flat += chars + body.charAt(caret);\n break;\n }\n }\n\n default:\n {\n if (chars.charCodeAt(length - 1) === COLON) {\n break;\n }\n\n out += property(chars, first, second, chars.charCodeAt(2));\n }\n }\n } // reset\n\n\n context = 0;\n insert = 0;\n pseudo = 0;\n format = 0;\n invert = 0;\n chars = '';\n code = body.charCodeAt(++caret);\n break;\n }\n }\n } // parse characters\n\n\n switch (code) {\n case CARRIAGE:\n case NEWLINE:\n {\n // auto insert semicolon\n if (comment + quote + parentheses + bracket + semicolon === 0) {\n // valid non-whitespace characters that\n // may precede a newline\n switch (peak) {\n case CLOSEPARENTHESES:\n case SINGLEQUOTE:\n case DOUBLEQUOTE:\n case AT:\n case TILDE:\n case GREATERTHAN:\n case STAR:\n case PLUS:\n case FOWARDSLASH:\n case DASH:\n case COLON:\n case COMMA:\n case SEMICOLON:\n case OPENBRACES:\n case CLOSEBRACES:\n {\n break;\n }\n\n default:\n {\n // current buffer has a colon\n if (pseudo > 0) {\n insert = 1;\n }\n }\n }\n } // terminate line comment\n\n\n if (comment === FOWARDSLASH) {\n comment = 0;\n } else if (cascade + context === 0 && id !== KEYFRAME && chars.length > 0) {\n format = 1;\n chars += '\\0';\n } // execute plugins, newline context\n\n\n if (plugged * unkwn > 0) {\n proxy(UNKWN, chars, current, parent, line, column, out.length, id, depth, id);\n } // next line, reset column position\n\n\n column = 1;\n line++;\n break;\n }\n\n case SEMICOLON:\n case CLOSEBRACES:\n {\n if (comment + quote + parentheses + bracket === 0) {\n column++;\n break;\n }\n }\n\n default:\n {\n // increment column position\n column++; // current character\n\n _char = body.charAt(caret); // remove comments, escape functions, strings, attributes and prepare selectors\n\n switch (code) {\n case TAB:\n case SPACE:\n {\n if (quote + bracket + comment === 0) {\n switch (tail) {\n case COMMA:\n case COLON:\n case TAB:\n case SPACE:\n {\n _char = '';\n break;\n }\n\n default:\n {\n if (code !== SPACE) {\n _char = ' ';\n }\n }\n }\n }\n\n break;\n }\n // escape breaking control characters\n\n case NULL:\n {\n _char = '\\\\0';\n break;\n }\n\n case FORMFEED:\n {\n _char = '\\\\f';\n break;\n }\n\n case VERTICALTAB:\n {\n _char = '\\\\v';\n break;\n }\n // &\n\n case AND:\n {\n // inverted selector pattern i.e html &\n if (quote + comment + bracket === 0 && cascade > 0) {\n invert = 1;\n format = 1;\n _char = '\\f' + _char;\n }\n\n break;\n }\n // ::paceholder, l\n // :read-ony, l\n\n case 108:\n {\n if (quote + comment + bracket + pattern === 0 && pseudo > 0) {\n switch (caret - pseudo) {\n // ::placeholder\n case 2:\n {\n if (tail === PLACEHOLDER && body.charCodeAt(caret - 3) === COLON) {\n pattern = tail;\n }\n }\n // :read-only\n\n case 8:\n {\n if (trail === READONLY) {\n pattern = trail;\n }\n }\n }\n }\n\n break;\n }\n // :\n\n case COLON:\n {\n if (quote + comment + bracket === 0) {\n pseudo = caret;\n }\n\n break;\n }\n // selectors\n\n case COMMA:\n {\n if (comment + parentheses + quote + bracket === 0) {\n format = 1;\n _char += '\\r';\n }\n\n break;\n }\n // quotes\n\n case DOUBLEQUOTE:\n case SINGLEQUOTE:\n {\n if (comment === 0) {\n quote = quote === code ? 0 : quote === 0 ? code : quote;\n }\n\n break;\n }\n // attributes\n\n case OPENBRACKET:\n {\n if (quote + comment + parentheses === 0) {\n bracket++;\n }\n\n break;\n }\n\n case CLOSEBRACKET:\n {\n if (quote + comment + parentheses === 0) {\n bracket--;\n }\n\n break;\n }\n // functions\n\n case CLOSEPARENTHESES:\n {\n if (quote + comment + bracket === 0) {\n parentheses--;\n }\n\n break;\n }\n\n case OPENPARENTHESES:\n {\n if (quote + comment + bracket === 0) {\n if (context === 0) {\n switch (tail * 2 + trail * 3) {\n // :matches\n case 533:\n {\n break;\n }\n // :global, :not, :nth-child etc...\n\n default:\n {\n counter = 0;\n context = 1;\n }\n }\n }\n\n parentheses++;\n }\n\n break;\n }\n\n case AT:\n {\n if (comment + parentheses + quote + bracket + pseudo + atrule === 0) {\n atrule = 1;\n }\n\n break;\n }\n // block/line comments\n\n case STAR:\n case FOWARDSLASH:\n {\n if (quote + bracket + parentheses > 0) {\n break;\n }\n\n switch (comment) {\n // initialize line/block comment context\n case 0:\n {\n switch (code * 2 + body.charCodeAt(caret + 1) * 3) {\n // //\n case 235:\n {\n comment = FOWARDSLASH;\n break;\n }\n // /*\n\n case 220:\n {\n length = caret;\n comment = STAR;\n break;\n }\n }\n\n break;\n }\n // end block comment context\n\n case STAR:\n {\n if (code === FOWARDSLASH && tail === STAR && length + 2 !== caret) {\n // /* ... */, !\n if (body.charCodeAt(length + 2) === 33) {\n out += body.substring(length, caret + 1);\n }\n\n _char = '';\n comment = 0;\n }\n }\n }\n }\n } // ignore comment blocks\n\n\n if (comment === 0) {\n // aggressive isolation mode, divide each individual selector\n // including selectors in :not function but excluding selectors in :global function\n if (cascade + quote + bracket + atrule === 0 && id !== KEYFRAME && code !== SEMICOLON) {\n switch (code) {\n case COMMA:\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case CLOSEPARENTHESES:\n case OPENPARENTHESES:\n {\n if (context === 0) {\n // outside of an isolated context i.e nth-child(<...>)\n switch (tail) {\n case TAB:\n case SPACE:\n case NEWLINE:\n case CARRIAGE:\n {\n _char = _char + '\\0';\n break;\n }\n\n default:\n {\n _char = '\\0' + _char + (code === COMMA ? '' : '\\0');\n }\n }\n\n format = 1;\n } else {\n // within an isolated context, sleep untill it's terminated\n switch (code) {\n case OPENPARENTHESES:\n {\n // :globa(\n if (pseudo + 7 === caret && tail === 108) {\n pseudo = 0;\n }\n\n context = ++counter;\n break;\n }\n\n case CLOSEPARENTHESES:\n {\n if ((context = --counter) === 0) {\n format = 1;\n _char += '\\0';\n }\n\n break;\n }\n }\n }\n\n break;\n }\n\n case TAB:\n case SPACE:\n {\n switch (tail) {\n case NULL:\n case OPENBRACES:\n case CLOSEBRACES:\n case SEMICOLON:\n case COMMA:\n case FORMFEED:\n case TAB:\n case SPACE:\n case NEWLINE:\n case CARRIAGE:\n {\n break;\n }\n\n default:\n {\n // ignore in isolated contexts\n if (context === 0) {\n format = 1;\n _char += '\\0';\n }\n }\n }\n }\n }\n } // concat buffer of characters\n\n\n chars += _char; // previous non-whitespace character code\n\n if (code !== SPACE && code !== TAB) {\n peak = code;\n }\n }\n }\n } // tail character codes\n\n\n trail = tail;\n tail = code; // visit every character\n\n caret++;\n }\n\n length = out.length; // preserve empty selector\n\n if (preserve > 0) {\n if (length === 0 && children.length === 0 && current[0].length === 0 === false) {\n if (id !== MEDIA || current.length === 1 && (cascade > 0 ? nscopealt : nscope) === current[0]) {\n length = current.join(',').length + 2;\n }\n }\n }\n\n if (length > 0) {\n // cascade isolation mode?\n selector = cascade === 0 && id !== KEYFRAME ? isolate(current) : current; // execute plugins, block context\n\n if (plugged > 0) {\n result = proxy(BLCKS, out, selector, parent, line, column, length, id, depth, id);\n\n if (result !== void 0 && (out = result).length === 0) {\n return flat + out + children;\n }\n }\n\n out = selector.join(',') + '{' + out + '}';\n\n if (prefix * pattern !== 0) {\n if (prefix === 2 && !vendor(out, 2)) pattern = 0;\n\n switch (pattern) {\n // ::read-only\n case READONLY:\n {\n out = out.replace(readonlyptn, ':' + moz + '$1') + out;\n break;\n }\n // ::placeholder\n\n case PLACEHOLDER:\n {\n out = out.replace(plcholdrptn, '::' + webkit + 'input-$1') + out.replace(plcholdrptn, '::' + moz + '$1') + out.replace(plcholdrptn, ':' + ms + 'input-$1') + out;\n break;\n }\n }\n\n pattern = 0;\n }\n }\n\n return flat + out + children;\n }\n /**\n * Select\n *\n * @param {Array} parent\n * @param {string} current\n * @param {number} invert\n * @return {Array}\n */\n\n\n function select(parent, current, invert) {\n var selectors = current.trim().split(selectorptn);\n var out = selectors;\n var length = selectors.length;\n var l = parent.length;\n\n switch (l) {\n // 0-1 parent selectors\n case 0:\n case 1:\n {\n for (var i = 0, selector = l === 0 ? '' : parent[0] + ' '; i < length; ++i) {\n out[i] = scope(selector, out[i], invert, l).trim();\n }\n\n break;\n }\n // >2 parent selectors, nested\n\n default:\n {\n for (var i = 0, j = 0, out = []; i < length; ++i) {\n for (var k = 0; k < l; ++k) {\n out[j++] = scope(parent[k] + ' ', selectors[i], invert, l).trim();\n }\n }\n }\n }\n\n return out;\n }\n /**\n * Scope\n *\n * @param {string} parent\n * @param {string} current\n * @param {number} invert\n * @param {number} level\n * @return {string}\n */\n\n\n function scope(parent, current, invert, level) {\n var selector = current;\n var code = selector.charCodeAt(0); // trim leading whitespace\n\n if (code < 33) {\n code = (selector = selector.trim()).charCodeAt(0);\n }\n\n switch (code) {\n // &\n case AND:\n {\n switch (cascade + level) {\n case 0:\n case 1:\n {\n if (parent.trim().length === 0) {\n break;\n }\n }\n\n default:\n {\n return selector.replace(andptn, '$1' + parent.trim());\n }\n }\n\n break;\n }\n // :\n\n case COLON:\n {\n switch (selector.charCodeAt(1)) {\n // g in :global\n case 103:\n {\n if (escape > 0 && cascade > 0) {\n return selector.replace(escapeptn, '$1').replace(andptn, '$1' + nscope);\n }\n\n break;\n }\n\n default:\n {\n // :hover\n return parent.trim() + selector.replace(andptn, '$1' + parent.trim());\n }\n }\n }\n\n default:\n {\n // html &\n if (invert * cascade > 0 && selector.indexOf('\\f') > 0) {\n return selector.replace(andptn, (parent.charCodeAt(0) === COLON ? '' : '$1') + parent.trim());\n }\n }\n }\n\n return parent + selector;\n }\n /**\n * Property\n *\n * @param {string} input\n * @param {number} first\n * @param {number} second\n * @param {number} third\n * @return {string}\n */\n\n\n function property(input, first, second, third) {\n var index = 0;\n var out = input + ';';\n var hash = first * 2 + second * 3 + third * 4;\n var cache; // animation: a, n, i characters\n\n if (hash === 944) {\n return animation(out);\n } else if (prefix === 0 || prefix === 2 && !vendor(out, 1)) {\n return out;\n } // vendor prefix\n\n\n switch (hash) {\n // text-decoration/text-size-adjust/text-shadow/text-align/text-transform: t, e, x\n case 1015:\n {\n // text-shadow/text-align/text-transform, a\n return out.charCodeAt(10) === 97 ? webkit + out + out : out;\n }\n // filter/fill f, i, l\n\n case 951:\n {\n // filter, t\n return out.charCodeAt(3) === 116 ? webkit + out + out : out;\n }\n // color/column, c, o, l\n\n case 963:\n {\n // column, n\n return out.charCodeAt(5) === 110 ? webkit + out + out : out;\n }\n // box-decoration-break, b, o, x\n\n case 1009:\n {\n if (out.charCodeAt(4) !== 100) {\n break;\n }\n }\n // mask, m, a, s\n // clip-path, c, l, i\n\n case 969:\n case 942:\n {\n return webkit + out + out;\n }\n // appearance: a, p, p\n\n case 978:\n {\n return webkit + out + moz + out + out;\n }\n // hyphens: h, y, p\n // user-select: u, s, e\n\n case 1019:\n case 983:\n {\n return webkit + out + moz + out + ms + out + out;\n }\n // background/backface-visibility, b, a, c\n\n case 883:\n {\n // backface-visibility, -\n if (out.charCodeAt(8) === DASH) {\n return webkit + out + out;\n } // image-set(...)\n\n\n if (out.indexOf('image-set(', 11) > 0) {\n return out.replace(imgsrcptn, '$1' + webkit + '$2') + out;\n }\n\n return out;\n }\n // flex: f, l, e\n\n case 932:\n {\n if (out.charCodeAt(4) === DASH) {\n switch (out.charCodeAt(5)) {\n // flex-grow, g\n case 103:\n {\n return webkit + 'box-' + out.replace('-grow', '') + webkit + out + ms + out.replace('grow', 'positive') + out;\n }\n // flex-shrink, s\n\n case 115:\n {\n return webkit + out + ms + out.replace('shrink', 'negative') + out;\n }\n // flex-basis, b\n\n case 98:\n {\n return webkit + out + ms + out.replace('basis', 'preferred-size') + out;\n }\n }\n }\n\n return webkit + out + ms + out + out;\n }\n // order: o, r, d\n\n case 964:\n {\n return webkit + out + ms + 'flex' + '-' + out + out;\n }\n // justify-items/justify-content, j, u, s\n\n case 1023:\n {\n // justify-content, c\n if (out.charCodeAt(8) !== 99) {\n break;\n }\n\n cache = out.substring(out.indexOf(':', 15)).replace('flex-', '').replace('space-between', 'justify');\n return webkit + 'box-pack' + cache + webkit + out + ms + 'flex-pack' + cache + out;\n }\n // cursor, c, u, r\n\n case 1005:\n {\n return cursorptn.test(out) ? out.replace(colonptn, ':' + webkit) + out.replace(colonptn, ':' + moz) + out : out;\n }\n // writing-mode, w, r, i\n\n case 1000:\n {\n cache = out.substring(13).trim();\n index = cache.indexOf('-') + 1;\n\n switch (cache.charCodeAt(0) + cache.charCodeAt(index)) {\n // vertical-lr\n case 226:\n {\n cache = out.replace(writingptn, 'tb');\n break;\n }\n // vertical-rl\n\n case 232:\n {\n cache = out.replace(writingptn, 'tb-rl');\n break;\n }\n // horizontal-tb\n\n case 220:\n {\n cache = out.replace(writingptn, 'lr');\n break;\n }\n\n default:\n {\n return out;\n }\n }\n\n return webkit + out + ms + cache + out;\n }\n // position: sticky\n\n case 1017:\n {\n if (out.indexOf('sticky', 9) === -1) {\n return out;\n }\n }\n // display(flex/inline-flex/inline-box): d, i, s\n\n case 975:\n {\n index = (out = input).length - 10;\n cache = (out.charCodeAt(index) === 33 ? out.substring(0, index) : out).substring(input.indexOf(':', 7) + 1).trim();\n\n switch (hash = cache.charCodeAt(0) + (cache.charCodeAt(7) | 0)) {\n // inline-\n case 203:\n {\n // inline-box\n if (cache.charCodeAt(8) < 111) {\n break;\n }\n }\n // inline-box/sticky\n\n case 115:\n {\n out = out.replace(cache, webkit + cache) + ';' + out;\n break;\n }\n // inline-flex\n // flex\n\n case 207:\n case 102:\n {\n out = out.replace(cache, webkit + (hash > 102 ? 'inline-' : '') + 'box') + ';' + out.replace(cache, webkit + cache) + ';' + out.replace(cache, ms + cache + 'box') + ';' + out;\n }\n }\n\n return out + ';';\n }\n // align-items, align-center, align-self: a, l, i, -\n\n case 938:\n {\n if (out.charCodeAt(5) === DASH) {\n switch (out.charCodeAt(6)) {\n // align-items, i\n case 105:\n {\n cache = out.replace('-items', '');\n return webkit + out + webkit + 'box-' + cache + ms + 'flex-' + cache + out;\n }\n // align-self, s\n\n case 115:\n {\n return webkit + out + ms + 'flex-item-' + out.replace(selfptn, '') + out;\n }\n // align-content\n\n default:\n {\n return webkit + out + ms + 'flex-line-pack' + out.replace('align-content', '').replace(selfptn, '') + out;\n }\n }\n }\n\n break;\n }\n // min/max\n\n case 973:\n case 989:\n {\n // min-/max- height/width/block-size/inline-size\n if (out.charCodeAt(3) !== DASH || out.charCodeAt(4) === 122) {\n break;\n }\n }\n // height/width: min-content / width: max-content\n\n case 931:\n case 953:\n {\n if (dimensionptn.test(input) === true) {\n // stretch\n if ((cache = input.substring(input.indexOf(':') + 1)).charCodeAt(0) === 115) return property(input.replace('stretch', 'fill-available'), first, second, third).replace(':fill-available', ':stretch');else return out.replace(cache, webkit + cache) + out.replace(cache, moz + cache.replace('fill-', '')) + out;\n }\n\n break;\n }\n // transform, transition: t, r, a\n\n case 962:\n {\n out = webkit + out + (out.charCodeAt(5) === 102 ? ms + out : '') + out; // transitions\n\n if (second + third === 211 && out.charCodeAt(13) === 105 && out.indexOf('transform', 10) > 0) {\n return out.substring(0, out.indexOf(';', 27) + 1).replace(transformptn, '$1' + webkit + '$2') + out;\n }\n\n break;\n }\n }\n\n return out;\n }\n /**\n * Vendor\n *\n * @param {string} content\n * @param {number} context\n * @return {boolean}\n */\n\n\n function vendor(content, context) {\n var index = content.indexOf(context === 1 ? ':' : '{');\n var key = content.substring(0, context !== 3 ? index : 10);\n var value = content.substring(index + 1, content.length - 1);\n return should(context !== 2 ? key : key.replace(pseudofmt, '$1'), value, context);\n }\n /**\n * Supports\n *\n * @param {string} match\n * @param {string} group\n * @return {string}\n */\n\n\n function supports(match, group) {\n var out = property(group, group.charCodeAt(0), group.charCodeAt(1), group.charCodeAt(2));\n return out !== group + ';' ? out.replace(propertyptn, ' or ($1)').substring(4) : '(' + group + ')';\n }\n /**\n * Animation\n *\n * @param {string} input\n * @return {string}\n */\n\n\n function animation(input) {\n var length = input.length;\n var index = input.indexOf(':', 9) + 1;\n var declare = input.substring(0, index).trim();\n var out = input.substring(index, length - 1).trim();\n\n switch (input.charCodeAt(9) * keyed) {\n case 0:\n {\n break;\n }\n // animation-*, -\n\n case DASH:\n {\n // animation-name, n\n if (input.charCodeAt(10) !== 110) {\n break;\n }\n }\n // animation/animation-name\n\n default:\n {\n // split in case of multiple animations\n var list = out.split((out = '', animationptn));\n\n for (var i = 0, index = 0, length = list.length; i < length; index = 0, ++i) {\n var value = list[i];\n var items = value.split(propertiesptn);\n\n while (value = items[index]) {\n var peak = value.charCodeAt(0);\n\n if (keyed === 1 && ( // letters\n peak > AT && peak < 90 || peak > 96 && peak < 123 || peak === UNDERSCORE || // dash but not in sequence i.e --\n peak === DASH && value.charCodeAt(1) !== DASH)) {\n // not a number/function\n switch (isNaN(parseFloat(value)) + (value.indexOf('(') !== -1)) {\n case 1:\n {\n switch (value) {\n // not a valid reserved keyword\n case 'infinite':\n case 'alternate':\n case 'backwards':\n case 'running':\n case 'normal':\n case 'forwards':\n case 'both':\n case 'none':\n case 'linear':\n case 'ease':\n case 'ease-in':\n case 'ease-out':\n case 'ease-in-out':\n case 'paused':\n case 'reverse':\n case 'alternate-reverse':\n case 'inherit':\n case 'initial':\n case 'unset':\n case 'step-start':\n case 'step-end':\n {\n break;\n }\n\n default:\n {\n value += key;\n }\n }\n }\n }\n }\n\n items[index++] = value;\n }\n\n out += (i === 0 ? '' : ',') + items.join(' ');\n }\n }\n }\n\n out = declare + out + ';';\n if (prefix === 1 || prefix === 2 && vendor(out, 1)) return webkit + out + out;\n return out;\n }\n /**\n * Isolate\n *\n * @param {Array} current\n */\n\n\n function isolate(current) {\n for (var i = 0, length = current.length, selector = Array(length), padding, element; i < length; ++i) {\n // split individual elements in a selector i.e h1 h2 === [h1, h2]\n var elements = current[i].split(elementptn);\n var out = '';\n\n for (var j = 0, size = 0, tail = 0, code = 0, l = elements.length; j < l; ++j) {\n // empty element\n if ((size = (element = elements[j]).length) === 0 && l > 1) {\n continue;\n }\n\n tail = out.charCodeAt(out.length - 1);\n code = element.charCodeAt(0);\n padding = '';\n\n if (j !== 0) {\n // determine if we need padding\n switch (tail) {\n case STAR:\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case SPACE:\n case OPENPARENTHESES:\n {\n break;\n }\n\n default:\n {\n padding = ' ';\n }\n }\n }\n\n switch (code) {\n case AND:\n {\n element = padding + nscopealt;\n }\n\n case TILDE:\n case GREATERTHAN:\n case PLUS:\n case SPACE:\n case CLOSEPARENTHESES:\n case OPENPARENTHESES:\n {\n break;\n }\n\n case OPENBRACKET:\n {\n element = padding + element + nscopealt;\n break;\n }\n\n case COLON:\n {\n switch (element.charCodeAt(1) * 2 + element.charCodeAt(2) * 3) {\n // :global\n case 530:\n {\n if (escape > 0) {\n element = padding + element.substring(8, size - 1);\n break;\n }\n }\n // :hover, :nth-child(), ...\n\n default:\n {\n if (j < 1 || elements[j - 1].length < 1) {\n element = padding + nscopealt + element;\n }\n }\n }\n\n break;\n }\n\n case COMMA:\n {\n padding = '';\n }\n\n default:\n {\n if (size > 1 && element.indexOf(':') > 0) {\n element = padding + element.replace(pseudoptn, '$1' + nscopealt + '$2');\n } else {\n element = padding + element + nscopealt;\n }\n }\n }\n\n out += element;\n }\n\n selector[i] = out.replace(formatptn, '').trim();\n }\n\n return selector;\n }\n /**\n * Proxy\n *\n * @param {number} context\n * @param {string} content\n * @param {Array} selectors\n * @param {Array} parents\n * @param {number} line\n * @param {number} column\n * @param {number} length\n * @param {number} id\n * @param {number} depth\n * @param {number} at\n * @return {(string|void|*)}\n */\n\n\n function proxy(context, content, selectors, parents, line, column, length, id, depth, at) {\n for (var i = 0, out = content, next; i < plugged; ++i) {\n switch (next = plugins[i].call(stylis, context, out, selectors, parents, line, column, length, id, depth, at)) {\n case void 0:\n case false:\n case true:\n case null:\n {\n break;\n }\n\n default:\n {\n out = next;\n }\n }\n }\n\n if (out !== content) {\n return out;\n }\n }\n /**\n * @param {number} code\n * @param {number} index\n * @param {number} length\n * @param {string} body\n * @return {number}\n */\n\n\n function delimited(code, index, length, body) {\n for (var i = index + 1; i < length; ++i) {\n switch (body.charCodeAt(i)) {\n // /*\n case FOWARDSLASH:\n {\n if (code === STAR) {\n if (body.charCodeAt(i - 1) === STAR && index + 2 !== i) {\n return i + 1;\n }\n }\n\n break;\n }\n // //\n\n case NEWLINE:\n {\n if (code === FOWARDSLASH) {\n return i + 1;\n }\n }\n }\n }\n\n return i;\n }\n /**\n * @param {number} type\n * @param {number} index\n * @param {number} length\n * @param {number} find\n * @param {string} body\n * @return {number}\n */\n\n\n function match(type, index, length, body) {\n for (var i = index + 1; i < length; ++i) {\n switch (body.charCodeAt(i)) {\n case type:\n {\n return i;\n }\n }\n }\n\n return i;\n }\n /**\n * Minify\n *\n * @param {(string|*)} output\n * @return {string}\n */\n\n\n function minify(output) {\n return output.replace(formatptn, '').replace(beforeptn, '').replace(afterptn, '$1').replace(tailptn, '$1').replace(whiteptn, ' ');\n }\n /**\n * Use\n *\n * @param {(Array|function(...?)|number|void)?} plugin\n */\n\n\n function use(plugin) {\n switch (plugin) {\n case void 0:\n case null:\n {\n plugged = plugins.length = 0;\n break;\n }\n\n default:\n {\n if (typeof plugin === 'function') {\n plugins[plugged++] = plugin;\n } else if (typeof plugin === 'object') {\n for (var i = 0, length = plugin.length; i < length; ++i) {\n use(plugin[i]);\n }\n } else {\n unkwn = !!plugin | 0;\n }\n }\n }\n\n return use;\n }\n /**\n * Set\n *\n * @param {*} options\n */\n\n\n function set(options) {\n for (var name in options) {\n var value = options[name];\n\n switch (name) {\n case 'keyframe':\n keyed = value | 0;\n break;\n\n case 'global':\n escape = value | 0;\n break;\n\n case 'cascade':\n cascade = value | 0;\n break;\n\n case 'compress':\n compress = value | 0;\n break;\n\n case 'semicolon':\n semicolon = value | 0;\n break;\n\n case 'preserve':\n preserve = value | 0;\n break;\n\n case 'prefix':\n should = null;\n\n if (!value) {\n prefix = 0;\n } else if (typeof value !== 'function') {\n prefix = 1;\n } else {\n prefix = 2;\n should = value;\n }\n\n }\n }\n\n return set;\n }\n /**\n * Stylis\n *\n * @param {string} selector\n * @param {string} input\n * @return {*}\n */\n\n\n function stylis(selector, input) {\n if (this !== void 0 && this.constructor === stylis) {\n return factory(selector);\n } // setup\n\n\n var ns = selector;\n var code = ns.charCodeAt(0); // trim leading whitespace\n\n if (code < 33) {\n code = (ns = ns.trim()).charCodeAt(0);\n } // keyframe/animation namespace\n\n\n if (keyed > 0) {\n key = ns.replace(invalidptn, code === OPENBRACKET ? '' : '-');\n } // reset, used to assert if a plugin is moneky-patching the return value\n\n\n code = 1; // cascade/isolate\n\n if (cascade === 1) {\n nscope = ns;\n } else {\n nscopealt = ns;\n }\n\n var selectors = [nscope];\n var result; // execute plugins, pre-process context\n\n if (plugged > 0) {\n result = proxy(PREPS, input, selectors, selectors, line, column, 0, 0, 0, 0);\n\n if (result !== void 0 && typeof result === 'string') {\n input = result;\n }\n } // build\n\n\n var output = compile(array, selectors, input, 0, 0); // execute plugins, post-process context\n\n if (plugged > 0) {\n result = proxy(POSTS, output, selectors, selectors, line, column, output.length, 0, 0, 0); // bypass minification\n\n if (result !== void 0 && typeof (output = result) !== 'string') {\n code = 0;\n }\n } // reset\n\n\n key = '';\n nscope = '';\n nscopealt = '';\n pattern = 0;\n line = 1;\n column = 1;\n return compress * code === 0 ? output : minify(output);\n }\n\n stylis['use'] = use;\n stylis['set'] = set;\n\n if (options !== void 0) {\n set(options);\n }\n\n return stylis;\n});\n\n//# sourceURL=webpack:///./node_modules/stylis/stylis.js?"); /***/ }), diff --git a/docs/build/main.7cae31fc.js b/docs/build/main.424ceb2d.js similarity index 66% rename from docs/build/main.7cae31fc.js rename to docs/build/main.424ceb2d.js index 4a7814ce6..eca777449 100644 --- a/docs/build/main.7cae31fc.js +++ b/docs/build/main.424ceb2d.js @@ -139,7 +139,7 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Sign in handler /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': '',\n 'displayName': 'HelpMuiModal',\n 'methods': [],\n 'doclets': {},\n 'examples': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=HelpMuiModal&file=.%2FHelpModal.js&shouldShowDefaultExample=false!./src/components/editor/README.md */ \"./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=HelpMuiModal&file=.%2FHelpModal.js&shouldShowDefaultExample=false!./src/components/editor/README.md\")\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/HelpModal.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': '',\n 'displayName': 'HelpMuiModal',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Material-UI styling',\n 'tags': {},\n 'name': 'classes'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Function' },\n 'description': 'Function to handle closing of the modal',\n 'tags': {},\n 'name': 'handleClose'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'boolean' },\n 'description': 'Boolean representing whether the help modal is open',\n 'tags': {},\n 'name': 'showHelpModal'\n }\n ],\n 'doclets': {},\n 'examples': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=HelpMuiModal&file=.%2FHelpModal.js&shouldShowDefaultExample=false!./src/components/editor/README.md */ \"./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=HelpMuiModal&file=.%2FHelpModal.js&shouldShowDefaultExample=false!./src/components/editor/README.md\")\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/HelpModal.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); /***/ }), @@ -165,6 +165,17 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Necessary rende /***/ }), +/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/flow/types.js": +/*!***********************************************************************************************************!*\ + !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/flow/types.js ***! + \***********************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nif (false) {}\n\nmodule.exports = {\n 'methods': [],\n 'doclets': {},\n 'displayName': 'Types',\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/flow/types.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); + +/***/ }), + /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/alignment.js": /*!******************************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/alignment.js ***! @@ -264,6 +275,17 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering compo /***/ }), +/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/linespacing.js": +/*!********************************************************************************************************************!*\ + !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/linespacing.js ***! + \********************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering components that provide the actual HTML to use inside the editor.\\n',\n 'displayName': 'LineSpacingNode',\n 'methods': [],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/plugins/linespacing.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); + +/***/ }), + /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/link.js": /*!*************************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/link.js ***! @@ -297,6 +319,28 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering compo /***/ }), +/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/subscript.js": +/*!******************************************************************************************************************!*\ + !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/subscript.js ***! + \******************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering component that provides the actual HTML to use inside the editor.\\n',\n 'displayName': 'SubscriptMark',\n 'methods': [],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/plugins/subscript.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); + +/***/ }), + +/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/superscript.js": +/*!********************************************************************************************************************!*\ + !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/superscript.js ***! + \********************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering component that provides the actual HTML to use inside the editor.\\n',\n 'displayName': 'SuperscriptMark',\n 'methods': [],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/plugins/superscript.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); + +/***/ }), + /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/table.js": /*!**************************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/plugins/table.js ***! @@ -330,6 +374,17 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering compo /***/ }), +/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/schema/schema.js": +/*!**************************************************************************************************************!*\ + !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/schema/schema.js ***! + \**************************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nif (false) {}\n\nmodule.exports = {\n 'methods': [],\n 'doclets': {},\n 'displayName': 'Schema',\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/schema/schema.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); + +/***/ }), + /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/EditorToolbar.js": /*!**********************************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/editor/toolbar/EditorToolbar.js ***! @@ -337,7 +392,7 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Rendering compo /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'The toolbar for the page editor. It uses Material-UI\\'s AppBar component as the foundation, then displays individual buttons inside of it.\\n',\n 'displayName': 'EditorToolbar',\n 'methods': [],\n 'doclets': {},\n 'tags': {},\n 'examples': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=EditorToolbar&file=.%2FEditorToolbar.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/EditorToolbar.md */ \"./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=EditorToolbar&file=.%2FEditorToolbar.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/EditorToolbar.md\")\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/EditorToolbar.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'The toolbar for the page editor. It uses Material-UI\\'s AppBar component as the foundation, then displays individual buttons inside of it.\\n',\n 'displayName': 'EditorToolbar',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Material-UI styling',\n 'tags': {},\n 'name': 'classes'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Function' },\n 'description': 'Function for saving page content',\n 'tags': {},\n 'name': 'onSave'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=EditorToolbar&file=.%2FEditorToolbar.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/EditorToolbar.md */ \"./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=EditorToolbar&file=.%2FEditorToolbar.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/EditorToolbar.md\")\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/EditorToolbar.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); /***/ }), @@ -348,7 +403,7 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'The toolbar for /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Material-UI button that has a click handler attached to it.\\n',\n 'displayName': 'ToolbarButton',\n 'methods': [],\n 'doclets': {},\n 'tags': {},\n 'examples': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=ToolbarButton&file=.%2FToolbarButton.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/ToolbarButton.md */ \"./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=ToolbarButton&file=.%2FToolbarButton.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/ToolbarButton.md\")\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/ToolbarButton.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Material-UI button that has a click handler attached to it.\\n',\n 'displayName': 'ToolbarButton',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'any' },\n 'description': 'Any content wrapped inside the button',\n 'tags': {},\n 'name': 'children'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Material-UI styling',\n 'tags': {},\n 'name': 'classes'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Function' },\n 'description': 'Function to handle button click event',\n 'tags': {},\n 'name': 'onClick'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': __webpack_require__(/*! !./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=ToolbarButton&file=.%2FToolbarButton.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/ToolbarButton.md */ \"./node_modules/react-styleguidist/lib/loaders/examples-loader.js?displayName=ToolbarButton&file=.%2FToolbarButton.js&shouldShowDefaultExample=false!./src/components/editor/toolbar/ToolbarButton.md\")\n}\n\t\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/ToolbarButton.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); /***/ }), @@ -363,17 +418,6 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Widget that dis /***/ }), -/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/News.js": -/*!********************************************************************************************************!*\ - !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/News.js ***! - \********************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Widget that displays the most recent Dicty news\\n',\n 'displayName': 'News',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Material-UI styling',\n 'tags': {},\n 'name': 'classes'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'The posts to display',\n 'tags': {},\n 'name': 'posts'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/frontpage/News.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); - -/***/ }), - /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Papers.js": /*!**********************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Papers.js ***! @@ -418,6 +462,17 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Widget that dis /***/ }), +/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Tweets.js": +/*!**********************************************************************************************************!*\ + !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/frontpage/Tweets.js ***! + \**********************************************************************************************************/ +/*! no static exports found */ +/***/ (function(module, exports, __webpack_require__) { + +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Widget that displays the most recent dictybase tweets\\n',\n 'displayName': 'Tweets',\n 'methods': [],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/frontpage/Tweets.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); + +/***/ }), + /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/About.js": /*!***********************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/About/About.js ***! @@ -524,7 +579,7 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': '',\n 'displa /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'This is the view component so an authorized user can add a new page.\\n',\n 'displayName': 'AddPage',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': {\n 'name': 'signature',\n 'type': 'object',\n 'raw': '{\\n state: {\\n /** Route params for section name (i.e. \"techniques\" in \"/research/techniques\") */\\n name: string,\\n /** Route params for section subname (i.e. \"media\" in \"/research/techniques/media\") */\\n subname: string,\\n /** Full URL of expected new page */\\n url: string,\\n },\\n}',\n 'signature': {\n 'properties': [{\n 'key': 'state',\n 'value': {\n 'name': 'signature',\n 'type': 'object',\n 'raw': '{\\n /** Route params for section name (i.e. \"techniques\" in \"/research/techniques\") */\\n name: string,\\n /** Route params for section subname (i.e. \"media\" in \"/research/techniques/media\") */\\n subname: string,\\n /** Full URL of expected new page */\\n url: string,\\n}',\n 'signature': {\n 'properties': [\n {\n 'key': 'name',\n 'value': {\n 'name': 'string',\n 'required': true\n }\n },\n {\n 'key': 'subname',\n 'value': {\n 'name': 'string',\n 'required': true\n }\n },\n {\n 'key': 'url',\n 'value': {\n 'name': 'string',\n 'required': true\n }\n }\n ]\n },\n 'required': true\n }\n }]\n }\n },\n 'description': '',\n 'tags': {},\n 'name': 'location'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'React-Router object',\n 'tags': {},\n 'name': 'match'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/AddPage.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'This is the view component so an authorized user can add a new page.\\n',\n 'displayName': 'AddPage',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Material-UI styling',\n 'tags': {},\n 'name': 'classes'\n },\n {\n 'required': true,\n 'flowType': {\n 'name': 'signature',\n 'type': 'object',\n 'raw': '{\\n state: {\\n /** Route params for section name (i.e. \"techniques\" in \"/research/techniques\") */\\n name: string,\\n /** Route params for section subname (i.e. \"media\" in \"/research/techniques/media\") */\\n subname: string,\\n /** Full URL of expected new page */\\n url: string,\\n },\\n}',\n 'signature': {\n 'properties': [{\n 'key': 'state',\n 'value': {\n 'name': 'signature',\n 'type': 'object',\n 'raw': '{\\n /** Route params for section name (i.e. \"techniques\" in \"/research/techniques\") */\\n name: string,\\n /** Route params for section subname (i.e. \"media\" in \"/research/techniques/media\") */\\n subname: string,\\n /** Full URL of expected new page */\\n url: string,\\n}',\n 'signature': {\n 'properties': [\n {\n 'key': 'name',\n 'value': {\n 'name': 'string',\n 'required': true\n }\n },\n {\n 'key': 'subname',\n 'value': {\n 'name': 'string',\n 'required': true\n }\n },\n {\n 'key': 'url',\n 'value': {\n 'name': 'string',\n 'required': true\n }\n }\n ]\n },\n 'required': true\n }\n }]\n }\n },\n 'description': '',\n 'tags': {},\n 'name': 'location'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'React-Router object',\n 'tags': {},\n 'name': 'match'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/AddPage.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); /***/ }), @@ -535,7 +590,7 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'This is the vie /*! no static exports found */ /***/ (function(module, exports, __webpack_require__) { -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Allows page editing\\n',\n 'displayName': 'EditInfoPage',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Styling classes from Material-UI',\n 'tags': {},\n 'name': 'classes'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'The piece of state representing the page editor toolbar',\n 'tags': {},\n 'name': 'editorToolbar'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'React Router\\'s match object',\n 'tags': {},\n 'name': 'match'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'The object holding the fetched page content',\n 'tags': {},\n 'name': 'page'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Function' },\n 'description': 'Action to show/close help modal',\n 'tags': {},\n 'name': 'showHelpModal'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/EditInfoPage.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); +eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'Allows page editing\\n',\n 'displayName': 'EditInfoPage',\n 'methods': [],\n 'props': [\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'React Router\\'s match object',\n 'tags': {},\n 'name': 'match'\n },\n {\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'The object holding the fetched page content',\n 'tags': {},\n 'name': 'page'\n }\n ],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/EditInfoPage.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); /***/ }), @@ -594,17 +649,6 @@ eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'This is the fro /***/ }), -/***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/News/NewsArchive.js": -/*!****************************************************************************************************************!*\ - !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/News/NewsArchive.js ***! - \****************************************************************************************************************/ -/*! no static exports found */ -/***/ (function(module, exports, __webpack_require__) { - -eval("\nif (false) {}\n\nmodule.exports = {\n 'description': 'This displays the Dicty news archive.\\n',\n 'displayName': 'NewsArchive',\n 'methods': [],\n 'props': [{\n 'required': true,\n 'flowType': { 'name': 'Object' },\n 'description': 'Material-UI styling',\n 'tags': {},\n 'name': 'classes'\n }],\n 'doclets': {},\n 'tags': {},\n 'examples': null\n}\n\t\n\n//# sourceURL=webpack:///./src/components/pages/News/NewsArchive.js?./node_modules/react-styleguidist/lib/loaders/props-loader.js"); - -/***/ }), - /***/ "./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/PageNotReady.js": /*!************************************************************************************************************!*\ !*** ./node_modules/react-styleguidist/lib/loaders/props-loader.js!./src/components/pages/PageNotReady.js ***! @@ -658,7 +702,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeTab\", function() { return changeTab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchDownloadTabs\", function() { return fetchDownloadTabs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchDownloadContent\", function() { return fetchDownloadContent; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar downloadTabsJson = \"https://raw.githubusercontent.com/dictyBase/migration-data/master/downloads/organisms.dev.json\";\n\nvar fetchDownloadTabsRequest = function fetchDownloadTabsRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_TABS_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar fetchDownloadTabsSuccess = function fetchDownloadTabsSuccess(json) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_TABS_SUCCESS\"],\n payload: {\n isFetching: false,\n data: json\n }\n };\n};\n\nvar fetchDownloadTabsFailure = function fetchDownloadTabsFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_TABS_FAILURE\"],\n payload: {\n error: error\n }\n };\n};\n\nvar fetchDownloadContentRequest = function fetchDownloadContentRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_CONTENT_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar fetchDownloadContentSuccess = function fetchDownloadContentSuccess(id, json) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_CONTENT_SUCCESS\"],\n payload: {\n isFetching: false,\n id: id,\n data: json\n }\n };\n};\n\nvar fetchDownloadContentFailure = function fetchDownloadContentFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_CONTENT_FAILURE\"],\n payload: {\n error: error\n }\n };\n};\n\nvar changeTab = function changeTab(tab) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"CHANGE_TAB\"],\n payload: {\n tab: tab\n }\n };\n};\n\nvar normalizeData = function normalizeData(json) {\n return json.data.map(function (r) {\n return {\n type: r.type,\n id: r.id,\n attributes: {\n taxon_id: r.attributes.taxon_id,\n scientific_name: r.attributes.scientific_name,\n citation: r.attributes.citation\n }\n };\n });\n};\n\nvar fetchDownloadTabs = function fetchDownloadTabs() {\n return (\n /*#__PURE__*/\n function () {\n var _ref = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(dispatch) {\n var res, json, normalized;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n dispatch(fetchDownloadTabsRequest());\n _context.next = 4;\n return fetch(downloadTabsJson);\n\n case 4:\n res = _context.sent;\n _context.next = 7;\n return res.json();\n\n case 7:\n json = _context.sent;\n\n if (!res.ok) {\n _context.next = 12;\n break;\n }\n\n dispatch(getDownloadLinks(json.data));\n normalized = normalizeData(json);\n return _context.abrupt(\"return\", dispatch(fetchDownloadTabsSuccess(normalized)));\n\n case 12:\n dispatch(fetchDownloadTabsFailure(res.statusText));\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context[\"catch\"](0);\n return _context.abrupt(\"return\", dispatch(fetchDownloadTabsFailure(_context.t0.toString())));\n\n case 18:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[0, 15]]);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()\n );\n};\nvar fetchDownloadContent = function fetchDownloadContent(id, url) {\n return (\n /*#__PURE__*/\n function () {\n var _ref2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(dispatch) {\n var res, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n dispatch(fetchDownloadContentRequest());\n _context2.next = 4;\n return fetch(url);\n\n case 4:\n res = _context2.sent;\n _context2.next = 7;\n return res.json();\n\n case 7:\n json = _context2.sent;\n\n if (!res.ok) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt(\"return\", dispatch(fetchDownloadContentSuccess(id, json)));\n\n case 10:\n dispatch(fetchDownloadContentFailure(res.statusText));\n _context2.next = 16;\n break;\n\n case 13:\n _context2.prev = 13;\n _context2.t0 = _context2[\"catch\"](0);\n return _context2.abrupt(\"return\", dispatch(fetchDownloadContentFailure(_context2.t0.toString())));\n\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[0, 13]]);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }()\n );\n}; // get the download relationship links to fetch individual data\n\nvar getDownloadLinks = function getDownloadLinks(data) {\n return function (dispatch) {\n var links = data.map(function (item) {\n var url = item.relationships.downloads.links.related;\n var id = item.id;\n return [id, url];\n });\n var fetchContent = links.forEach(function (item) {\n dispatch(fetchDownloadContent(item[0], item[1]));\n });\n return fetchContent;\n };\n};\n\n//# sourceURL=webpack:///./src/actions/downloads.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeTab\", function() { return changeTab; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchDownloadTabs\", function() { return fetchDownloadTabs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchDownloadContent\", function() { return fetchDownloadContent; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar downloadTabsJson = \"https://raw.githubusercontent.com/dictyBase/migration-data/master/downloads/organisms.staging.json\";\n\nvar fetchDownloadTabsRequest = function fetchDownloadTabsRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_TABS_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar fetchDownloadTabsSuccess = function fetchDownloadTabsSuccess(json) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_TABS_SUCCESS\"],\n payload: {\n isFetching: false,\n data: json\n }\n };\n};\n\nvar fetchDownloadTabsFailure = function fetchDownloadTabsFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_TABS_FAILURE\"],\n payload: {\n error: error\n }\n };\n};\n\nvar fetchDownloadContentRequest = function fetchDownloadContentRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_CONTENT_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar fetchDownloadContentSuccess = function fetchDownloadContentSuccess(id, json) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_CONTENT_SUCCESS\"],\n payload: {\n isFetching: false,\n id: id,\n data: json\n }\n };\n};\n\nvar fetchDownloadContentFailure = function fetchDownloadContentFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_DOWNLOAD_CONTENT_FAILURE\"],\n payload: {\n error: error\n }\n };\n};\n\nvar changeTab = function changeTab(tab) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_2__[\"CHANGE_TAB\"],\n payload: {\n tab: tab\n }\n };\n};\n\nvar normalizeData = function normalizeData(json) {\n return json.data.map(function (r) {\n return {\n type: r.type,\n id: r.id,\n attributes: {\n taxon_id: r.attributes.taxon_id,\n scientific_name: r.attributes.scientific_name,\n citation: r.attributes.citation\n }\n };\n });\n};\n\nvar fetchDownloadTabs = function fetchDownloadTabs() {\n return (\n /*#__PURE__*/\n function () {\n var _ref = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(dispatch) {\n var res, json, normalized;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n dispatch(fetchDownloadTabsRequest());\n _context.next = 4;\n return fetch(downloadTabsJson);\n\n case 4:\n res = _context.sent;\n _context.next = 7;\n return res.json();\n\n case 7:\n json = _context.sent;\n\n if (!res.ok) {\n _context.next = 12;\n break;\n }\n\n dispatch(getDownloadLinks(json.data));\n normalized = normalizeData(json);\n return _context.abrupt(\"return\", dispatch(fetchDownloadTabsSuccess(normalized)));\n\n case 12:\n dispatch(fetchDownloadTabsFailure(res.statusText));\n _context.next = 18;\n break;\n\n case 15:\n _context.prev = 15;\n _context.t0 = _context[\"catch\"](0);\n return _context.abrupt(\"return\", dispatch(fetchDownloadTabsFailure(_context.t0.toString())));\n\n case 18:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[0, 15]]);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()\n );\n};\nvar fetchDownloadContent = function fetchDownloadContent(id, url) {\n return (\n /*#__PURE__*/\n function () {\n var _ref2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(dispatch) {\n var res, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n dispatch(fetchDownloadContentRequest());\n _context2.next = 4;\n return fetch(url);\n\n case 4:\n res = _context2.sent;\n _context2.next = 7;\n return res.json();\n\n case 7:\n json = _context2.sent;\n\n if (!res.ok) {\n _context2.next = 10;\n break;\n }\n\n return _context2.abrupt(\"return\", dispatch(fetchDownloadContentSuccess(id, json)));\n\n case 10:\n dispatch(fetchDownloadContentFailure(res.statusText));\n _context2.next = 16;\n break;\n\n case 13:\n _context2.prev = 13;\n _context2.t0 = _context2[\"catch\"](0);\n return _context2.abrupt(\"return\", dispatch(fetchDownloadContentFailure(_context2.t0.toString())));\n\n case 16:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[0, 13]]);\n }));\n\n return function (_x2) {\n return _ref2.apply(this, arguments);\n };\n }()\n );\n}; // get the download relationship links to fetch individual data\n\nvar getDownloadLinks = function getDownloadLinks(data) {\n return function (dispatch) {\n var links = data.map(function (item) {\n var url = item.relationships.downloads.links.related;\n var id = item.id;\n return [id, url];\n });\n var fetchContent = links.forEach(function (item) {\n dispatch(fetchDownloadContent(item[0], item[1]));\n });\n return fetchContent;\n };\n};\n\n//# sourceURL=webpack:///./src/actions/downloads.js?"); /***/ }), @@ -670,19 +714,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchPage\", function() { return fetchPage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editPage\", function() { return editPage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editInline\", function() { return editInline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveEditing\", function() { return saveEditing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveInlineEditing\", function() { return saveInlineEditing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEditablePage\", function() { return addEditablePage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cancelEditing\", function() { return cancelEditing; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var connected_react_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! connected-react-router */ \"./node_modules/connected-react-router/esm/index.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n/* harmony import */ var utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! utils/actionHelpers */ \"./src/utils/actionHelpers.js\");\n/* harmony import */ var utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! utils/fetchResources */ \"./src/utils/fetchResources.js\");\n\n\n\n\n\n\nvar server = \"https://betaapi.dictybase.local\";\n\nvar fetchPageRequest = function fetchPageRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"FETCH_PAGE_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar fetchPageSuccess = function fetchPageSuccess(json) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"FETCH_PAGE_SUCCESS\"],\n payload: {\n isFetching: false,\n json: json\n }\n };\n};\n\nvar fetchPageFailure = function fetchPageFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"FETCH_PAGE_FAILURE\"],\n payload: {\n error: error\n }\n };\n};\n\nvar savePageRequest = function savePageRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"SAVE_PAGE_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar savePageSuccess = function savePageSuccess() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"SAVE_PAGE_SUCCESS\"],\n payload: {\n isFetching: false\n }\n };\n};\n\nvar savePageFailure = function savePageFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"SAVE_PAGE_FAILURE\"],\n payload: {\n error: error\n }\n };\n}; // fetch page function that fetches data using async/await\n// checks if header is correct, then either grabs data or displays error\n\n\nvar fetchPage = function fetchPage(slug) {\n return (\n /*#__PURE__*/\n function () {\n var _ref = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(dispatch) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n dispatch(fetchPageRequest());\n _context.next = 4;\n return fetch(\"\".concat(utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__[\"fetchBySlugResource\"], \"/\").concat(slug));\n\n case 4:\n res = _context.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context.next = 13;\n break;\n }\n\n _context.next = 9;\n return res.json();\n\n case 9:\n json = _context.sent;\n\n if (res.ok) {\n dispatch(fetchPageSuccess(json));\n } else {\n if (false) {}\n\n if (res.status !== 404) {\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n }\n\n _context.next = 15;\n break;\n\n case 13:\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context.next = 22;\n break;\n\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](0);\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context.t0.name, _context.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[0, 17]]);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()\n );\n};\n\nvar doEdit = function doEdit(content) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"EDIT_PAGE\"],\n payload: {\n content: content\n }\n };\n};\n\nvar editPage = function editPage(content, url) {\n return function (dispatch) {\n dispatch(doEdit(content));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"\".concat(url, \"/edit\")));\n };\n};\nvar editInline = function editInline(content) {\n return function (dispatch) {\n dispatch(doEdit(content));\n };\n};\nvar saveEditing = function saveEditing(id, body, path) {\n return (\n /*#__PURE__*/\n function () {\n var _ref2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(dispatch, getState) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n dispatch(savePageRequest());\n _context2.next = 4;\n return fetch(\"\".concat(utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__[\"fetchByIdResource\"], \"/\").concat(id), {\n method: \"PATCH\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \".concat(getState().auth.token)\n }\n });\n\n case 4:\n res = _context2.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context2.next = 13;\n break;\n }\n\n _context2.next = 9;\n return res.json();\n\n case 9:\n json = _context2.sent;\n\n if (res.ok) {\n dispatch(savePageSuccess());\n setTimeout(function () {\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"\".concat(path.slice(0, -5))));\n }, 1000);\n } else {\n if (false) {}\n\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n _context2.next = 15;\n break;\n\n case 13:\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context2.next = 22;\n break;\n\n case 17:\n _context2.prev = 17;\n _context2.t0 = _context2[\"catch\"](0);\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context2.t0.name, _context2.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[0, 17]]);\n }));\n\n return function (_x2, _x3) {\n return _ref2.apply(this, arguments);\n };\n }()\n );\n};\nvar saveInlineEditing = function saveInlineEditing(id, body) {\n return (\n /*#__PURE__*/\n function () {\n var _ref3 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(dispatch, getState) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n dispatch(savePageRequest());\n _context3.next = 4;\n return fetch(\"\".concat(utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__[\"fetchByIdResource\"], \"/\").concat(id), {\n method: \"PATCH\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \".concat(getState().auth.token)\n }\n });\n\n case 4:\n res = _context3.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context3.next = 13;\n break;\n }\n\n _context3.next = 9;\n return res.json();\n\n case 9:\n json = _context3.sent;\n\n if (res.ok) {\n dispatch(savePageSuccess());\n } else {\n if (false) {}\n\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n _context3.next = 15;\n break;\n\n case 13:\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context3.next = 22;\n break;\n\n case 17:\n _context3.prev = 17;\n _context3.t0 = _context3[\"catch\"](0);\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context3.t0.name, _context3.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, null, [[0, 17]]);\n }));\n\n return function (_x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n }()\n );\n};\nvar addEditablePage = function addEditablePage(body, url) {\n return (\n /*#__PURE__*/\n function () {\n var _ref4 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(dispatch, getState) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n dispatch(savePageRequest());\n _context4.next = 4;\n return fetch(\"\".concat(server, \"/contents\"), {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \".concat(getState().auth.token)\n }\n });\n\n case 4:\n res = _context4.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 9;\n return res.json();\n\n case 9:\n json = _context4.sent;\n\n if (res.ok) {\n dispatch(savePageSuccess());\n setTimeout(function () {\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(url));\n }, 1000);\n } else {\n if (false) {}\n\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n _context4.next = 15;\n break;\n\n case 13:\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context4.next = 22;\n break;\n\n case 17:\n _context4.prev = 17;\n _context4.t0 = _context4[\"catch\"](0);\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context4.t0.name, _context4.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[0, 17]]);\n }));\n\n return function (_x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n }()\n );\n};\nvar cancelEditing = function cancelEditing(url) {\n return function (dispatch) {\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(url));\n };\n};\n\n//# sourceURL=webpack:///./src/actions/editablePages.js?"); - -/***/ }), - -/***/ "./src/actions/editorToolbar.js": -/*!**************************************!*\ - !*** ./src/actions/editorToolbar.js ***! - \**************************************/ -/*! exports provided: changeFontSelect, changeFontSize, showHelpModal, showColorPicker, showTableOptions */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeFontSelect\", function() { return changeFontSelect; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"changeFontSize\", function() { return changeFontSize; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showHelpModal\", function() { return showHelpModal; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showColorPicker\", function() { return showColorPicker; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"showTableOptions\", function() { return showTableOptions; });\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\nvar changeFontSelect = function changeFontSelect(font) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_0__[\"CHANGE_FONT_SELECT\"],\n payload: {\n font: font\n }\n };\n};\nvar changeFontSize = function changeFontSize(fontSize) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_0__[\"CHANGE_FONT_SIZE\"],\n payload: {\n fontSize: fontSize\n }\n };\n};\nvar showHelpModal = function showHelpModal(bool) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_HELP_MODAL\"],\n payload: {\n bool: bool\n }\n };\n};\nvar showColorPicker = function showColorPicker(bool) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_COLOR_PICKER\"],\n payload: {\n bool: bool\n }\n };\n};\nvar showTableOptions = function showTableOptions(bool) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_0__[\"SHOW_TABLE_OPTIONS\"],\n payload: {\n bool: bool\n }\n };\n};\n\n//# sourceURL=webpack:///./src/actions/editorToolbar.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchPage\", function() { return fetchPage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editPage\", function() { return editPage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"editInline\", function() { return editInline; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveEditing\", function() { return saveEditing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"saveInlineEditing\", function() { return saveInlineEditing; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"addEditablePage\", function() { return addEditablePage; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"cancelEditing\", function() { return cancelEditing; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/regenerator/index.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js\");\n/* harmony import */ var connected_react_router__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! connected-react-router */ \"./node_modules/connected-react-router/esm/index.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n/* harmony import */ var utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! utils/actionHelpers */ \"./src/utils/actionHelpers.js\");\n/* harmony import */ var utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! utils/fetchResources */ \"./src/utils/fetchResources.js\");\n\n\n\n\n\n\nvar server = \"https://betaapi.dictybase.org\";\n\nvar fetchPageRequest = function fetchPageRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"FETCH_PAGE_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar fetchPageSuccess = function fetchPageSuccess(json) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"FETCH_PAGE_SUCCESS\"],\n payload: {\n isFetching: false,\n json: json\n }\n };\n};\n\nvar fetchPageFailure = function fetchPageFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"FETCH_PAGE_FAILURE\"],\n payload: {\n error: error\n }\n };\n};\n\nvar savePageRequest = function savePageRequest() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"SAVE_PAGE_REQUEST\"],\n payload: {\n isFetching: true\n }\n };\n};\n\nvar savePageSuccess = function savePageSuccess() {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"SAVE_PAGE_SUCCESS\"],\n payload: {\n isFetching: false\n }\n };\n};\n\nvar savePageFailure = function savePageFailure(error) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"SAVE_PAGE_FAILURE\"],\n payload: {\n error: error\n }\n };\n}; // fetch page function that fetches data using async/await\n// checks if header is correct, then either grabs data or displays error\n\n\nvar fetchPage = function fetchPage(slug) {\n return (\n /*#__PURE__*/\n function () {\n var _ref = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee(dispatch) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _context.prev = 0;\n dispatch(fetchPageRequest());\n _context.next = 4;\n return fetch(\"\".concat(utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__[\"fetchBySlugResource\"], \"/\").concat(slug));\n\n case 4:\n res = _context.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context.next = 13;\n break;\n }\n\n _context.next = 9;\n return res.json();\n\n case 9:\n json = _context.sent;\n\n if (res.ok) {\n dispatch(fetchPageSuccess(json));\n } else {\n if (false) {}\n\n if (res.status !== 404) {\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n }\n\n _context.next = 15;\n break;\n\n case 13:\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context.next = 22;\n break;\n\n case 17:\n _context.prev = 17;\n _context.t0 = _context[\"catch\"](0);\n dispatch(fetchPageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context.t0.name, _context.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, null, [[0, 17]]);\n }));\n\n return function (_x) {\n return _ref.apply(this, arguments);\n };\n }()\n );\n};\n\nvar doEdit = function doEdit(content) {\n return {\n type: constants_types__WEBPACK_IMPORTED_MODULE_3__[\"EDIT_PAGE\"],\n payload: {\n content: content\n }\n };\n};\n\nvar editPage = function editPage(content, url) {\n return function (dispatch) {\n dispatch(doEdit(content));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"\".concat(url, \"/edit\")));\n };\n};\nvar editInline = function editInline(content) {\n return function (dispatch) {\n dispatch(doEdit(content));\n };\n};\nvar saveEditing = function saveEditing(id, body, path) {\n return (\n /*#__PURE__*/\n function () {\n var _ref2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee2(dispatch, getState) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n _context2.prev = 0;\n dispatch(savePageRequest());\n _context2.next = 4;\n return fetch(\"\".concat(utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__[\"fetchByIdResource\"], \"/\").concat(id), {\n method: \"PATCH\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \".concat(getState().auth.token)\n }\n });\n\n case 4:\n res = _context2.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context2.next = 13;\n break;\n }\n\n _context2.next = 9;\n return res.json();\n\n case 9:\n json = _context2.sent;\n\n if (res.ok) {\n dispatch(savePageSuccess());\n setTimeout(function () {\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"\".concat(path.slice(0, -5))));\n }, 1000);\n } else {\n if (false) {}\n\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n _context2.next = 15;\n break;\n\n case 13:\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context2.next = 22;\n break;\n\n case 17:\n _context2.prev = 17;\n _context2.t0 = _context2[\"catch\"](0);\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context2.t0.name, _context2.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, null, [[0, 17]]);\n }));\n\n return function (_x2, _x3) {\n return _ref2.apply(this, arguments);\n };\n }()\n );\n};\nvar saveInlineEditing = function saveInlineEditing(id, body) {\n return (\n /*#__PURE__*/\n function () {\n var _ref3 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee3(dispatch, getState) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n _context3.prev = 0;\n dispatch(savePageRequest());\n _context3.next = 4;\n return fetch(\"\".concat(utils_fetchResources__WEBPACK_IMPORTED_MODULE_5__[\"fetchByIdResource\"], \"/\").concat(id), {\n method: \"PATCH\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \".concat(getState().auth.token)\n }\n });\n\n case 4:\n res = _context3.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context3.next = 13;\n break;\n }\n\n _context3.next = 9;\n return res.json();\n\n case 9:\n json = _context3.sent;\n\n if (res.ok) {\n dispatch(savePageSuccess());\n } else {\n if (false) {}\n\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n _context3.next = 15;\n break;\n\n case 13:\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context3.next = 22;\n break;\n\n case 17:\n _context3.prev = 17;\n _context3.t0 = _context3[\"catch\"](0);\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context3.t0.name, _context3.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, null, [[0, 17]]);\n }));\n\n return function (_x4, _x5) {\n return _ref3.apply(this, arguments);\n };\n }()\n );\n};\nvar addEditablePage = function addEditablePage(body, url) {\n return (\n /*#__PURE__*/\n function () {\n var _ref4 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_asyncToGenerator__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(\n /*#__PURE__*/\n _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.mark(function _callee4(dispatch, getState) {\n var res, contentType, json;\n return _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default.a.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n _context4.prev = 0;\n dispatch(savePageRequest());\n _context4.next = 4;\n return fetch(\"\".concat(server, \"/contents\"), {\n method: \"POST\",\n body: JSON.stringify(body),\n headers: {\n \"Content-Type\": \"application/json\",\n Authorization: \"Bearer \".concat(getState().auth.token)\n }\n });\n\n case 4:\n res = _context4.sent;\n contentType = res.headers.get(\"content-type\");\n\n if (!(contentType && contentType.includes(\"application/vnd.api+json\"))) {\n _context4.next = 13;\n break;\n }\n\n _context4.next = 9;\n return res.json();\n\n case 9:\n json = _context4.sent;\n\n if (res.ok) {\n dispatch(savePageSuccess());\n setTimeout(function () {\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(url));\n }, 1000);\n } else {\n if (false) {}\n\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, json.errors[0].title)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n }\n\n _context4.next = 15;\n break;\n\n case 13:\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(res.status, res.statusText)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n case 15:\n _context4.next = 22;\n break;\n\n case 17:\n _context4.prev = 17;\n _context4.t0 = _context4[\"catch\"](0);\n dispatch(savePageFailure(Object(utils_actionHelpers__WEBPACK_IMPORTED_MODULE_4__[\"createErrorObj\"])(_context4.t0.name, _context4.t0.message)));\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(\"/error\"));\n\n if (false) {}\n\n case 22:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, null, [[0, 17]]);\n }));\n\n return function (_x6, _x7) {\n return _ref4.apply(this, arguments);\n };\n }()\n );\n};\nvar cancelEditing = function cancelEditing(url) {\n return function (dispatch) {\n dispatch(Object(connected_react_router__WEBPACK_IMPORTED_MODULE_2__[\"push\"])(url));\n };\n};\n\n//# sourceURL=webpack:///./src/actions/editablePages.js?"); /***/ }), @@ -802,7 +834,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Modal */ \"./node_modules/@material-ui/core/Modal/index.js\");\n/* harmony import */ var _material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/ClickAwayListener */ \"./node_modules/@material-ui/core/ClickAwayListener/index.js\");\n/* harmony import */ var _material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n paper: {\n position: \"absolute\",\n width: theme.spacing.unit * 75,\n backgroundColor: \"#faf9f9\",\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 2,\n borderRadius: \"5px\",\n top: \"5%\",\n margin: \"auto\"\n },\n modal: {\n display: \"flex\",\n justifyContent: \"center\"\n },\n save: {\n width: \"50%\",\n color: \"#fff\",\n \"&:hover\": {\n backgroundColor: \"#3f51b5\"\n }\n },\n link: {\n textDecoration: \"none\"\n }\n };\n};\n\nvar HelpMuiModal = function HelpMuiModal(props) {\n var showHelpModal = props.showHelpModal,\n classes = props.classes,\n handleClose = props.handleClose;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.modal,\n open: showHelpModal\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClickAway: handleClose\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.paper\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n justify: \"center\",\n direction: \"column\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"center\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", null, \"Editor Help\"))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Pasting Content\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Some content from HTML pages can be copied and pasted directly into the editor. Just go to any page, highlight what you want to copy then paste it into the editor.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"Known bugs:\"), \" Lists and tables sometimes do not work as expected when pasted into the editor. For lists, your best bet is to copy item by item (or a few items at once), then format accordingly. For tables, it will be easier to create a new table with the applicable toolbar buttons (i.e. create table, add row, etc.), then paste in the content cell by cell.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Links can easily be added by highlighting text and pasting a URL.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Images can be added by simply copying and pasting an image URL.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Videos can be added by copying and pasting the video URL (either YouTube or Vimeo). This will automatically embed the video.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Keyboard Shortcuts\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Some features have keyboard shortcuts. These can be found by hovering over a button in the toolbar. These tooltips will show any available shortcuts. For example, \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"bold\"), \" is CTRL + B.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Found a bug? Got a request?\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Send an email and/or post an issue in the\", \" \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"em\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n className: classes.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/dictyBase/dicty-frontpage/issues\"\n }, \"dicty-frontpage\")), \" \", \"repo.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_5__[\"SaveButton\"], {\n className: classes.save,\n onClick: handleClose\n }, \"Close\"))))));\n};\n\nvar HelpModal = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__[\"withStyles\"])(styles)(HelpMuiModal);\n/* harmony default export */ __webpack_exports__[\"default\"] = (HelpModal);\n\n//# sourceURL=webpack:///./src/components/editor/HelpModal.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Modal */ \"./node_modules/@material-ui/core/Modal/index.js\");\n/* harmony import */ var _material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/ClickAwayListener */ \"./node_modules/@material-ui/core/ClickAwayListener/index.js\");\n/* harmony import */ var _material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n paper: {\n position: \"absolute\",\n width: theme.spacing.unit * 75,\n backgroundColor: \"#faf9f9\",\n boxShadow: theme.shadows[5],\n padding: theme.spacing.unit * 2,\n borderRadius: \"5px\",\n top: \"5%\",\n margin: \"auto\"\n },\n modal: {\n display: \"flex\",\n justifyContent: \"center\"\n },\n save: {\n width: \"50%\",\n color: \"#fff\",\n \"&:hover\": {\n backgroundColor: \"#3f51b5\"\n }\n },\n link: {\n textDecoration: \"none\"\n }\n };\n};\n\nvar HelpMuiModal = function HelpMuiModal(props) {\n var showHelpModal = props.showHelpModal,\n classes = props.classes,\n handleClose = props.handleClose;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Modal__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.modal,\n open: showHelpModal\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_4___default.a, {\n className: classes.paper\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_ClickAwayListener__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClickAway: handleClose\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n justify: \"center\",\n direction: \"column\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"center\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", null, \"Editor Help\"))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Pasting Content\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Some content from HTML pages can be copied and pasted directly into the editor. Just go to any page, highlight what you want to copy then paste it into the editor.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Until we develop an image uploading backend, please put any images you want to use in\", \" \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n className: classes.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/dictyBase/migration-data/issues/9\"\n }, \"this issue\"), \".\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"Known bugs:\"), \" Lists and tables sometimes do not work as expected when pasted into the editor. For lists, your best bet is to copy item by item (or a few items at once), then format accordingly. For tables, it will be easier to create a new table with the applicable toolbar buttons (i.e. create table, add row, etc.), then paste in the content cell by cell.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Keyboard Shortcuts\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Align Left: CTRL + SHIFT + L\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Align Center: CTRL + SHIFT + C\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Align Right: CTRL + SHIFT + R\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Align Justify: CTRL + SHIFT + J\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Bold: CTRL + B\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Divider: CTRL + ]\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Italic: CTRL + I\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Strikethrough: CTRL + SHIFT + S\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", null, \"Underline: CTRL + U\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Found a bug? Got a request?\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"Post an issue in the\", \" \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"em\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n className: classes.link,\n target: \"_blank\",\n rel: \"noopener noreferrer\",\n href: \"https://github.com/dictyBase/dicty-frontpage/issues\"\n }, \"dicty-frontpage\")), \" \", \"repo.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_6__[\"SaveButton\"], {\n className: classes.save,\n onClick: handleClose\n }, \"Close\"))))));\n};\n\nvar HelpModal = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__[\"withStyles\"])(styles)(HelpMuiModal);\n/* harmony default export */ __webpack_exports__[\"default\"] = (HelpModal);\n\n//# sourceURL=webpack:///./src/components/editor/HelpModal.js?"); /***/ }), @@ -814,7 +846,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderMark\", function() { return renderMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderNode\", function() { return renderNode; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/icons/Create */ \"./node_modules/@material-ui/icons/Create.js\");\n/* harmony import */ var _material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var _toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./toolbar/EditorToolbar */ \"./src/components/editor/toolbar/EditorToolbar.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var actions_editablePages__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! actions/editablePages */ \"./src/actions/editablePages.js\");\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n/* harmony import */ var _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\");\nvar _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_20___namespace = /*#__PURE__*/__webpack_require__.t(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\", 1);\n/* harmony import */ var _plugins_bold__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./plugins/bold */ \"./src/components/editor/plugins/bold.js\");\n/* harmony import */ var _plugins_fontcolor__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./plugins/fontcolor */ \"./src/components/editor/plugins/fontcolor.js\");\n/* harmony import */ var _plugins_fontfamily__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./plugins/fontfamily */ \"./src/components/editor/plugins/fontfamily.js\");\n/* harmony import */ var _plugins_fontsize__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./plugins/fontsize */ \"./src/components/editor/plugins/fontsize.js\");\n/* harmony import */ var _plugins_italic__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./plugins/italic */ \"./src/components/editor/plugins/italic.js\");\n/* harmony import */ var _plugins_strikethrough__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./plugins/strikethrough */ \"./src/components/editor/plugins/strikethrough.js\");\n/* harmony import */ var _plugins_underline__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./plugins/underline */ \"./src/components/editor/plugins/underline.js\");\n/* harmony import */ var _plugins_alignment__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./plugins/alignment */ \"./src/components/editor/plugins/alignment.js\");\n/* harmony import */ var _plugins_divider__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./plugins/divider */ \"./src/components/editor/plugins/divider.js\");\n/* harmony import */ var _plugins_heading__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./plugins/heading */ \"./src/components/editor/plugins/heading.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./plugins/link */ \"./src/components/editor/plugins/link.js\");\n/* harmony import */ var _plugins_list__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./plugins/list */ \"./src/components/editor/plugins/list.js\");\n/* harmony import */ var _plugins_table__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./plugins/table */ \"./src/components/editor/plugins/table.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./plugins/video */ \"./src/components/editor/plugins/video.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Import mark renderers */\n\n\n\n\n\n\n\n\n/** Import node renderers */\n\n\n\n\n\n\n\n\n\n/** Import custom plugins */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n buttonGrid: {\n marginRight: \"8px\",\n marginTop: \"8px\"\n },\n saveButton: {\n width: \"100%\",\n backgroundColor: \"#15317e\"\n },\n cancelButton: {\n width: \"100%\"\n },\n icon: {\n height: \"17px\",\n width: \"17px\"\n }\n };\n};\n/**\n * All of the plugins that go into our editor\n * These are generally keyboard shortcuts\n */\n\n\nvar plugins = [Object(_plugins_alignment__WEBPACK_IMPORTED_MODULE_28__[\"AlignmentPlugin\"])(), Object(_plugins_bold__WEBPACK_IMPORTED_MODULE_21__[\"BoldPlugin\"])(), Object(_plugins_divider__WEBPACK_IMPORTED_MODULE_29__[\"DividerPlugin\"])(), Object(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"HeadingPlugin\"])(), Object(_plugins_image__WEBPACK_IMPORTED_MODULE_16__[\"ImagePlugin\"])(), Object(_plugins_italic__WEBPACK_IMPORTED_MODULE_25__[\"ItalicPlugin\"])(), Object(_plugins_link__WEBPACK_IMPORTED_MODULE_31__[\"LinkPlugin\"])(), _plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"ListPlugin\"], Object(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_26__[\"StrikethroughPlugin\"])(), _plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TablePlugin\"], Object(_plugins_underline__WEBPACK_IMPORTED_MODULE_27__[\"UnderlinePlugin\"])()];\n\n/**\n * Necessary renderMark function that receives the mark type then renders the HTML\n * In our case, we are returning custom components\n */\nvar renderMark = function renderMark(props) {\n var mark = props.mark;\n\n switch (mark.type) {\n case \"bold\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_bold__WEBPACK_IMPORTED_MODULE_21__[\"BoldMark\"], props);\n\n case \"font-color\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_22__[\"FontColorMark\"], props);\n\n case \"font-family\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontfamily__WEBPACK_IMPORTED_MODULE_23__[\"FontFamilyMark\"], props);\n\n case \"font-size\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontsize__WEBPACK_IMPORTED_MODULE_24__[\"FontSizeMark\"], props);\n\n case \"italic\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_italic__WEBPACK_IMPORTED_MODULE_25__[\"ItalicMark\"], props);\n\n case \"strikethrough\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_26__[\"StrikethroughMark\"], props);\n\n case \"underline\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_underline__WEBPACK_IMPORTED_MODULE_27__[\"UnderlineMark\"], props);\n\n default:\n return null;\n }\n};\n\n/**\n * Similar to renderMark above, except now we are working with nodes.\n */\nvar renderNode = function renderNode(props) {\n var node = props.node,\n attributes = props.attributes,\n children = props.children;\n\n switch (node.type) {\n case \"alignment\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_28__[\"AlignmentNode\"], props);\n\n case \"divider\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_divider__WEBPACK_IMPORTED_MODULE_29__[\"DividerNode\"], props);\n\n case \"h1\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"H1Node\"], props);\n\n case \"h2\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"H2Node\"], props);\n\n case \"h3\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"H3Node\"], props);\n\n case \"image\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_image__WEBPACK_IMPORTED_MODULE_16__[\"ImageNode\"], props);\n\n case \"link\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_link__WEBPACK_IMPORTED_MODULE_31__[\"LinkNode\"], props);\n\n case \"list-item\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"ListItemNode\"], props);\n\n case \"unordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"UnorderedListNode\"], props);\n\n case \"ordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"OrderedListNode\"], props);\n\n case \"table\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TableNode\"], props);\n\n case \"table-row\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TableRowNode\"], props);\n\n case \"table-cell\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TableCellNode\"], props);\n\n case \"video\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_video__WEBPACK_IMPORTED_MODULE_34__[\"VideoNode\"], props);\n\n default:\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", attributes, children);\n }\n};\n\n/**\n * This is a reusable Slate inline page editor component.\n */\nvar InlineEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(InlineEditor, _Component);\n\n function InlineEditor(props) {\n var _this;\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, InlineEditor);\n\n _this = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(InlineEditor).call(this, props));\n\n _this.onChange = function (_ref) {\n var value = _ref.value;\n\n _this.setState({\n value: value\n });\n };\n\n _this.onEdit = function (e) {\n e.preventDefault();\n\n _this.setState({\n readOnly: false\n });\n\n var _this$props = _this.props,\n editInline = _this$props.editInline,\n page = _this$props.page;\n editInline(page.data.attributes.content);\n };\n\n _this.onCancel = function () {\n var value = _this.state.value;\n\n _this.setState({\n value: value,\n readOnly: true\n });\n };\n\n _this.onSave = function () {\n var value = _this.state.value;\n var _this$props2 = _this.props,\n page = _this$props2.page,\n saveInlineEditing = _this$props2.saveInlineEditing,\n userId = _this$props2.userId;\n var content = JSON.stringify(value.toJSON());\n var body = {\n id: page.data.id,\n data: {\n id: page.data.id,\n type: \"contents\",\n attributes: {\n updated_by: userId,\n content: content\n }\n }\n };\n saveInlineEditing(page.data.id, body);\n\n _this.setState(value);\n };\n\n _this.onPaste = function (e, change) {\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(e);\n var type = transfer.type;\n\n switch (type) {\n case \"text\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_17__[\"onPasteText\"])(e, change);\n\n case \"html\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_17__[\"onPasteHtml\"])(e, change);\n\n default:\n break;\n }\n };\n\n _this.onDrop = function (event, change, editor) {\n var target = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventRange\"])(event, change.value);\n if (!target && event.type === \"drop\") return;\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(event);\n var type = transfer.type,\n files = transfer.files;\n\n if (type === \"files\") {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var file = _step.value;\n var reader = new FileReader();\n\n var _file$type$split = file.type.split(\"/\"),\n _file$type$split2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_file$type$split, 1),\n mime = _file$type$split2[0];\n\n if (mime !== \"image\") return \"continue\";\n reader.addEventListener(\"load\", function () {\n editor.change(function (c) {\n c.call(_plugins_image__WEBPACK_IMPORTED_MODULE_16__[\"insertImage\"], reader.result, target);\n });\n });\n reader.readAsDataURL(file);\n };\n\n for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n };\n\n if (props.page) {\n _this.state = {\n // Initial value of editor\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(JSON.parse(props.page.data.attributes.content)),\n readOnly: true\n };\n } else {\n _this.state = {\n // set default value for any page route refreshing\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(_data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_20__),\n readOnly: props.readOnly\n };\n }\n\n return _this;\n }\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(InlineEditor, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state = this.state,\n readOnly = _this$state.readOnly,\n value = _this$state.value;\n var _this$props3 = this.props,\n classes = _this$props3.classes,\n page = _this$props3.page;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", null, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n value: value,\n onChange: this.onChange,\n page: page\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__[\"StyledEditor\"], {\n value: value,\n onChange: this.onChange,\n onPaste: this.onPaste,\n onDrop: this.onDrop,\n renderMark: renderMark,\n renderNode: renderNode,\n readOnly: readOnly,\n plugins: plugins\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_14__[\"default\"] // eslint-disable-next-line\n , {\n render: function render(_ref2) {\n var canEditPages = _ref2.canEditPages,\n verifiedToken = _ref2.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", null, canEditPages && verifiedToken && readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__[\"TextInfo\"], null, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__[\"InlineLink\"], {\n onClick: _this2.onEdit,\n title: \"Edit\"\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13___default.a, {\n className: classes.icon\n }), \" Edit\")));\n }\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n container: true,\n justify: \"flex-end\"\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.cancelButton,\n size: \"small\",\n variant: \"contained\",\n onClick: this.onCancel\n }, \"Cancel\")), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.saveButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\",\n onClick: this.onSave\n }, \"Save\"))));\n }\n }]);\n\n return InlineEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n if (state.auth.user) {\n return {\n userId: state.auth.user.data.id\n };\n }\n\n return {};\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_7__[\"connect\"])(mapStateToProps, {\n editInline: actions_editablePages__WEBPACK_IMPORTED_MODULE_18__[\"editInline\"],\n saveInlineEditing: actions_editablePages__WEBPACK_IMPORTED_MODULE_18__[\"saveInlineEditing\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__[\"withStyles\"])(styles)(InlineEditor)));\n\n//# sourceURL=webpack:///./src/components/editor/InlineEditor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderMark\", function() { return renderMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderNode\", function() { return renderNode; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/icons/Create */ \"./node_modules/@material-ui/icons/Create.js\");\n/* harmony import */ var _material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var _toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./toolbar/EditorToolbar */ \"./src/components/editor/toolbar/EditorToolbar.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var actions_editablePages__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! actions/editablePages */ \"./src/actions/editablePages.js\");\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n/* harmony import */ var _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\");\nvar _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_20___namespace = /*#__PURE__*/__webpack_require__.t(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\", 1);\n/* harmony import */ var _plugins_bold__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./plugins/bold */ \"./src/components/editor/plugins/bold.js\");\n/* harmony import */ var _plugins_fontcolor__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./plugins/fontcolor */ \"./src/components/editor/plugins/fontcolor.js\");\n/* harmony import */ var _plugins_fontfamily__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./plugins/fontfamily */ \"./src/components/editor/plugins/fontfamily.js\");\n/* harmony import */ var _plugins_fontsize__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./plugins/fontsize */ \"./src/components/editor/plugins/fontsize.js\");\n/* harmony import */ var _plugins_italic__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./plugins/italic */ \"./src/components/editor/plugins/italic.js\");\n/* harmony import */ var _plugins_strikethrough__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./plugins/strikethrough */ \"./src/components/editor/plugins/strikethrough.js\");\n/* harmony import */ var _plugins_underline__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./plugins/underline */ \"./src/components/editor/plugins/underline.js\");\n/* harmony import */ var _plugins_alignment__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./plugins/alignment */ \"./src/components/editor/plugins/alignment.js\");\n/* harmony import */ var _plugins_divider__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./plugins/divider */ \"./src/components/editor/plugins/divider.js\");\n/* harmony import */ var _plugins_heading__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./plugins/heading */ \"./src/components/editor/plugins/heading.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./plugins/link */ \"./src/components/editor/plugins/link.js\");\n/* harmony import */ var _plugins_list__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./plugins/list */ \"./src/components/editor/plugins/list.js\");\n/* harmony import */ var _plugins_table__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./plugins/table */ \"./src/components/editor/plugins/table.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./plugins/video */ \"./src/components/editor/plugins/video.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Import mark renderers */\n\n\n\n\n\n\n\n\n/** Import node renderers */\n\n\n\n\n\n\n\n\n\n/** Import custom plugins */\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n buttonGrid: {\n marginRight: \"8px\",\n marginTop: \"8px\"\n },\n saveButton: {\n width: \"100%\",\n backgroundColor: \"#15317e\"\n },\n cancelButton: {\n width: \"100%\"\n },\n icon: {\n height: \"17px\",\n width: \"17px\"\n }\n };\n};\n/**\n * All of the plugins that go into our editor\n * These are generally keyboard shortcuts\n */\n\n\nvar plugins = [Object(_plugins_alignment__WEBPACK_IMPORTED_MODULE_28__[\"AlignmentPlugin\"])(), Object(_plugins_bold__WEBPACK_IMPORTED_MODULE_21__[\"BoldPlugin\"])(), Object(_plugins_divider__WEBPACK_IMPORTED_MODULE_29__[\"DividerPlugin\"])(), Object(_plugins_italic__WEBPACK_IMPORTED_MODULE_25__[\"ItalicPlugin\"])(), _plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"ListPlugin\"], Object(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_26__[\"StrikethroughPlugin\"])(), _plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TablePlugin\"], Object(_plugins_underline__WEBPACK_IMPORTED_MODULE_27__[\"UnderlinePlugin\"])()];\n\n/**\n * Necessary renderMark function that receives the mark type then renders the HTML\n * In our case, we are returning custom components\n */\nvar renderMark = function renderMark(props, next) {\n var mark = props.mark;\n\n switch (mark.type) {\n case \"bold\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_bold__WEBPACK_IMPORTED_MODULE_21__[\"BoldMark\"], props);\n\n case \"font-color\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_22__[\"FontColorMark\"], props);\n\n case \"font-family\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontfamily__WEBPACK_IMPORTED_MODULE_23__[\"FontFamilyMark\"], props);\n\n case \"font-size\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontsize__WEBPACK_IMPORTED_MODULE_24__[\"FontSizeMark\"], props);\n\n case \"italic\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_italic__WEBPACK_IMPORTED_MODULE_25__[\"ItalicMark\"], props);\n\n case \"strikethrough\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_26__[\"StrikethroughMark\"], props);\n\n case \"underline\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_underline__WEBPACK_IMPORTED_MODULE_27__[\"UnderlineMark\"], props);\n\n default:\n return next();\n }\n};\n\n/**\n * Similar to renderMark above, except now we are working with nodes.\n */\nvar renderNode = function renderNode(props, next) {\n var node = props.node;\n\n switch (node.type) {\n case \"alignment\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_28__[\"AlignmentNode\"], props);\n\n case \"divider\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_divider__WEBPACK_IMPORTED_MODULE_29__[\"DividerNode\"], props);\n\n case \"h1\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"H1Node\"], props);\n\n case \"h2\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"H2Node\"], props);\n\n case \"h3\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_30__[\"H3Node\"], props);\n\n case \"image\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_image__WEBPACK_IMPORTED_MODULE_16__[\"ImageNode\"], props);\n\n case \"link\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_link__WEBPACK_IMPORTED_MODULE_31__[\"LinkNode\"], props);\n\n case \"list-item\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"ListItemNode\"], props);\n\n case \"unordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"UnorderedListNode\"], props);\n\n case \"ordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_32__[\"OrderedListNode\"], props);\n\n case \"table\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TableNode\"], props);\n\n case \"table-row\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TableRowNode\"], props);\n\n case \"table-cell\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_33__[\"TableCellNode\"], props);\n\n case \"video\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_video__WEBPACK_IMPORTED_MODULE_34__[\"VideoNode\"], props);\n\n default:\n return next();\n }\n};\n\n/**\n * This is a reusable Slate inline page editor component.\n */\nvar InlineEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(InlineEditor, _Component);\n\n // necessary for Flow\n function InlineEditor(props) {\n var _this;\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, InlineEditor);\n\n _this = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(InlineEditor).call(this, props));\n\n _this.onChange = function (_ref) {\n var value = _ref.value;\n\n _this.setState({\n value: value\n });\n };\n\n _this.onEdit = function (e) {\n e.preventDefault();\n\n _this.setState({\n readOnly: false\n });\n\n var _this$props = _this.props,\n editInline = _this$props.editInline,\n page = _this$props.page;\n editInline(page.data.attributes.content);\n };\n\n _this.onCancel = function () {\n var value = _this.state.value;\n\n _this.setState({\n value: value,\n readOnly: true\n });\n };\n\n _this.onSave = function () {\n var value = _this.state.value;\n var _this$props2 = _this.props,\n page = _this$props2.page,\n saveInlineEditing = _this$props2.saveInlineEditing,\n userId = _this$props2.userId;\n var content = JSON.stringify(value.toJSON());\n var body = {\n id: page.data.id,\n data: {\n id: page.data.id,\n type: \"contents\",\n attributes: {\n updated_by: userId,\n content: content\n }\n }\n };\n saveInlineEditing(page.data.id, body);\n\n _this.setState(value);\n };\n\n _this.onPaste = function (e, change) {\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(e);\n var type = transfer.type;\n\n switch (type) {\n case \"text\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_17__[\"onPasteText\"])(e, change);\n\n case \"html\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_17__[\"onPasteHtml\"])(e, change);\n\n default:\n break;\n }\n };\n\n _this.onDrop = function (event, change, editor) {\n var target = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventRange\"])(event, change.value);\n if (!target && event.type === \"drop\") return;\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(event);\n var type = transfer.type,\n files = transfer.files;\n\n if (type === \"files\") {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var file = _step.value;\n var reader = new FileReader();\n\n var _file$type$split = file.type.split(\"/\"),\n _file$type$split2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_file$type$split, 1),\n mime = _file$type$split2[0];\n\n if (mime !== \"image\") return \"continue\";\n reader.addEventListener(\"load\", function () {\n editor.change(function (c) {\n c.call(_plugins_image__WEBPACK_IMPORTED_MODULE_16__[\"insertImage\"], reader.result, target);\n });\n });\n reader.readAsDataURL(file);\n };\n\n for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n };\n\n if (props.page) {\n _this.state = {\n // Initial value of editor\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(JSON.parse(props.page.data.attributes.content)),\n readOnly: true\n };\n } else {\n _this.state = {\n // set default value for any page route refreshing\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(_data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_20__),\n readOnly: props.readOnly\n };\n }\n\n _this.editor = react__WEBPACK_IMPORTED_MODULE_6___default.a.createRef();\n return _this;\n }\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(InlineEditor, [{\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$state = this.state,\n readOnly = _this$state.readOnly,\n value = _this$state.value;\n var _this$props3 = this.props,\n classes = _this$props3.classes,\n page = _this$props3.page;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", null, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_15__[\"default\"], {\n editor: this.editor.current,\n value: value,\n onChange: this.onChange,\n page: page\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__[\"StyledEditor\"], {\n value: value,\n onChange: this.onChange,\n onPaste: this.onPaste,\n onDrop: this.onDrop,\n renderMark: renderMark,\n renderNode: renderNode,\n readOnly: readOnly,\n plugins: plugins,\n ref: this.editor\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n render: function render(_ref2) {\n var canEditPages = _ref2.canEditPages,\n verifiedToken = _ref2.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", null, canEditPages && verifiedToken && readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__[\"TextInfo\"], null, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_19__[\"InlineLink\"], {\n onClick: _this2.onEdit,\n title: \"Edit\"\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_icons_Create__WEBPACK_IMPORTED_MODULE_13___default.a, {\n className: classes.icon\n }), \" Edit\")));\n }\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n container: true,\n justify: \"flex-end\"\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.cancelButton,\n size: \"small\",\n variant: \"contained\",\n onClick: this.onCancel\n }, \"Cancel\")), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.saveButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\",\n onClick: this.onSave\n }, \"Save\"))));\n }\n }]);\n\n return InlineEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n if (state.auth.user) {\n return {\n userId: state.auth.user.data.id\n };\n }\n\n return {};\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_7__[\"connect\"])(mapStateToProps, {\n editInline: actions_editablePages__WEBPACK_IMPORTED_MODULE_18__[\"editInline\"],\n saveInlineEditing: actions_editablePages__WEBPACK_IMPORTED_MODULE_18__[\"saveInlineEditing\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__[\"withStyles\"])(styles)(InlineEditor)));\n\n//# sourceURL=webpack:///./src/components/editor/InlineEditor.js?"); /***/ }), @@ -826,7 +858,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderMark\", function() { return renderMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderNode\", function() { return renderNode; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./toolbar/EditorToolbar */ \"./src/components/editor/toolbar/EditorToolbar.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var actions_editablePages__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! actions/editablePages */ \"./src/actions/editablePages.js\");\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n/* harmony import */ var _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\");\nvar _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_18___namespace = /*#__PURE__*/__webpack_require__.t(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\", 1);\n/* harmony import */ var _data_newPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./data/newPagePlaceholder.json */ \"./src/components/editor/data/newPagePlaceholder.json\");\nvar _data_newPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_19___namespace = /*#__PURE__*/__webpack_require__.t(/*! ./data/newPagePlaceholder.json */ \"./src/components/editor/data/newPagePlaceholder.json\", 1);\n/* harmony import */ var _plugins_bold__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./plugins/bold */ \"./src/components/editor/plugins/bold.js\");\n/* harmony import */ var _plugins_fontcolor__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./plugins/fontcolor */ \"./src/components/editor/plugins/fontcolor.js\");\n/* harmony import */ var _plugins_fontfamily__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./plugins/fontfamily */ \"./src/components/editor/plugins/fontfamily.js\");\n/* harmony import */ var _plugins_fontsize__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./plugins/fontsize */ \"./src/components/editor/plugins/fontsize.js\");\n/* harmony import */ var _plugins_italic__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./plugins/italic */ \"./src/components/editor/plugins/italic.js\");\n/* harmony import */ var _plugins_strikethrough__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./plugins/strikethrough */ \"./src/components/editor/plugins/strikethrough.js\");\n/* harmony import */ var _plugins_underline__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./plugins/underline */ \"./src/components/editor/plugins/underline.js\");\n/* harmony import */ var _plugins_alignment__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./plugins/alignment */ \"./src/components/editor/plugins/alignment.js\");\n/* harmony import */ var _plugins_divider__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./plugins/divider */ \"./src/components/editor/plugins/divider.js\");\n/* harmony import */ var _plugins_heading__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./plugins/heading */ \"./src/components/editor/plugins/heading.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./plugins/link */ \"./src/components/editor/plugins/link.js\");\n/* harmony import */ var _plugins_list__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./plugins/list */ \"./src/components/editor/plugins/list.js\");\n/* harmony import */ var _plugins_table__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./plugins/table */ \"./src/components/editor/plugins/table.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./plugins/video */ \"./src/components/editor/plugins/video.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Import mark renderers */\n\n\n\n\n\n\n\n\n/** Import node renderers */\n\n\n\n\n\n\n\n\n\n/** Import custom plugins */\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n buttonGrid: {\n marginRight: \"8px\",\n marginTop: \"8px\"\n },\n saveButton: {\n width: \"100%\",\n backgroundColor: \"#15317e\"\n },\n cancelButton: {\n width: \"100%\"\n }\n };\n};\n/**\n * All of the plugins that go into our editor\n * These are generally keyboard shortcuts\n */\n\n\nvar plugins = [Object(_plugins_alignment__WEBPACK_IMPORTED_MODULE_27__[\"AlignmentPlugin\"])(), Object(_plugins_bold__WEBPACK_IMPORTED_MODULE_20__[\"BoldPlugin\"])(), Object(_plugins_divider__WEBPACK_IMPORTED_MODULE_28__[\"DividerPlugin\"])(), Object(_plugins_heading__WEBPACK_IMPORTED_MODULE_29__[\"HeadingPlugin\"])(), Object(_plugins_image__WEBPACK_IMPORTED_MODULE_14__[\"ImagePlugin\"])(), Object(_plugins_italic__WEBPACK_IMPORTED_MODULE_24__[\"ItalicPlugin\"])(), Object(_plugins_link__WEBPACK_IMPORTED_MODULE_30__[\"LinkPlugin\"])(), _plugins_list__WEBPACK_IMPORTED_MODULE_31__[\"ListPlugin\"], Object(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_25__[\"StrikethroughPlugin\"])(), _plugins_table__WEBPACK_IMPORTED_MODULE_32__[\"TablePlugin\"], Object(_plugins_underline__WEBPACK_IMPORTED_MODULE_26__[\"UnderlinePlugin\"])()];\n\n/**\n * Necessary renderMark function that receives the mark type then renders the HTML\n * In our case, we are returning custom components\n */\nvar renderMark = function renderMark(props) {\n var mark = props.mark;\n\n switch (mark.type) {\n case \"bold\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_bold__WEBPACK_IMPORTED_MODULE_20__[\"BoldMark\"], props);\n\n case \"font-color\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_21__[\"FontColorMark\"], props);\n\n case \"font-family\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontfamily__WEBPACK_IMPORTED_MODULE_22__[\"FontFamilyMark\"], props);\n\n case \"font-size\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontsize__WEBPACK_IMPORTED_MODULE_23__[\"FontSizeMark\"], props);\n\n case \"italic\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_italic__WEBPACK_IMPORTED_MODULE_24__[\"ItalicMark\"], props);\n\n case \"strikethrough\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_25__[\"StrikethroughMark\"], props);\n\n case \"underline\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_underline__WEBPACK_IMPORTED_MODULE_26__[\"UnderlineMark\"], props);\n\n default:\n return null;\n }\n};\n\n/**\n * Similar to renderMark above, except now we are working with nodes.\n */\nvar renderNode = function renderNode(props) {\n var node = props.node,\n attributes = props.attributes,\n children = props.children;\n\n switch (node.type) {\n case \"alignment\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_27__[\"AlignmentNode\"], props);\n\n case \"divider\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_divider__WEBPACK_IMPORTED_MODULE_28__[\"DividerNode\"], props);\n\n case \"h1\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_29__[\"H1Node\"], props);\n\n case \"h2\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_29__[\"H2Node\"], props);\n\n case \"h3\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_29__[\"H3Node\"], props);\n\n case \"image\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_image__WEBPACK_IMPORTED_MODULE_14__[\"ImageNode\"], props);\n\n case \"link\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_link__WEBPACK_IMPORTED_MODULE_30__[\"LinkNode\"], props);\n\n case \"list-item\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_31__[\"ListItemNode\"], props);\n\n case \"unordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_31__[\"UnorderedListNode\"], props);\n\n case \"ordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_31__[\"OrderedListNode\"], props);\n\n case \"table\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_32__[\"TableNode\"], props);\n\n case \"table-row\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_32__[\"TableRowNode\"], props);\n\n case \"table-cell\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_32__[\"TableCellNode\"], props);\n\n case \"video\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_video__WEBPACK_IMPORTED_MODULE_33__[\"VideoNode\"], props);\n\n default:\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", attributes, children);\n }\n};\n\n/**\n * This is a reusable Slate page editor component.\n */\nvar PageEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(PageEditor, _Component);\n\n function PageEditor(props) {\n var _this;\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, PageEditor);\n\n _this = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(PageEditor).call(this, props));\n\n _this.onChange = function (_ref) {\n var value = _ref.value;\n\n _this.setState({\n value: value\n });\n };\n\n _this.onCancel = function () {\n var value = _this.state.value;\n var slug = _this.props.slug;\n\n _this.setState({\n value: value,\n readOnly: true\n });\n\n var _this$props = _this.props,\n cancelEditing = _this$props.cancelEditing,\n match = _this$props.match;\n\n if (slug) {\n cancelEditing(match.url.slice(0, -7));\n } else {\n cancelEditing(match.url.slice(0, -5));\n }\n };\n\n _this.onSave = function () {\n var value = _this.state.value;\n var _this$props2 = _this.props,\n page = _this$props2.page,\n saveEditing = _this$props2.saveEditing,\n match = _this$props2.match,\n userId = _this$props2.userId,\n slug = _this$props2.slug,\n url = _this$props2.url,\n addEditablePage = _this$props2.addEditablePage;\n var content = JSON.stringify(value.toJSON());\n\n if (slug) {\n var body = {\n data: {\n type: \"contents\",\n attributes: {\n name: slug,\n created_by: userId,\n content: content,\n namespace: \"dfp\"\n }\n }\n };\n addEditablePage(body, url);\n\n _this.setState(value);\n } else {\n var _body = {\n id: page.data.id,\n data: {\n id: page.data.id,\n type: \"contents\",\n attributes: {\n updated_by: userId,\n content: content\n }\n }\n };\n saveEditing(page.data.id, _body, match.url);\n\n _this.setState(value);\n }\n };\n\n _this.onPaste = function (e, change) {\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(e);\n var type = transfer.type;\n\n switch (type) {\n case \"text\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__[\"onPasteText\"])(e, change);\n\n case \"html\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_15__[\"onPasteHtml\"])(e, change);\n\n default:\n break;\n }\n };\n\n _this.onDrop = function (event, change, editor) {\n var target = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventRange\"])(event, change.value);\n if (!target && event.type === \"drop\") return;\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(event);\n var type = transfer.type,\n files = transfer.files;\n\n if (type === \"files\") {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var file = _step.value;\n var reader = new FileReader();\n\n var _file$type$split = file.type.split(\"/\"),\n _file$type$split2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_file$type$split, 1),\n mime = _file$type$split2[0];\n\n if (mime !== \"image\") return \"continue\";\n reader.addEventListener(\"load\", function () {\n editor.change(function (c) {\n c.call(_plugins_image__WEBPACK_IMPORTED_MODULE_14__[\"insertImage\"], reader.result, target);\n });\n });\n reader.readAsDataURL(file);\n };\n\n for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n };\n\n if (props.page) {\n _this.state = {\n // Initial value of editor\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(JSON.parse(props.page.data.attributes.content)),\n readOnly: props.readOnly\n };\n } else if (props.slug) {\n _this.state = {\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(_data_newPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_19__),\n readOnly: props.readOnly\n };\n } else {\n _this.state = {\n // set default value for any page route refreshing\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(_data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_18__),\n readOnly: props.readOnly\n };\n }\n\n return _this;\n }\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PageEditor, [{\n key: \"render\",\n value: function render() {\n var _this$state = this.state,\n readOnly = _this$state.readOnly,\n value = _this$state.value;\n var _this$props3 = this.props,\n classes = _this$props3.classes,\n page = _this$props3.page;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", null, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n value: value,\n onChange: this.onChange,\n page: page,\n onSave: this.onSave\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"StyledEditor\"], {\n value: value,\n onChange: this.onChange,\n onPaste: this.onPaste,\n onDrop: this.onDrop,\n renderMark: renderMark,\n renderNode: renderNode,\n readOnly: readOnly,\n plugins: plugins\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n container: true,\n justify: \"flex-end\"\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.cancelButton,\n size: \"small\",\n variant: \"contained\",\n onClick: this.onCancel\n }, \"Cancel\")), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.saveButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\",\n onClick: this.onSave\n }, \"Save\"))));\n }\n }]);\n\n return PageEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n if (state.auth.user) {\n return {\n userId: state.auth.user.data.id\n };\n }\n\n return {};\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_7__[\"connect\"])(mapStateToProps, {\n saveEditing: actions_editablePages__WEBPACK_IMPORTED_MODULE_16__[\"saveEditing\"],\n cancelEditing: actions_editablePages__WEBPACK_IMPORTED_MODULE_16__[\"cancelEditing\"],\n addEditablePage: actions_editablePages__WEBPACK_IMPORTED_MODULE_16__[\"addEditablePage\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__[\"withStyles\"])(styles)(PageEditor)));\n\n//# sourceURL=webpack:///./src/components/editor/PageEditor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderMark\", function() { return renderMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"renderNode\", function() { return renderNode; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./toolbar/EditorToolbar */ \"./src/components/editor/toolbar/EditorToolbar.js\");\n/* harmony import */ var _schema_schema__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./schema/schema */ \"./src/components/editor/schema/schema.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var actions_editablePages__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! actions/editablePages */ \"./src/actions/editablePages.js\");\n/* harmony import */ var _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\");\nvar _data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_18___namespace = /*#__PURE__*/__webpack_require__.t(/*! ./data/existingPagePlaceholder.json */ \"./src/components/editor/data/existingPagePlaceholder.json\", 1);\n/* harmony import */ var _data_newPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./data/newPagePlaceholder.json */ \"./src/components/editor/data/newPagePlaceholder.json\");\nvar _data_newPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_19___namespace = /*#__PURE__*/__webpack_require__.t(/*! ./data/newPagePlaceholder.json */ \"./src/components/editor/data/newPagePlaceholder.json\", 1);\n/* harmony import */ var _plugins_bold__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./plugins/bold */ \"./src/components/editor/plugins/bold.js\");\n/* harmony import */ var _plugins_fontcolor__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./plugins/fontcolor */ \"./src/components/editor/plugins/fontcolor.js\");\n/* harmony import */ var _plugins_fontfamily__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./plugins/fontfamily */ \"./src/components/editor/plugins/fontfamily.js\");\n/* harmony import */ var _plugins_fontsize__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./plugins/fontsize */ \"./src/components/editor/plugins/fontsize.js\");\n/* harmony import */ var _plugins_italic__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./plugins/italic */ \"./src/components/editor/plugins/italic.js\");\n/* harmony import */ var _plugins_strikethrough__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./plugins/strikethrough */ \"./src/components/editor/plugins/strikethrough.js\");\n/* harmony import */ var _plugins_subscript__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./plugins/subscript */ \"./src/components/editor/plugins/subscript.js\");\n/* harmony import */ var _plugins_superscript__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./plugins/superscript */ \"./src/components/editor/plugins/superscript.js\");\n/* harmony import */ var _plugins_underline__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./plugins/underline */ \"./src/components/editor/plugins/underline.js\");\n/* harmony import */ var _plugins_alignment__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./plugins/alignment */ \"./src/components/editor/plugins/alignment.js\");\n/* harmony import */ var _plugins_divider__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! ./plugins/divider */ \"./src/components/editor/plugins/divider.js\");\n/* harmony import */ var _plugins_heading__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./plugins/heading */ \"./src/components/editor/plugins/heading.js\");\n/* harmony import */ var _plugins_linespacing__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./plugins/linespacing */ \"./src/components/editor/plugins/linespacing.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./plugins/link */ \"./src/components/editor/plugins/link.js\");\n/* harmony import */ var _plugins_list__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./plugins/list */ \"./src/components/editor/plugins/list.js\");\n/* harmony import */ var _plugins_table__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./plugins/table */ \"./src/components/editor/plugins/table.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./plugins/video */ \"./src/components/editor/plugins/video.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/** Import mark renderers */\n\n\n\n\n\n\n\n\n\n\n/** Import node renderers */\n\n\n\n\n\n\n\n\n\n\n/** Import custom plugins */\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n buttonGrid: {\n marginRight: \"8px\",\n marginTop: \"8px\"\n },\n saveButton: {\n width: \"100%\",\n backgroundColor: \"#15317e\"\n },\n cancelButton: {\n width: \"100%\"\n },\n editor: {\n padding: \"15px\",\n minHeight: \"200px\",\n minWidth: \"800px\",\n lineHeight: 1.6,\n color: \"rgba(0, 0, 0, 0.87)\",\n \"& a\": {\n color: \"#428bca\",\n textDecoration: \"none\"\n },\n \"& table\": {\n width: \"100%\",\n borderCollapse: \"collapse\",\n borderTop: \"1px solid #ccc\"\n },\n \"& table tr\": {\n border: \"none\",\n borderBottom: \"1px solid #ccc\",\n borderRight: \"1px solid #ccc\",\n display: \"flex\",\n flexDirection: \"row\",\n flexWrap: \"nowrap\"\n },\n \"& table td\": {\n padding: \"0.4rem 1.4rem 0.4rem 0.8rem\",\n border: \"1px solid #ccc\",\n borderTop: \"none\",\n borderBottom: \"none\",\n borderRight: \"none\",\n flex: 1,\n position: \"relative\"\n },\n \"& table td p\": {\n margin: 0\n }\n }\n };\n};\n/**\n * All of the plugins that go into our editor\n * These are generally keyboard shortcuts\n */\n\n\nvar plugins = [Object(_plugins_alignment__WEBPACK_IMPORTED_MODULE_29__[\"AlignmentPlugin\"])(), Object(_plugins_bold__WEBPACK_IMPORTED_MODULE_20__[\"BoldPlugin\"])(), Object(_plugins_divider__WEBPACK_IMPORTED_MODULE_30__[\"DividerPlugin\"])(), Object(_plugins_italic__WEBPACK_IMPORTED_MODULE_24__[\"ItalicPlugin\"])(), _plugins_list__WEBPACK_IMPORTED_MODULE_34__[\"ListPlugin\"], Object(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_25__[\"StrikethroughPlugin\"])(), _plugins_table__WEBPACK_IMPORTED_MODULE_35__[\"TablePlugin\"], Object(_plugins_underline__WEBPACK_IMPORTED_MODULE_28__[\"UnderlinePlugin\"])()];\n\n/**\n * Necessary renderMark function that receives the mark type then renders the HTML\n * In our case, we are returning custom components\n */\nvar renderMark = function renderMark(props, editor, next) {\n var mark = props.mark;\n\n switch (mark.type) {\n case \"bold\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_bold__WEBPACK_IMPORTED_MODULE_20__[\"BoldMark\"], props);\n\n case \"font-color\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_21__[\"FontColorMark\"], props);\n\n case \"font-family\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontfamily__WEBPACK_IMPORTED_MODULE_22__[\"FontFamilyMark\"], props);\n\n case \"font-size\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_fontsize__WEBPACK_IMPORTED_MODULE_23__[\"FontSizeMark\"], props);\n\n case \"italic\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_italic__WEBPACK_IMPORTED_MODULE_24__[\"ItalicMark\"], props);\n\n case \"strikethrough\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_25__[\"StrikethroughMark\"], props);\n\n case \"subscript\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_subscript__WEBPACK_IMPORTED_MODULE_26__[\"SubscriptMark\"], props);\n\n case \"superscript\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_superscript__WEBPACK_IMPORTED_MODULE_27__[\"SuperscriptMark\"], props);\n\n case \"underline\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_underline__WEBPACK_IMPORTED_MODULE_28__[\"UnderlineMark\"], props);\n\n default:\n return next();\n }\n};\n\n/**\n * Similar to renderMark above, except now we are working with nodes.\n */\nvar renderNode = function renderNode(props, editor, next) {\n var node = props.node;\n\n switch (node.type) {\n case \"alignment\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_29__[\"AlignmentNode\"], props);\n\n case \"divider\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_divider__WEBPACK_IMPORTED_MODULE_30__[\"DividerNode\"], props);\n\n case \"h1\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_31__[\"H1Node\"], props);\n\n case \"h2\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_31__[\"H2Node\"], props);\n\n case \"h3\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_31__[\"H3Node\"], props);\n\n case \"image\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_image__WEBPACK_IMPORTED_MODULE_15__[\"ImageNode\"], props);\n\n case \"line-spacing\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_linespacing__WEBPACK_IMPORTED_MODULE_32__[\"LineSpacingNode\"], props);\n\n case \"link\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_link__WEBPACK_IMPORTED_MODULE_33__[\"LinkNode\"], props);\n\n case \"list-item\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_34__[\"ListItemNode\"], props);\n\n case \"unordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_34__[\"UnorderedListNode\"], props);\n\n case \"ordered-list\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_34__[\"OrderedListNode\"], props);\n\n case \"table\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_35__[\"TableNode\"], props);\n\n case \"table-row\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_35__[\"TableRowNode\"], props);\n\n case \"table-cell\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_35__[\"TableCellNode\"], props);\n\n case \"video\":\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_plugins_video__WEBPACK_IMPORTED_MODULE_36__[\"VideoNode\"], props);\n\n default:\n return next();\n }\n};\n\n/**\n * This is a reusable Slate page editor component.\n */\nvar PageEditor =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_5__[\"default\"])(PageEditor, _Component);\n\n // necessary for Flow\n function PageEditor(props) {\n var _this;\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(this, PageEditor);\n\n _this = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(this, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(PageEditor).call(this, props));\n\n _this.onChange = function (_ref) {\n var value = _ref.value;\n\n _this.setState({\n value: value\n });\n };\n\n _this.onCancel = function () {\n var value = _this.state.value;\n var slug = _this.props.slug;\n\n _this.setState({\n value: value,\n readOnly: true\n });\n\n var _this$props = _this.props,\n cancelEditing = _this$props.cancelEditing,\n match = _this$props.match;\n\n if (slug) {\n cancelEditing(match.url.slice(0, -7));\n } else {\n cancelEditing(match.url.slice(0, -5));\n }\n };\n\n _this.onSave = function () {\n var value = _this.state.value;\n var _this$props2 = _this.props,\n page = _this$props2.page,\n saveEditing = _this$props2.saveEditing,\n match = _this$props2.match,\n userId = _this$props2.userId,\n slug = _this$props2.slug,\n url = _this$props2.url,\n addEditablePage = _this$props2.addEditablePage;\n var content = JSON.stringify(value.toJSON());\n\n if (slug) {\n var body = {\n data: {\n type: \"contents\",\n attributes: {\n name: slug,\n created_by: userId,\n content: content,\n namespace: \"dfp\"\n }\n }\n };\n addEditablePage(body, url);\n\n _this.setState(value);\n } else {\n var _body = {\n id: page.data.id,\n data: {\n id: page.data.id,\n type: \"contents\",\n attributes: {\n updated_by: userId,\n content: content\n }\n }\n };\n saveEditing(page.data.id, _body, match.url);\n\n _this.setState(value);\n }\n };\n\n _this.onPaste = function (e, editor, next) {\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(e);\n var type = transfer.type;\n\n switch (type) {\n case \"text\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_16__[\"onPasteText\"])(e, _this.editor.current, next);\n\n case \"html\":\n return Object(_utils_utils__WEBPACK_IMPORTED_MODULE_16__[\"onPasteHtml\"])(e, _this.editor.current, next);\n\n default:\n return next();\n }\n };\n\n _this.onDrop = function (event, change, editor) {\n var target = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventRange\"])(event, change.value);\n if (!target && event.type === \"drop\") return;\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"getEventTransfer\"])(event);\n var type = transfer.type,\n files = transfer.files;\n\n if (type === \"files\") {\n var _iteratorNormalCompletion = true;\n var _didIteratorError = false;\n var _iteratorError = undefined;\n\n try {\n var _loop = function _loop() {\n var file = _step.value;\n var reader = new FileReader();\n\n var _file$type$split = file.type.split(\"/\"),\n _file$type$split2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_file$type$split, 1),\n mime = _file$type$split2[0];\n\n if (mime !== \"image\") return \"continue\";\n reader.addEventListener(\"load\", function () {\n editor.change(function (c) {\n c.call(_plugins_image__WEBPACK_IMPORTED_MODULE_15__[\"insertImage\"], reader.result, target);\n });\n });\n reader.readAsDataURL(file);\n };\n\n for (var _iterator = files[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {\n var _ret = _loop();\n\n if (_ret === \"continue\") continue;\n }\n } catch (err) {\n _didIteratorError = true;\n _iteratorError = err;\n } finally {\n try {\n if (!_iteratorNormalCompletion && _iterator.return != null) {\n _iterator.return();\n }\n } finally {\n if (_didIteratorError) {\n throw _iteratorError;\n }\n }\n }\n }\n };\n\n if (props.page) {\n _this.state = {\n // Initial value of editor\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(JSON.parse(props.page.data.attributes.content)),\n readOnly: props.readOnly\n };\n } else if (props.slug) {\n _this.state = {\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(_data_newPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_19__),\n readOnly: props.readOnly\n };\n } else {\n _this.state = {\n // set default value for any page route refreshing\n value: slate__WEBPACK_IMPORTED_MODULE_9__[\"Value\"].fromJSON(_data_existingPagePlaceholder_json__WEBPACK_IMPORTED_MODULE_18__),\n readOnly: props.readOnly\n };\n }\n\n _this.editor = react__WEBPACK_IMPORTED_MODULE_6___default.a.createRef();\n return _this;\n }\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(PageEditor, [{\n key: \"render\",\n value: function render() {\n var _this$state = this.state,\n readOnly = _this$state.readOnly,\n value = _this$state.value;\n var _this$props3 = this.props,\n classes = _this$props3.classes,\n page = _this$props3.page;\n return react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(\"div\", null, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_toolbar_EditorToolbar__WEBPACK_IMPORTED_MODULE_13__[\"default\"], {\n editor: this.editor.current,\n value: value,\n onChange: this.onChange,\n page: page,\n onSave: this.onSave\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(slate_react__WEBPACK_IMPORTED_MODULE_8__[\"Editor\"], {\n className: classes.editor,\n value: value,\n onChange: this.onChange,\n onPaste: this.onPaste,\n onDrop: this.onDrop,\n renderMark: renderMark,\n renderNode: renderNode,\n readOnly: readOnly,\n plugins: plugins,\n schema: _schema_schema__WEBPACK_IMPORTED_MODULE_14__[\"default\"],\n ref: this.editor\n }), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n container: true,\n justify: \"flex-end\"\n }, react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.cancelButton,\n size: \"small\",\n variant: \"contained\",\n onClick: this.onCancel\n }, \"Cancel\")), react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_11___default.a, {\n item: true,\n xs: 2,\n className: classes.buttonGrid\n }, !readOnly && react__WEBPACK_IMPORTED_MODULE_6___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_12___default.a, {\n className: classes.saveButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\",\n onClick: this.onSave\n }, \"Save\"))));\n }\n }]);\n\n return PageEditor;\n}(react__WEBPACK_IMPORTED_MODULE_6__[\"Component\"]);\n\nvar mapStateToProps = function mapStateToProps(state) {\n if (state.auth.user) {\n return {\n userId: state.auth.user.data.id\n };\n }\n\n return {};\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_7__[\"connect\"])(mapStateToProps, {\n saveEditing: actions_editablePages__WEBPACK_IMPORTED_MODULE_17__[\"saveEditing\"],\n cancelEditing: actions_editablePages__WEBPACK_IMPORTED_MODULE_17__[\"cancelEditing\"],\n addEditablePage: actions_editablePages__WEBPACK_IMPORTED_MODULE_17__[\"addEditablePage\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_10__[\"withStyles\"])(styles)(PageEditor)));\n\n//# sourceURL=webpack:///./src/components/editor/PageEditor.js?"); /***/ }), @@ -852,15 +884,26 @@ eval("module.exports = {\"document\":{\"nodes\":[{\"object\":\"block\",\"type\": /***/ }), +/***/ "./src/components/editor/flow/types.js": +/*!*********************************************!*\ + !*** ./src/components/editor/flow/types.js ***! + \*********************************************/ +/*! no static exports found */ +/***/ (function(module, exports) { + +eval("\n\n//# sourceURL=webpack:///./src/components/editor/flow/types.js?"); + +/***/ }), + /***/ "./src/components/editor/plugins/alignment.js": /*!****************************************************!*\ !*** ./src/components/editor/plugins/alignment.js ***! \****************************************************/ -/*! exports provided: AlignmentPlugin, AlignmentNode, AlignmentLeftButton, AlignmentCenterButton, AlignmentRightButton */ +/*! exports provided: AlignmentPlugin, AlignmentNode, AlignmentLeftButton, AlignmentCenterButton, AlignmentRightButton, AlignmentJustifyButton */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentPlugin\", function() { return AlignmentPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentNode\", function() { return AlignmentNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentLeftButton\", function() { return AlignmentLeftButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentCenterButton\", function() { return AlignmentCenterButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentRightButton\", function() { return AlignmentRightButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatAlignLeft */ \"./node_modules/@material-ui/icons/FormatAlignLeft.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FormatAlignCenter */ \"./node_modules/@material-ui/icons/FormatAlignCenter.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/FormatAlignRight */ \"./node_modules/@material-ui/icons/FormatAlignRight.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n\n\n\n\n\n\n/**\n * Functions to set the alignment blocks.\n */\n\nvar alignmentMarkStrategy = function alignmentMarkStrategy(change, align) {\n return change.unwrapBlock(\"alignment\").wrapBlock({\n type: \"alignment\",\n data: {\n align: align\n }\n });\n};\n\nvar alignLeft = function alignLeft(change) {\n return alignmentMarkStrategy(change, \"left\");\n};\n\nvar alignCenter = function alignCenter(change) {\n return alignmentMarkStrategy(change, \"center\");\n};\n\nvar alignRight = function alignRight(change) {\n return alignmentMarkStrategy(change, \"right\");\n};\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\n\nvar AlignmentNode = function AlignmentNode(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n data = _ref.node.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", Object.assign({\n style: {\n textAlign: \"\".concat(data.get(\"align\"))\n }\n }, attributes), children);\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar AlignmentLeftButton = function AlignmentLeftButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + shift + l\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(alignmentMarkStrategy(value.change(), \"left\"));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n\nvar AlignmentCenterButton = function AlignmentCenterButton(_ref3) {\n var value = _ref3.value,\n onChange = _ref3.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + shift + c\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(alignmentMarkStrategy(value.change(), \"center\"));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n\nvar AlignmentRightButton = function AlignmentRightButton(_ref4) {\n var value = _ref4.value,\n onChange = _ref4.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + shift + r\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(alignmentMarkStrategy(value.change(), \"right\"));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_4___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for alignment.\n * It accepts event and change as arguments.\n */\n\n\nvar AlignmentKeyboardShortcut = function AlignmentKeyboardShortcut(event, change) {\n var keyLeft = event.key === \"l\";\n var leftFullKeyPress = event.metaKey && event.shiftKey && keyLeft;\n\n if (leftFullKeyPress) {\n event.preventDefault();\n return alignLeft(change);\n }\n\n var keyCenter = event.key === \"c\";\n var centerFullKeyPress = event.metaKey && event.shiftKey && keyCenter;\n\n if (centerFullKeyPress) {\n event.preventDefault();\n return alignCenter(change);\n }\n\n var keyRight = event.key === \"r\";\n var rightFullKeyPress = event.metaKey && event.shiftKey && keyRight;\n\n if (rightFullKeyPress) {\n event.preventDefault();\n return alignRight(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar AlignmentPlugin = function AlignmentPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return AlignmentKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/alignment.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentPlugin\", function() { return AlignmentPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentNode\", function() { return AlignmentNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentLeftButton\", function() { return AlignmentLeftButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentCenterButton\", function() { return AlignmentCenterButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentRightButton\", function() { return AlignmentRightButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"AlignmentJustifyButton\", function() { return AlignmentJustifyButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatAlignLeft */ \"./node_modules/@material-ui/icons/FormatAlignLeft.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FormatAlignCenter */ \"./node_modules/@material-ui/icons/FormatAlignCenter.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_FormatAlignJustify__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/FormatAlignJustify */ \"./node_modules/@material-ui/icons/FormatAlignJustify.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignJustify__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignJustify__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/FormatAlignRight */ \"./node_modules/@material-ui/icons/FormatAlignRight.js\");\n/* harmony import */ var _material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n/**\n * Functions to set the alignment blocks.\n */\n\nvar alignmentMarkStrategy = function alignmentMarkStrategy(editor, align) {\n return editor.unwrapBlock(\"alignment\").wrapBlock({\n type: \"alignment\",\n data: {\n align: align\n }\n });\n};\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\n\nvar AlignmentNode = function AlignmentNode(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n data = _ref.node.data;\n\n if (data.get(\"align\") === \"justify\") {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", Object.assign({\n style: {\n textAlign: \"justify\",\n whiteSpace: \"normal\"\n }\n }, attributes), children);\n } else {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", Object.assign({\n style: {\n textAlign: \"\".concat(data.get(\"align\")),\n whiteSpace: \"pre-wrap\"\n }\n }, attributes), children);\n }\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar AlignmentLeftButton = function AlignmentLeftButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Align Left\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: function onClick() {\n alignmentMarkStrategy(editor, \"left\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignLeft__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n\nvar AlignmentCenterButton = function AlignmentCenterButton(_ref3) {\n var editor = _ref3.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Center Text\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: function onClick() {\n alignmentMarkStrategy(editor, \"center\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignCenter__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n\nvar AlignmentRightButton = function AlignmentRightButton(_ref4) {\n var editor = _ref4.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Align Right\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: function onClick() {\n alignmentMarkStrategy(editor, \"right\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignRight__WEBPACK_IMPORTED_MODULE_5___default.a, null)));\n};\n\nvar AlignmentJustifyButton = function AlignmentJustifyButton(_ref5) {\n var editor = _ref5.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Justify\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n onClick: function onClick() {\n alignmentMarkStrategy(editor, \"justify\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatAlignJustify__WEBPACK_IMPORTED_MODULE_4___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for alignment.\n * It accepts event and change as arguments.\n */\n\n\nvar AlignmentKeyboardShortcut = function AlignmentKeyboardShortcut(event, editor, next) {\n var keyLeft = event.key === \"l\";\n var leftFullKeyPress = event.metaKey && event.shiftKey && keyLeft;\n\n if (leftFullKeyPress) {\n event.preventDefault();\n return alignmentMarkStrategy(editor, \"left\");\n }\n\n var keyCenter = event.key === \"c\";\n var centerFullKeyPress = event.metaKey && event.shiftKey && keyCenter;\n\n if (centerFullKeyPress) {\n event.preventDefault();\n return alignmentMarkStrategy(editor, \"center\");\n }\n\n var keyRight = event.key === \"r\";\n var rightFullKeyPress = event.metaKey && event.shiftKey && keyRight;\n\n if (rightFullKeyPress) {\n event.preventDefault();\n return alignmentMarkStrategy(editor, \"right\");\n }\n\n var keyJustify = event.key === \"j\";\n var justifyFullKeyPress = event.metaKey && event.shiftKey && keyJustify;\n\n if (justifyFullKeyPress) {\n event.preventDefault();\n return alignmentMarkStrategy(editor, \"justify\");\n }\n\n return next();\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar AlignmentPlugin = function AlignmentPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return AlignmentKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/alignment.js?"); /***/ }), @@ -872,7 +915,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldPlugin\", function() { return BoldPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldMark\", function() { return BoldMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldButton\", function() { return BoldButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatBold */ \"./node_modules/@material-ui/icons/FormatBold.js\");\n/* harmony import */ var _material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n/**\n * Function that toggles the mark type.\n */\n\nvar boldMarkStrategy = function boldMarkStrategy(change) {\n return change.toggleMark(\"bold\");\n};\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\n\nvar BoldMark = function BoldMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, children);\n};\n/**\n * Bold button that uses a click handler to connect the button to the editor.\n */\n\n\nvar BoldButton = function BoldButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"ctrl + b\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(boldMarkStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for bold.\n * It accepts event and change as arguments.\n */\n\n\nvar BoldKeyboardShortcut = function BoldKeyboardShortcut(event, change) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"b\") {\n return boldMarkStrategy(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar BoldPlugin = function BoldPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return BoldKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/bold.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldPlugin\", function() { return BoldPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldMark\", function() { return BoldMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"BoldButton\", function() { return BoldButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatBold */ \"./node_modules/@material-ui/icons/FormatBold.js\");\n/* harmony import */ var _material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\nvar BoldMark = function BoldMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, children);\n};\n/**\n * Bold button that uses a click handler to connect the button to the editor.\n */\n\n\nvar BoldButton = function BoldButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Bold\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.toggleMark(\"bold\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatBold__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for bold.\n * It accepts event and change as arguments.\n */\n\n\nvar BoldKeyboardShortcut = function BoldKeyboardShortcut(event, editor, next) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"b\") {\n return editor.toggleMark(\"bold\");\n }\n\n return next();\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar BoldPlugin = function BoldPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return BoldKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/bold.js?"); /***/ }), @@ -884,7 +927,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DividerNode\", function() { return DividerNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DividerButton\", function() { return DividerButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DividerPlugin\", function() { return DividerPlugin; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n/**\n * Functions to set the divider blocks.\n */\n\nvar dividerStrategy = function dividerStrategy(change) {\n return change.setBlocks({\n type: \"divider\",\n isVoid: true\n });\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar DividerNode = function DividerNode(_ref) {\n var attributes = _ref.attributes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"hr\", attributes);\n};\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\n\nvar DividerButton = function DividerButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + ]\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(dividerStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"HR\")));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for dividers.\n * It accepts event and change as arguments.\n */\n\n\nvar DividerKeyboardShortcut = function DividerKeyboardShortcut(event, change) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_3__[\"isMod\"])(event) && event.key === \"]\") return dividerStrategy(change);\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar DividerPlugin = function DividerPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return DividerKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/divider.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DividerNode\", function() { return DividerNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DividerButton\", function() { return DividerButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"DividerPlugin\", function() { return DividerPlugin; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Divider__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Divider */ \"./node_modules/@material-ui/core/Divider/index.js\");\n/* harmony import */ var _material_ui_core_Divider__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Divider__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\nvar DividerNode = function DividerNode(_ref) {\n var attributes = _ref.attributes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Divider__WEBPACK_IMPORTED_MODULE_2___default.a, attributes);\n};\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\n\nvar DividerButton = function DividerButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Divider\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.setBlocks({\n type: \"divider\"\n });\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"\\u2014\")));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for dividers.\n * It accepts event and change as arguments.\n */\n\n\nvar DividerKeyboardShortcut = function DividerKeyboardShortcut(event, editor, next) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"]\") return editor.setBlocks({\n type: \"divider\"\n });\n return next();\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar DividerPlugin = function DividerPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return DividerKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/divider.js?"); /***/ }), @@ -896,7 +939,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontColorMark\", function() { return FontColorMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontColorButton\", function() { return FontColorButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontColorPicker\", function() { return FontColorPicker; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-color */ \"./node_modules/react-color/lib/index.js\");\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_color__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/FormatColorText */ \"./node_modules/@material-ui/icons/FormatColorText.js\");\n/* harmony import */ var _material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var actions_editorToolbar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! actions/editorToolbar */ \"./src/actions/editorToolbar.js\");\n\n\n\n\n\n\n\n/**\n * Functions to set the font color marks.\n */\n\nvar hasMark = function hasMark(value) {\n return value.marks.some(function (mark) {\n return mark.type === \"font-color\";\n });\n};\n\nvar getMark = function getMark(value) {\n return value.marks.filter(function (mark) {\n return mark.type === \"font-color\";\n }).first();\n};\n\nvar createMark = function createMark(color) {\n return {\n type: \"font-color\",\n data: {\n color: color\n }\n };\n};\n\nvar reapplyMark = function reapplyMark(_ref) {\n var change = _ref.change,\n color = _ref.color;\n return change.removeMark(getMark(change.value)).addMark(createMark(color));\n};\n\nvar applyMark = function applyMark(_ref2) {\n var change = _ref2.change,\n color = _ref2.color;\n return change.addMark(createMark(color));\n};\n\nvar fontColorMarkStrategy = function fontColorMarkStrategy(value, color) {\n if (hasMark(value)) {\n if (value.isExpanded) {\n return reapplyMark({\n change: value.change(),\n color: color\n });\n }\n } else {\n if (value.isExpanded) {\n return applyMark({\n change: value.change(),\n color: color\n });\n }\n }\n\n return value.change();\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar FontColorMark = function FontColorMark(_ref3) {\n var children = _ref3.children,\n data = _ref3.mark.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n style: {\n color: data.get(\"color\")\n }\n }, children);\n};\n/**\n * Button component that uses a click handler to connect to the ColorPicker component.\n */\n\n\nvar FontColor = function FontColor(_ref4) {\n var showColorPicker = _ref4.showColorPicker,\n editorToolbar = _ref4.editorToolbar;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"font color picker\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: function onClick(e) {\n showColorPicker(!editorToolbar.showColorPicker);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_4___default.a, null)));\n};\n/**\n * The font color picker widget-style component\n */\n\n\nvar FontColorPicker = function FontColorPicker(_ref5) {\n var value = _ref5.value,\n onChange = _ref5.onChange;\n var color = \"#000\";\n\n if (hasMark(value)) {\n color = getMark(value).data.get(\"color\");\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_color__WEBPACK_IMPORTED_MODULE_2__[\"SketchPicker\"], {\n disableAlpha: true,\n color: color,\n onChangeComplete: function onChangeComplete(color, e) {\n onChange(fontColorMarkStrategy(value, color.hex));\n }\n });\n};\n\nvar FontColorButton = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(null, {\n showColorPicker: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_6__[\"showColorPicker\"]\n})(FontColor);\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/fontcolor.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontColorMark\", function() { return FontColorMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontColorButton\", function() { return FontColorButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontColorPicker\", function() { return FontColorPicker; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-color */ \"./node_modules/react-color/lib/index.js\");\n/* harmony import */ var react_color__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_color__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FormatColorText */ \"./node_modules/@material-ui/icons/FormatColorText.js\");\n/* harmony import */ var _material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n\n/**\n * Functions to set the font color marks.\n */\nvar hasMark = function hasMark(value) {\n return value.marks.some(function (mark) {\n return mark.type === \"font-color\";\n });\n};\n\nvar getMark = function getMark(value) {\n return value.marks.filter(function (mark) {\n return mark.type === \"font-color\";\n }).first();\n};\n\nvar createMark = function createMark(color) {\n return {\n type: \"font-color\",\n data: {\n color: color\n }\n };\n};\n\nvar reapplyMark = function reapplyMark(_ref) {\n var editor = _ref.editor,\n color = _ref.color;\n return editor.removeMark(getMark(editor.value)).addMark(createMark(color));\n};\n\nvar applyMark = function applyMark(_ref2) {\n var editor = _ref2.editor,\n color = _ref2.color;\n return editor.addMark(createMark(color));\n};\n\nvar fontColorMarkStrategy = function fontColorMarkStrategy(editor, color) {\n var value = editor.value;\n\n if (hasMark(value)) {\n if (value.selection.isExpanded) {\n return reapplyMark({\n editor: editor,\n color: color\n });\n }\n } else {\n if (value.selection.isExpanded) {\n return applyMark({\n editor: editor,\n color: color\n });\n }\n }\n\n return editor;\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar FontColorMark = function FontColorMark(_ref3) {\n var children = _ref3.children,\n data = _ref3.mark.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n style: {\n color: data.get(\"color\")\n }\n }, children);\n};\n/**\n * Button component that uses a click handler to connect to the ColorPicker component.\n */\n\n\nvar FontColorButton = function FontColorButton(_ref4) {\n var showColorPicker = _ref4.showColorPicker,\n setShowColorPicker = _ref4.setShowColorPicker;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Font Color\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n onClick: function onClick() {\n setShowColorPicker(!showColorPicker);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatColorText__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n/**\n * The font color picker widget-style component\n */\n\n\nvar FontColorPicker = function FontColorPicker(_ref5) {\n var value = _ref5.value,\n editor = _ref5.editor;\n var color = \"#000\";\n\n if (hasMark(value)) {\n color = getMark(value).data.get(\"color\");\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_color__WEBPACK_IMPORTED_MODULE_1__[\"SketchPicker\"], {\n disableAlpha: true,\n color: color,\n onChangeComplete: function onChangeComplete(color, e) {\n fontColorMarkStrategy(editor, color.hex);\n }\n });\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/fontcolor.js?"); /***/ }), @@ -908,7 +951,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontFamilyMark\", function() { return FontFamilyMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontFamilyDropdown\", function() { return FontFamilyDropdown; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/MenuItem */ \"./node_modules/@material-ui/core/MenuItem/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Select */ \"./node_modules/@material-ui/core/Select/index.js\");\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var actions_editorToolbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! actions/editorToolbar */ \"./src/actions/editorToolbar.js\");\n\n\n\n\n\n\n/**\n * List of fonts available\n */\n\nvar FontFamilyList = [{\n name: \"Roboto\",\n options: \"400,400i,700,700i\"\n}, {\n name: \"Roboto Condensed\",\n options: \"400,400i,700,700i\"\n}, {\n name: \"Roboto Mono\",\n options: \"400,400i,700,700i\"\n}, {\n name: \"Roboto Slab\",\n options: \"400,700\"\n}, {\n name: \"Lato\",\n options: \"400,700\"\n}, {\n name: \"Merriweather\",\n options: \"400,700\"\n}, {\n name: \"Montserrat\",\n options: \"400,700\"\n}];\n/**\n * Functions to set the font family marks.\n */\n\nvar hasMark = function hasMark(value) {\n return value.marks.some(function (mark) {\n return mark.type === \"font-family\";\n });\n};\n\nvar getMark = function getMark(value) {\n return value.marks.filter(function (mark) {\n return mark.type === \"font-family\";\n }).first();\n};\n\nvar createMark = function createMark(fontFamilyIndex) {\n return {\n type: \"font-family\",\n data: {\n fontFamilyIndex: fontFamilyIndex\n }\n };\n};\n\nvar reapplyMark = function reapplyMark(_ref) {\n var change = _ref.change,\n fontFamilyIndex = _ref.fontFamilyIndex;\n return change.removeMark(getMark(change.value)).addMark(createMark(fontFamilyIndex));\n};\n\nvar applyMark = function applyMark(_ref2) {\n var change = _ref2.change,\n fontFamilyIndex = _ref2.fontFamilyIndex;\n return change.addMark(createMark(fontFamilyIndex));\n};\n\nvar fontFamilyMarkStrategy = function fontFamilyMarkStrategy(attributes) {\n var value = attributes.value,\n fontFamilyIndex = attributes.fontFamilyIndex;\n\n if (hasMark(value)) {\n if (value.isExpanded) {\n return reapplyMark({\n change: value.change(),\n fontFamilyIndex: fontFamilyIndex\n });\n }\n } else {\n if (value.isExpanded) {\n return applyMark({\n change: value.change(),\n fontFamilyIndex: fontFamilyIndex\n });\n }\n }\n\n return value.change();\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar FontFamilyMark = function FontFamilyMark(_ref3) {\n var children = _ref3.children,\n data = _ref3.mark.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n style: {\n fontFamily: FontFamilyList[data.get(\"fontFamilyIndex\")].name\n }\n }, children);\n};\n/**\n * Dropdown component that connects to the editor.\n */\n\n\nvar Dropdown = function Dropdown(_ref4) {\n var value = _ref4.value,\n _onChange = _ref4.onChange,\n classes = _ref4.classes,\n editorToolbar = _ref4.editorToolbar,\n changeFontSelect = _ref4.changeFontSelect;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.fontFamilyDropdown\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default.a, {\n value: editorToolbar.currentFont // eslint-disable-next-line\n ,\n onChange: function onChange(_ref5) {\n var fontFamilyIndex = _ref5.target.value;\n changeFontSelect(fontFamilyIndex);\n\n _onChange(fontFamilyMarkStrategy({\n value: value,\n fontFamilyIndex: fontFamilyIndex\n }));\n }\n }, FontFamilyList.map(function (font, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default.a, {\n key: \"font-family-\".concat(index),\n value: index\n }, font.name);\n })));\n};\n\nvar FontFamilyDropdown = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(null, {\n changeFontSelect: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_5__[\"changeFontSelect\"]\n})(Dropdown);\n/**\n * Export everything needed for the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/fontfamily.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontFamilyMark\", function() { return FontFamilyMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontFamilyDropdown\", function() { return FontFamilyDropdown; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/MenuItem */ \"./node_modules/@material-ui/core/MenuItem/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Select */ \"./node_modules/@material-ui/core/Select/index.js\");\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * List of fonts available\n */\n\nvar FontFamilyList = [{\n name: \"Lato\",\n options: \"400,700\"\n}, {\n name: \"Merriweather\",\n options: \"400,700\"\n}, {\n name: \"Montserrat\",\n options: \"400,700\"\n}, {\n name: \"Roboto\",\n options: \"400,400i,700,700i\"\n}, {\n name: \"Roboto Condensed\",\n options: \"400,400i,700,700i\"\n}, {\n name: \"Roboto Mono\",\n options: \"400,400i,700,700i\"\n}, {\n name: \"Roboto Slab\",\n options: \"400,700\"\n}];\n/**\n * Functions to set the font family marks.\n */\n\nvar hasMark = function hasMark(value) {\n return value.marks.some(function (mark) {\n return mark.type === \"font-family\";\n });\n};\n\nvar getMark = function getMark(value) {\n return value.marks.filter(function (mark) {\n return mark.type === \"font-family\";\n }).first();\n};\n\nvar createMark = function createMark(fontFamilyIndex) {\n return {\n type: \"font-family\",\n data: {\n fontFamilyIndex: fontFamilyIndex\n }\n };\n};\n\nvar reapplyMark = function reapplyMark(_ref) {\n var editor = _ref.editor,\n fontFamilyIndex = _ref.fontFamilyIndex;\n return editor.removeMark(getMark(editor.value)).addMark(createMark(fontFamilyIndex));\n};\n\nvar applyMark = function applyMark(_ref2) {\n var editor = _ref2.editor,\n fontFamilyIndex = _ref2.fontFamilyIndex;\n return editor.addMark(createMark(fontFamilyIndex));\n};\n\nvar fontFamilyMarkStrategy = function fontFamilyMarkStrategy(editor, fontFamilyIndex) {\n var value = editor.value;\n\n if (hasMark(value)) {\n if (value.selection.isExpanded) {\n return reapplyMark({\n editor: editor,\n fontFamilyIndex: fontFamilyIndex\n });\n }\n } else {\n if (value.selection.isExpanded) {\n return applyMark({\n editor: editor,\n fontFamilyIndex: fontFamilyIndex\n });\n }\n }\n\n return editor;\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar FontFamilyMark = function FontFamilyMark(_ref3) {\n var children = _ref3.children,\n data = _ref3.mark.data;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", {\n style: {\n fontFamily: FontFamilyList[data.get(\"fontFamilyIndex\")].name\n }\n }, children);\n};\n/**\n * Dropdown component that connects to the editor.\n */\n\n\nvar FontFamilyDropdown = function FontFamilyDropdown(_ref4) {\n var editor = _ref4.editor,\n classes = _ref4.classes;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(3),\n _useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n currentFont = _useState2[0],\n setCurrentFont = _useState2[1];\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.fontFamilyDropdown\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default.a, {\n value: currentFont,\n onChange: function onChange(_ref5) {\n var fontFamilyIndex = _ref5.target.value;\n setCurrentFont(fontFamilyIndex);\n fontFamilyMarkStrategy(editor, fontFamilyIndex);\n }\n }, FontFamilyList.map(function (font, index) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default.a, {\n key: \"font-family-\".concat(index),\n value: index,\n style: {\n fontFamily: font.name\n }\n }, font.name);\n })));\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/fontfamily.js?"); /***/ }), @@ -920,7 +963,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontSizeMark\", function() { return FontSizeMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontSizeDropdown\", function() { return FontSizeDropdown; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/MenuItem */ \"./node_modules/@material-ui/core/MenuItem/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Select */ \"./node_modules/@material-ui/core/Select/index.js\");\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var actions_editorToolbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! actions/editorToolbar */ \"./src/actions/editorToolbar.js\");\n\n\n\n\n\n\n/**\n * List of font sizes\n */\n\nvar FontSizeList = [{\n size: \"12px\"\n}, {\n size: \"14px\"\n}, {\n size: \"16px\"\n}, {\n size: \"18px\"\n}, {\n size: \"20px\"\n}, {\n size: \"22px\"\n}, {\n size: \"26px\"\n}, {\n size: \"30px\"\n}];\n/**\n * Functions to set the font size blocks.\n */\n\nvar hasMark = function hasMark(value) {\n return value.marks.some(function (mark) {\n return mark.type === \"font-size\";\n });\n};\n\nvar getMark = function getMark(value) {\n return value.marks.filter(function (mark) {\n return mark.type === \"font-size\";\n }).first();\n};\n\nvar createMark = function createMark(fontSizeIndex) {\n return {\n type: \"font-size\",\n data: {\n fontSizeIndex: fontSizeIndex\n }\n };\n};\n\nvar reapplyMark = function reapplyMark(_ref) {\n var change = _ref.change,\n fontSizeIndex = _ref.fontSizeIndex;\n return change.removeMark(getMark(change.value)).addMark(createMark(fontSizeIndex));\n};\n\nvar applyMark = function applyMark(_ref2) {\n var change = _ref2.change,\n fontSizeIndex = _ref2.fontSizeIndex;\n return change.addMark(createMark(fontSizeIndex));\n};\n\nvar fontSizeMarkStrategy = function fontSizeMarkStrategy(attributes) {\n var value = attributes.value,\n fontSizeIndex = attributes.fontSizeIndex;\n\n if (hasMark(value)) {\n if (value.isExpanded) {\n return reapplyMark({\n change: value.change(),\n fontSizeIndex: fontSizeIndex\n });\n }\n } else {\n if (value.isExpanded) {\n return applyMark({\n change: value.change(),\n fontSizeIndex: fontSizeIndex\n });\n }\n }\n\n return value.change();\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar FontSizeMark = function FontSizeMark(_ref3) {\n var children = _ref3.children,\n data = _ref3.mark.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n style: {\n fontSize: FontSizeList[data.get(\"fontSizeIndex\")].size\n }\n }, children);\n};\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\n\nvar Dropdown = function Dropdown(_ref4) {\n var value = _ref4.value,\n _onChange = _ref4.onChange,\n classes = _ref4.classes,\n editorToolbar = _ref4.editorToolbar,\n changeFontSize = _ref4.changeFontSize;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.fontSizeDropdown\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default.a, {\n value: editorToolbar.currentFontSize // eslint-disable-next-line\n ,\n onChange: function onChange(_ref5) {\n var fontSizeIndex = _ref5.target.value;\n changeFontSize(fontSizeIndex);\n\n _onChange(fontSizeMarkStrategy({\n value: value,\n fontSizeIndex: fontSizeIndex\n }));\n }\n }, FontSizeList.map(function (font, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default.a, {\n key: \"font-size-\".concat(index),\n value: index\n }, font.size);\n })));\n};\n\nvar FontSizeDropdown = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(null, {\n changeFontSize: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_5__[\"changeFontSize\"]\n})(Dropdown);\n/**\n * Export everything needed for the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/fontsize.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontSizeMark\", function() { return FontSizeMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FontSizeDropdown\", function() { return FontSizeDropdown; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/MenuItem */ \"./node_modules/@material-ui/core/MenuItem/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/FormControl */ \"./node_modules/@material-ui/core/FormControl/index.js\");\n/* harmony import */ var _material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Select */ \"./node_modules/@material-ui/core/Select/index.js\");\n/* harmony import */ var _material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * List of font sizes\n */\n\nvar FontSizeList = [{\n size: \"12px\"\n}, {\n size: \"14px\"\n}, {\n size: \"16px\"\n}, {\n size: \"18px\"\n}, {\n size: \"20px\"\n}, {\n size: \"22px\"\n}, {\n size: \"26px\"\n}, {\n size: \"30px\"\n}];\n/**\n * Functions to set the font size blocks.\n */\n\nvar hasMark = function hasMark(value) {\n return value.marks.some(function (mark) {\n return mark.type === \"font-size\";\n });\n};\n\nvar getMark = function getMark(value) {\n return value.marks.filter(function (mark) {\n return mark.type === \"font-size\";\n }).first();\n};\n\nvar createMark = function createMark(fontSizeIndex) {\n return {\n type: \"font-size\",\n data: {\n fontSizeIndex: fontSizeIndex\n }\n };\n};\n\nvar reapplyMark = function reapplyMark(_ref) {\n var editor = _ref.editor,\n fontSizeIndex = _ref.fontSizeIndex;\n return editor.removeMark(getMark(editor.value)).addMark(createMark(fontSizeIndex));\n};\n\nvar applyMark = function applyMark(_ref2) {\n var editor = _ref2.editor,\n fontSizeIndex = _ref2.fontSizeIndex;\n return editor.addMark(createMark(fontSizeIndex));\n};\n\nvar fontSizeMarkStrategy = function fontSizeMarkStrategy(editor, fontSizeIndex) {\n var value = editor.value;\n\n if (hasMark(value)) {\n if (value.selection.isExpanded) {\n return reapplyMark({\n editor: editor,\n fontSizeIndex: fontSizeIndex\n });\n }\n } else {\n if (value.selection.isExpanded) {\n return applyMark({\n editor: editor,\n fontSizeIndex: fontSizeIndex\n });\n }\n }\n\n return editor;\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar FontSizeMark = function FontSizeMark(_ref3) {\n var children = _ref3.children,\n data = _ref3.mark.data;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"span\", {\n style: {\n fontSize: FontSizeList[data.get(\"fontSizeIndex\")].size\n }\n }, children);\n};\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\n\nvar FontSizeDropdown = function FontSizeDropdown(_ref4) {\n var editor = _ref4.editor,\n classes = _ref4.classes;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(2),\n _useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n currentFontSize = _useState2[0],\n setCurrentFontSize = _useState2[1];\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_FormControl__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.fontSizeDropdown\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Select__WEBPACK_IMPORTED_MODULE_4___default.a, {\n value: currentFontSize,\n onChange: function onChange(_ref5) {\n var fontSizeIndex = _ref5.target.value;\n setCurrentFontSize(fontSizeIndex);\n fontSizeMarkStrategy(editor, fontSizeIndex);\n }\n }, FontSizeList.map(function (font, index) {\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_2___default.a, {\n key: \"font-size-\".concat(index),\n value: index,\n style: {\n fontSize: font.size\n }\n }, font.size);\n })));\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/fontsize.js?"); /***/ }), @@ -928,11 +971,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!**************************************************!*\ !*** ./src/components/editor/plugins/heading.js ***! \**************************************************/ -/*! exports provided: H1Node, H2Node, H3Node, H1Button, H2Button, H3Button, HeadingPlugin */ +/*! exports provided: H1Node, H2Node, H3Node, H1Button, H2Button, H3Button */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H1Node\", function() { return H1Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H2Node\", function() { return H2Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H3Node\", function() { return H3Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H1Button\", function() { return H1Button; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H2Button\", function() { return H2Button; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H3Button\", function() { return H3Button; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"HeadingPlugin\", function() { return HeadingPlugin; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n\n\n\n/**\n * Functions to set the heading blocks.\n */\n\nvar headingStrategy = function headingStrategy(change, heading) {\n return change.setBlocks(heading);\n};\n\nvar headingH1 = function headingH1(change) {\n return headingStrategy(change, \"h1\");\n};\n\nvar headingH2 = function headingH2(change) {\n return headingStrategy(change, \"h2\");\n};\n\nvar headingH3 = function headingH3(change) {\n return headingStrategy(change, \"h3\");\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar H1Node = function H1Node(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", attributes, children);\n};\n\nvar H2Node = function H2Node(_ref2) {\n var attributes = _ref2.attributes,\n children = _ref2.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", attributes, children);\n};\n\nvar H3Node = function H3Node(_ref3) {\n var attributes = _ref3.attributes,\n children = _ref3.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", attributes, children);\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar H1Button = function H1Button(_ref4) {\n var value = _ref4.value,\n onChange = _ref4.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + shift + 1\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(headingH1(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"H1\")));\n};\n\nvar H2Button = function H2Button(_ref5) {\n var value = _ref5.value,\n onChange = _ref5.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + shift + 2\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(headingH2(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"H2\")));\n};\n\nvar H3Button = function H3Button(_ref6) {\n var value = _ref6.value,\n onChange = _ref6.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"

\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(headingH3(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"H3\")));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for headings.\n * It accepts event and change as arguments.\n */\n\n\nvar HeadingKeyboardShortcut = function HeadingKeyboardShortcut(event, change) {\n var h1Key = event.key === \"1\";\n var h1KeyPress = event.metaKey && event.shiftKey && h1Key;\n\n if (h1KeyPress) {\n event.preventDefault();\n return headingH1(change);\n }\n\n var h2Key = event.key === \"2\";\n var h2KeyPress = event.metaKey && event.shiftKey && h2Key;\n\n if (h2KeyPress) {\n event.preventDefault();\n return headingH2(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar HeadingPlugin = function HeadingPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return HeadingKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/heading.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H1Node\", function() { return H1Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H2Node\", function() { return H2Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H3Node\", function() { return H3Node; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H1Button\", function() { return H1Button; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H2Button\", function() { return H2Button; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"H3Button\", function() { return H3Button; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_3__);\n\n\n\n\n/**\n * Functions to set the heading blocks.\n */\n\nvar headingStrategy = function headingStrategy(editor, heading) {\n var value = editor.value;\n var isActive = hasBlock(value, heading);\n return editor.setBlocks(isActive ? \"paragraph\" : heading);\n};\n\nvar hasBlock = function hasBlock(value, type) {\n return value.blocks.some(function (node) {\n return node.type === type;\n });\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar H1Node = function H1Node(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", attributes, children);\n};\n\nvar H2Node = function H2Node(_ref2) {\n var attributes = _ref2.attributes,\n children = _ref2.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", attributes, children);\n};\n\nvar H3Node = function H3Node(_ref3) {\n var attributes = _ref3.attributes,\n children = _ref3.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", attributes, children);\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar H1Button = function H1Button(_ref4) {\n var editor = _ref4.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Heading 1\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: function onClick() {\n headingStrategy(editor, \"h1\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"H1\")));\n};\n\nvar H2Button = function H2Button(_ref5) {\n var editor = _ref5.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Heading 2\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: function onClick() {\n headingStrategy(editor, \"h2\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"H2\")));\n};\n\nvar H3Button = function H3Button(_ref6) {\n var editor = _ref6.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Heading 3\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onClick: function onClick() {\n headingStrategy(editor, \"h3\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, \"H3\")));\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/heading.js?"); /***/ }), @@ -940,11 +983,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!************************************************!*\ !*** ./src/components/editor/plugins/image.js ***! \************************************************/ -/*! exports provided: ImageNode, ImageButton, ImagePlugin, insertImage */ +/*! exports provided: ImageNode, ImageButton, insertImage */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageNode\", function() { return ImageNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageButton\", function() { return ImageButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImagePlugin\", function() { return ImagePlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertImage\", function() { return insertImage; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/Image */ \"./node_modules/@material-ui/icons/Image.js\");\n/* harmony import */ var _material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n\n\n\n\n/**\n * Functions to set the image blocks.\n */\n\nvar insertImage = function insertImage(change, src, target) {\n if (target) {\n change.select(target);\n }\n\n change.insertBlock({\n type: \"image\",\n isVoid: true,\n // makes this content a black box that Slate doesn't control editing for\n data: {\n src: src\n }\n });\n};\n\nvar insertImageStrategy = function insertImageStrategy(change) {\n var value = change.value;\n var src = window.prompt(\"Enter the URL of the image:\");\n if (!src) return;\n return value.change().call(insertImage, src);\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar ImageNode = function ImageNode(_ref) {\n var attributes = _ref.attributes,\n data = _ref.node.data;\n var src = data.get(\"src\");\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", Object.assign({\n src: src\n }, attributes, {\n alt: \"\"\n }));\n};\n/**\n * Button component that uses a click handler to connect to the editor.\n */\n\n\nvar ImageButton = function ImageButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"\\u2318 + shift + i\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n return onChange(insertImageStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for images.\n * It accepts event and change as arguments.\n */\n\n\nvar ImageKeyboardShortcut = function ImageKeyboardShortcut(event, change) {\n var key = event.key === \"i\";\n var macKey = event.metaKey && event.shiftKey && key;\n var winKey = event.altKey && event.shiftKey && key;\n var isLeft = macKey || winKey;\n\n if (isLeft) {\n event.preventDefault();\n return insertImageStrategy(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar ImagePlugin = function ImagePlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return ImageKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/image.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageNode\", function() { return ImageNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ImageButton\", function() { return ImageButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertImage\", function() { return insertImage; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/icons/Image */ \"./node_modules/@material-ui/icons/Image.js\");\n/* harmony import */ var _material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_12__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n btn: {\n backgroundColor: \"#15317e\"\n }\n };\n};\n\n/**\n * Functions to set the image blocks.\n */\nvar insertImage = function insertImage(editor, data) {\n editor.insertBlock({\n type: \"image\",\n data: {\n src: data.src,\n description: data.description,\n height: data.height,\n width: data.width\n }\n });\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar ImageNode = function ImageNode(_ref) {\n var attributes = _ref.attributes,\n isFocused = _ref.isFocused,\n data = _ref.node.data;\n var src = data.get(\"src\");\n var description = data.get(\"description\");\n var height = data.get(\"height\");\n var width = data.get(\"width\");\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"img\", Object.assign({\n src: src,\n height: height,\n width: width,\n alt: description,\n style: {\n boxShadow: \"\".concat(isFocused ? \"0 0 0 2px #15317e\" : \"none\")\n }\n }, attributes));\n};\n/**\n * Button component that uses a click handler to connect to the editor.\n */\n\n\nvar ImageButtonUnconnected = function ImageButtonUnconnected(_ref2) {\n var editor = _ref2.editor,\n classes = _ref2.classes;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false),\n _useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n imageModalOpen = _useState2[0],\n setImageModalOpen = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState4 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n url = _useState4[0],\n setURL = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState6 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState5, 2),\n description = _useState6[0],\n setDescription = _useState6[1];\n\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState8 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState7, 2),\n width = _useState8[0],\n setWidth = _useState8[1];\n\n var _useState9 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState10 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState9, 2),\n height = _useState10[0],\n setHeight = _useState10[1];\n\n var data = {\n src: url,\n description: description,\n width: width,\n height: height\n };\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"Image\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n onClick: function onClick() {\n setImageModalOpen(true);\n }\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_icons_Image__WEBPACK_IMPORTED_MODULE_10___default.a, null))), imageModalOpen && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default.a, {\n open: imageModalOpen,\n onClose: function onClose() {\n return setImageModalOpen(false);\n },\n \"aria-labelledby\": \"image-dialog-title\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default.a, {\n id: \"image-dialog-title\"\n }, \"Image Details\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n autoFocus: true,\n margin: \"dense\",\n id: \"url\",\n label: \"URL\",\n type: \"url\",\n onChange: function onChange(e) {\n return setURL(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"description\",\n label: \"Description (optional)\",\n type: \"description\",\n onChange: function onChange(e) {\n return setDescription(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"width\",\n label: \"Width (optional)\",\n type: \"width\",\n onChange: function onChange(e) {\n return setWidth(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"height\",\n label: \"Height (optional)\",\n type: \"height\",\n onChange: function onChange(e) {\n return setHeight(e.target.value);\n },\n fullWidth: true\n })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: function onClick() {\n setImageModalOpen(false);\n editor.command(insertImage, data);\n },\n className: classes.btn,\n variant: \"contained\",\n color: \"primary\"\n }, \"Add Image\"))));\n};\n\nvar ImageButton = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__[\"withStyles\"])(styles)(ImageButtonUnconnected);\n/**\n * Export everything needed for the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/image.js?"); /***/ }), @@ -956,7 +999,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicPlugin\", function() { return ItalicPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicMark\", function() { return ItalicMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicButton\", function() { return ItalicButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatItalic */ \"./node_modules/@material-ui/icons/FormatItalic.js\");\n/* harmony import */ var _material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n/**\n * Function that toggles the mark type.\n */\n\nvar italicMarkStrategy = function italicMarkStrategy(change) {\n return change.toggleMark(\"italic\");\n};\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\n\nvar ItalicMark = function ItalicMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"em\", null, children);\n};\n/**\n * Italic button that uses a click handler to connect the button to the editor.\n */\n\n\nvar ItalicButton = function ItalicButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"ctrl + i\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(italicMarkStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for italic.\n * It accepts event and change as arguments.\n */\n\n\nvar ItalicKeyboardShortcut = function ItalicKeyboardShortcut(event, change) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"i\") {\n return italicMarkStrategy(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar ItalicPlugin = function ItalicPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return ItalicKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/italic.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicPlugin\", function() { return ItalicPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicMark\", function() { return ItalicMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ItalicButton\", function() { return ItalicButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatItalic */ \"./node_modules/@material-ui/icons/FormatItalic.js\");\n/* harmony import */ var _material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\nvar ItalicMark = function ItalicMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"em\", null, children);\n};\n/**\n * Italic button that uses a click handler to connect the button to the editor.\n */\n\n\nvar ItalicButton = function ItalicButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Italic\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.toggleMark(\"italic\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatItalic__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for italic.\n * It accepts event and change as arguments.\n */\n\n\nvar ItalicKeyboardShortcut = function ItalicKeyboardShortcut(event, editor, next) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"i\") {\n return editor.toggleMark(\"italic\");\n }\n\n return next();\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar ItalicPlugin = function ItalicPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return ItalicKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/italic.js?"); + +/***/ }), + +/***/ "./src/components/editor/plugins/linespacing.js": +/*!******************************************************!*\ + !*** ./src/components/editor/plugins/linespacing.js ***! + \******************************************************/ +/*! exports provided: LineSpacingNode, LineSpacingButton */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LineSpacingNode\", function() { return LineSpacingNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LineSpacingButton\", function() { return LineSpacingButton; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Menu__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Menu */ \"./node_modules/@material-ui/core/Menu/index.js\");\n/* harmony import */ var _material_ui_core_Menu__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Menu__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/MenuItem */ \"./node_modules/@material-ui/core/MenuItem/index.js\");\n/* harmony import */ var _material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _material_ui_icons_FormatLineSpacing__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/FormatLineSpacing */ \"./node_modules/@material-ui/icons/FormatLineSpacing.js\");\n/* harmony import */ var _material_ui_icons_FormatLineSpacing__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatLineSpacing__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_7__);\n\n\n\n\n\n\n\n\n/**\n * Functions to set the line spacing blocks.\n */\n\nvar lineSpacingNodeStrategy = function lineSpacingNodeStrategy(editor, size) {\n return editor.unwrapBlock(\"line-spacing\").wrapBlock({\n type: \"line-spacing\",\n data: {\n size: size\n }\n });\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar LineSpacingNode = function LineSpacingNode(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n data = _ref.node.data;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", Object.assign({\n style: {\n lineHeight: \"\".concat(data.get(\"size\"))\n }\n }, attributes), children);\n};\n/**\n * Dropdown component that connects to the editor.\n */\n\n\nvar LineSpacingButton = function LineSpacingButton(_ref2) {\n var editor = _ref2.editor;\n\n var _React$useState = react__WEBPACK_IMPORTED_MODULE_1___default.a.useState(null),\n _React$useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_React$useState, 2),\n anchorEl = _React$useState2[0],\n setAnchorEl = _React$useState2[1];\n\n var handleMenuOpen = function handleMenuOpen(event) {\n setAnchorEl(event.currentTarget);\n };\n\n var handleItemClick = function handleItemClick(size) {\n setAnchorEl(null);\n lineSpacingNodeStrategy(editor, size);\n };\n\n var renderMenu = react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Menu__WEBPACK_IMPORTED_MODULE_3___default.a, {\n anchorEl: anchorEl,\n open: Boolean(anchorEl),\n onClose: function onClose() {\n return setAnchorEl(null);\n }\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.0\");\n }\n }, \"1.0\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.1\");\n }\n }, \"1.1\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.2\");\n }\n }, \"1.2\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.3\");\n }\n }, \"1.3\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.4\");\n }\n }, \"1.4\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.5\");\n }\n }, \"1.5\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"1.6\");\n }\n }, \"1.6 (default)\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"2.0\");\n }\n }, \"2.0\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"2.5\");\n }\n }, \"2.5\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_MenuItem__WEBPACK_IMPORTED_MODULE_4___default.a, {\n onClick: function onClick() {\n return handleItemClick(\"3.0\");\n }\n }, \"3.0\"));\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Line Spacing\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n onClick: handleMenuOpen,\n \"aria-owns\": anchorEl ? \"line-spacing-menu\" : undefined,\n \"aria-haspopup\": \"true\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_icons_FormatLineSpacing__WEBPACK_IMPORTED_MODULE_6___default.a, null))), renderMenu);\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/linespacing.js?"); /***/ }), @@ -964,11 +1019,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!***********************************************!*\ !*** ./src/components/editor/plugins/link.js ***! \***********************************************/ -/*! exports provided: LinkNode, LinkButton, LinkPlugin, insertLink */ +/*! exports provided: LinkNode, LinkButton, insertLink */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkNode\", function() { return LinkNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkButton\", function() { return LinkButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkPlugin\", function() { return LinkPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertLink\", function() { return insertLink; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/Link */ \"./node_modules/@material-ui/icons/Link.js\");\n/* harmony import */ var _material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n/**\n * Functions to set the link blocks.\n */\n\nvar wrapLink = function wrapLink(change, href) {\n change.wrapInline({\n type: \"link\",\n data: {\n href: href\n }\n });\n change.collapseToEnd();\n};\n\nvar insertLink = function insertLink(change, url) {\n if (change.value.isCollapsed) {\n change.insertText(url).extend(0 - url.length).wrapInline({\n type: \"link\",\n data: {\n url: url\n }\n }).collapseToEnd();\n } else {\n change.wrapInline({\n type: \"link\",\n data: {\n url: url\n }\n });\n change.collapseToEnd();\n }\n};\n\nvar hasLinks = function hasLinks(value) {\n return value.inlines.some(function (inline) {\n return inline.type === \"link\";\n });\n};\n\nvar insertLinkStrategy = function insertLinkStrategy(change) {\n var value = change.value;\n\n if (hasLinks(value)) {\n change.unwrapInline(\"link\");\n } else if (value.isExpanded) {\n var href = window.prompt(\"Enter the URL of the link:\");\n change.call(wrapLink, href);\n } else {\n var _href = window.prompt(\"Enter the URL of the link:\");\n\n var text = window.prompt(\"Enter the text for the link:\");\n\n if (!_href || !text) {\n return;\n } else {\n change.insertText(text).extend(0 - text.length).call(wrapLink, _href);\n }\n }\n\n return change;\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar LinkNode = function LinkNode(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children,\n data = _ref.node.data;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", Object.assign({\n href: data.get(\"href\")\n }, attributes), children);\n};\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\n\nvar LinkButton = function LinkButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"ctrl + k\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(insertLinkStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcuts to use for links.\n * It accepts event and change as arguments.\n */\n\n\nvar LinkKeyboardShortcut = function LinkKeyboardShortcut(event, change) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"k\") return insertLinkStrategy(change);\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar LinkPlugin = function LinkPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return LinkKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/link.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkNode\", function() { return LinkNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LinkButton\", function() { return LinkButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertLink\", function() { return insertLink; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/core/FormGroup */ \"./node_modules/@material-ui/core/FormGroup/index.js\");\n/* harmony import */ var _material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! @material-ui/core/FormControlLabel */ \"./node_modules/@material-ui/core/FormControlLabel/index.js\");\n/* harmony import */ var _material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! @material-ui/core/Checkbox */ \"./node_modules/@material-ui/core/Checkbox/index.js\");\n/* harmony import */ var _material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_12___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_12__);\n/* harmony import */ var _material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! @material-ui/icons/Link */ \"./node_modules/@material-ui/icons/Link.js\");\n/* harmony import */ var _material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_13__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_15___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_15__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n btn: {\n backgroundColor: \"#15317e\"\n }\n };\n};\n/**\n * Functions to set the link blocks.\n */\n\n\nvar wrapLink = function wrapLink(editor, url) {\n editor.wrapInline({\n type: \"link\",\n data: {\n href: url\n }\n }).moveToEnd();\n}; // used for pasting links on top of text\n\n\nvar insertLink = function insertLink(editor, url) {\n if (editor.value.selection.isCollapsed) {\n editor.insertText(url).moveFocusForward(0 - url.length).command(wrapLink, url).moveToEnd();\n } else {\n editor.command(wrapLink, url);\n }\n};\n\nvar insertLinkStrategy = function insertLinkStrategy(editor, data) {\n var value = editor.value;\n var url = data.url;\n var text = data.text; // if user left in \"mailto:\", remove it\n\n if (url.includes(\"mailto:\")) {\n url = url.replace(\"mailto:\", \"\");\n } // if the email box is checked, make it an email link\n\n\n if (data.emailChecked) {\n url = \"mailto:\".concat(url);\n }\n\n if (value.selection.isExpanded) {\n editor.unwrapInline(\"link\").insertText(text).moveFocusForward(0 - text.length).command(wrapLink, url);\n } else {\n if (!url || !text) {\n return;\n } else {\n editor.insertText(text).moveFocusForward(0 - text.length).command(wrapLink, url);\n }\n }\n\n return editor;\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar LinkNode = function LinkNode(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children,\n data = _ref.node.data;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"a\", Object.assign({\n href: data.get(\"href\")\n }, attributes), children);\n};\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\n\nvar LinkButtonUnconnected = function LinkButtonUnconnected(_ref2) {\n var classes = _ref2.classes,\n editor = _ref2.editor,\n value = _ref2.value;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false),\n _useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n linkModalOpen = _useState2[0],\n setLinkModalOpen = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState4 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n url = _useState4[0],\n setURL = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState6 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState5, 2),\n text = _useState6[0],\n setText = _useState6[1];\n\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false),\n _useState8 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState7, 2),\n emailChecked = _useState8[0],\n setEmailChecked = _useState8[1];\n\n var data = {\n url: url,\n text: text,\n emailChecked: emailChecked // if the user has highlighted some text for a link,\n // then use this logic\n\n };\n\n if (editor && editor.value.selection.isExpanded) {\n var existingURL = editor.value.inlines.find(function (el) {\n return el.data.get(\"href\");\n });\n var defaultURL;\n\n if (existingURL !== undefined) {\n defaultURL = existingURL.data.get(\"href\");\n } else {\n defaultURL = \"\";\n }\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"Link\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n onClick: function onClick() {\n setLinkModalOpen(true);\n setURL(defaultURL);\n setText(editor.value.fragment.text);\n }\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_13___default.a, null))), linkModalOpen && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default.a, {\n open: linkModalOpen,\n onClose: function onClose() {\n return setLinkModalOpen(false);\n },\n \"aria-labelledby\": \"link-dialog-title\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default.a, {\n id: \"link-dialog-title\"\n }, \"Link Details\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n autoFocus: true,\n margin: \"dense\",\n id: \"url\",\n label: emailChecked ? \"Email Address\" : \"URL\",\n type: \"url\",\n defaultValue: url,\n onChange: function onChange(e) {\n return setURL(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"text\",\n label: \"Text\",\n type: \"text\",\n defaultValue: text,\n onChange: function onChange(e) {\n return setText(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_10___default.a, {\n row: true\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_11___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_12___default.a, {\n checked: emailChecked,\n onChange: function onChange() {\n return setEmailChecked(!emailChecked);\n },\n value: \"email\"\n }),\n label: \"Is this an email link?\"\n }))), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: function onClick() {\n setLinkModalOpen(false);\n insertLinkStrategy(editor, data);\n },\n className: classes.btn,\n variant: \"contained\",\n color: \"primary\"\n }, \"Add Link\"))));\n } // otherwise, use an empty form\n\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"Link\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_14__[\"default\"], {\n onClick: function onClick(e) {\n setLinkModalOpen(true);\n }\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_icons_Link__WEBPACK_IMPORTED_MODULE_13___default.a, null))), linkModalOpen && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default.a, {\n open: linkModalOpen,\n onClose: function onClose() {\n return setLinkModalOpen(false);\n },\n \"aria-labelledby\": \"link-dialog-title\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default.a, {\n id: \"link-dialog-title\"\n }, \"Link Details\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n autoFocus: true,\n margin: \"dense\",\n id: \"url\",\n label: emailChecked ? \"Email Address\" : \"URL\",\n type: \"url\",\n onChange: function onChange(e) {\n return setURL(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"text\",\n label: \"Text\",\n type: \"text\",\n onChange: function onChange(e) {\n return setText(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_FormGroup__WEBPACK_IMPORTED_MODULE_10___default.a, {\n row: true\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_FormControlLabel__WEBPACK_IMPORTED_MODULE_11___default.a, {\n control: react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Checkbox__WEBPACK_IMPORTED_MODULE_12___default.a, {\n checked: emailChecked,\n onChange: function onChange() {\n return setEmailChecked(!emailChecked);\n },\n value: \"email\"\n }),\n label: \"Is this an email link?\"\n }))), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: function onClick() {\n setLinkModalOpen(false);\n insertLinkStrategy(editor, data);\n },\n className: classes.btn,\n variant: \"contained\",\n color: \"primary\"\n }, \"Add Link\"))));\n};\n\nvar LinkButton = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__[\"withStyles\"])(styles)(LinkButtonUnconnected);\n/**\n * Export everything needed for the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/link.js?"); /***/ }), @@ -976,11 +1031,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!***********************************************!*\ !*** ./src/components/editor/plugins/list.js ***! \***********************************************/ -/*! exports provided: ListPlugin, ListItemNode, OrderedListNode, UnorderedListNode, UnorderedListButton, OrderedListButton */ +/*! exports provided: ListPlugin, ListItemNode, OrderedListNode, UnorderedListNode, UnorderedListButton, OrderedListButton, ListDecreaseIndentButton, ListIncreaseIndentButton */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListPlugin\", function() { return ListPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListItemNode\", function() { return ListItemNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OrderedListNode\", function() { return OrderedListNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnorderedListNode\", function() { return UnorderedListNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnorderedListButton\", function() { return UnorderedListButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OrderedListButton\", function() { return OrderedListButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var slate_edit_list__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate-edit-list */ \"./node_modules/slate-edit-list/dist/index.js\");\n/* harmony import */ var slate_edit_list__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(slate_edit_list__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FormatListBulleted */ \"./node_modules/@material-ui/icons/FormatListBulleted.js\");\n/* harmony import */ var _material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/FormatListNumbered */ \"./node_modules/@material-ui/icons/FormatListNumbered.js\");\n/* harmony import */ var _material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n\n\n\n\n\n\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\nvar ListItemNode = function ListItemNode(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", attributes, children);\n};\n\nvar OrderedListNode = function OrderedListNode(_ref2) {\n var attributes = _ref2.attributes,\n children = _ref2.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ol\", attributes, children);\n};\n\nvar UnorderedListNode = function UnorderedListNode(_ref3) {\n var attributes = _ref3.attributes,\n children = _ref3.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", attributes, children);\n};\n/**\n * Click handler for button components\n * This checks if selection is in a list, then wraps/unwraps accordingly\n */\n\n\nvar handleClick = function handleClick(value, onChange, type) {\n if (ListPlugin.utils.isSelectionInList(value) && ListPlugin.utils.getCurrentList(value).type === type) {\n onChange(ListPlugin.changes.unwrapList(value.change()));\n }\n\n onChange(ListPlugin.changes.wrapInList(value.change(), type));\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar OrderedListButton = function OrderedListButton(_ref4) {\n var value = _ref4.value,\n onChange = _ref4.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"ordered list\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n return handleClick(value, onChange, \"ordered-list\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4___default.a, null)));\n};\n\nvar UnorderedListButton = function UnorderedListButton(_ref5) {\n var value = _ref5.value,\n onChange = _ref5.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"unordered list\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n return handleClick(value, onChange, \"unordered-list\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more in the future.\n */\n\n\nvar ListPlugin = slate_edit_list__WEBPACK_IMPORTED_MODULE_1___default()({\n types: [\"ordered-list\", \"unordered-list\"],\n typeItem: \"list-item\"\n});\n/**\n * Export the necessary assets for use with the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/list.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListPlugin\", function() { return ListPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListItemNode\", function() { return ListItemNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OrderedListNode\", function() { return OrderedListNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnorderedListNode\", function() { return UnorderedListNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnorderedListButton\", function() { return UnorderedListButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"OrderedListButton\", function() { return OrderedListButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListDecreaseIndentButton\", function() { return ListDecreaseIndentButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ListIncreaseIndentButton\", function() { return ListIncreaseIndentButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _convertkit_slate_lists__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @convertkit/slate-lists */ \"./node_modules/@convertkit/slate-lists/dist/index.esm.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/FormatListBulleted */ \"./node_modules/@material-ui/icons/FormatListBulleted.js\");\n/* harmony import */ var _material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/FormatListNumbered */ \"./node_modules/@material-ui/icons/FormatListNumbered.js\");\n/* harmony import */ var _material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_FormatIndentDecrease__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/FormatIndentDecrease */ \"./node_modules/@material-ui/icons/FormatIndentDecrease.js\");\n/* harmony import */ var _material_ui_icons_FormatIndentDecrease__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatIndentDecrease__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_FormatIndentIncrease__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/FormatIndentIncrease */ \"./node_modules/@material-ui/icons/FormatIndentIncrease.js\");\n/* harmony import */ var _material_ui_icons_FormatIndentIncrease__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatIndentIncrease__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n/**\n * Functions to help with list blocks.\n */\n\nvar toggleList = function toggleList(event, editor, type) {\n event.preventDefault();\n\n if (type === \"ordered-list\") {\n editor.toggleList({\n type: \"ordered-list\"\n }).moveToEnd().focus();\n } else {\n editor.toggleList().moveToEnd().focus();\n }\n};\n\nvar decreaseIndent = function decreaseIndent(event, editor) {\n event.preventDefault();\n editor.decreaseListItemDepth();\n};\n\nvar increaseIndent = function increaseIndent(event, editor) {\n event.preventDefault();\n editor.increaseListItemDepth();\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar ListItemNode = function ListItemNode(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"li\", attributes, children);\n};\n\nvar OrderedListNode = function OrderedListNode(_ref2) {\n var attributes = _ref2.attributes,\n children = _ref2.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ol\", attributes, children);\n};\n\nvar UnorderedListNode = function UnorderedListNode(_ref3) {\n var attributes = _ref3.attributes,\n children = _ref3.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"ul\", attributes, children);\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar OrderedListButton = function OrderedListButton(_ref4) {\n var editor = _ref4.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Ordered List\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: function onClick(event) {\n return toggleList(event, editor, \"ordered-list\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatListNumbered__WEBPACK_IMPORTED_MODULE_4___default.a, null)));\n};\n\nvar UnorderedListButton = function UnorderedListButton(_ref5) {\n var editor = _ref5.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Unordered List\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: function onClick(event) {\n return toggleList(event, editor, \"unordered-list\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatListBulleted__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n\nvar ListDecreaseIndentButton = function ListDecreaseIndentButton(_ref6) {\n var editor = _ref6.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Decrease List Indent\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: function onClick(event) {\n return decreaseIndent(event, editor);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatIndentDecrease__WEBPACK_IMPORTED_MODULE_5___default.a, null)));\n};\n\nvar ListIncreaseIndentButton = function ListIncreaseIndentButton(_ref7) {\n var editor = _ref7.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Increase List Indent\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: function onClick(event) {\n return increaseIndent(event, editor);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatIndentIncrease__WEBPACK_IMPORTED_MODULE_6___default.a, null)));\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more in the future.\n */\n\n\nvar ListPlugin = Object(_convertkit_slate_lists__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({\n blocks: {\n ordered_list: \"ordered-list\",\n unordered_list: \"unordered-list\",\n list_item: \"list-item\"\n },\n classNames: {\n ordered_list: \"ordered-list\",\n unordered_list: \"unordered-list\",\n list_item: \"list-item\"\n }\n});\n/**\n * Export the necessary assets for use with the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/list.js?"); /***/ }), @@ -992,7 +1047,31 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StrikethroughPlugin\", function() { return StrikethroughPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StrikethroughMark\", function() { return StrikethroughMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StrikethroughButton\", function() { return StrikethroughButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatStrikethrough */ \"./node_modules/@material-ui/icons/FormatStrikethrough.js\");\n/* harmony import */ var _material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n/**\n * Function that toggles the mark type.\n */\n\nvar strikethroughMarkStrategy = function strikethroughMarkStrategy(change) {\n return change.toggleMark(\"strikethrough\");\n};\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\n\nvar StrikethroughMark = function StrikethroughMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"del\", null, children);\n};\n/**\n * Strikethrough button that uses a click handler to connect the button to the editor.\n */\n\n\nvar StrikethroughButton = function StrikethroughButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"ctrl + s\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(strikethroughMarkStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for strikethrough.\n * It accepts event and change as arguments.\n */\n\n\nvar StrikethroughKeyboardShortcut = function StrikethroughKeyboardShortcut(event, change) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"s\") {\n return strikethroughMarkStrategy(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar StrikethroughPlugin = function StrikethroughPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return StrikethroughKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/strikethrough.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StrikethroughPlugin\", function() { return StrikethroughPlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StrikethroughMark\", function() { return StrikethroughMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StrikethroughButton\", function() { return StrikethroughButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatStrikethrough */ \"./node_modules/@material-ui/icons/FormatStrikethrough.js\");\n/* harmony import */ var _material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\nvar StrikethroughMark = function StrikethroughMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"del\", null, children);\n};\n/**\n * Strikethrough button that uses a click handler to connect the button to the editor.\n */\n\n\nvar StrikethroughButton = function StrikethroughButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Strikethrough\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.toggleMark(\"strikethrough\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatStrikethrough__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for strikethrough.\n * It accepts event and change as arguments.\n */\n\n\nvar StrikethroughKeyboardShortcut = function StrikethroughKeyboardShortcut(event, editor, next) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"s\") {\n return editor.toggleMark(\"strikethrough\");\n }\n\n return next();\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar StrikethroughPlugin = function StrikethroughPlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return StrikethroughKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/strikethrough.js?"); + +/***/ }), + +/***/ "./src/components/editor/plugins/subscript.js": +/*!****************************************************!*\ + !*** ./src/components/editor/plugins/subscript.js ***! + \****************************************************/ +/*! exports provided: SubscriptMark, SubscriptButton */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubscriptMark\", function() { return SubscriptMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SubscriptButton\", function() { return SubscriptButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\nvar SubscriptMark = function SubscriptMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"sub\", null, children);\n};\n/**\n * Subscript button that uses a click handler to connect the button to the editor.\n */\n\n\nvar SubscriptButton = function SubscriptButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Subscript\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.toggleMark(\"subscript\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default.a, {\n name: \"subscript\"\n })));\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/subscript.js?"); + +/***/ }), + +/***/ "./src/components/editor/plugins/superscript.js": +/*!******************************************************!*\ + !*** ./src/components/editor/plugins/superscript.js ***! + \******************************************************/ +/*! exports provided: SuperscriptMark, SuperscriptButton */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SuperscriptMark\", function() { return SuperscriptMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SuperscriptButton\", function() { return SuperscriptButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_4__);\n\n\n\n\n\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\nvar SuperscriptMark = function SuperscriptMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"sup\", null, children);\n};\n/**\n * Superscript button that uses a click handler to connect the button to the editor.\n */\n\n\nvar SuperscriptButton = function SuperscriptButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Superscript\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.toggleMark(\"superscript\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default.a, {\n name: \"superscript\"\n })));\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/superscript.js?"); /***/ }), @@ -1004,7 +1083,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableNode\", function() { return TableNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableRowNode\", function() { return TableRowNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableCellNode\", function() { return TableCellNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertInitialTableButton\", function() { return InsertInitialTableButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertTableButton\", function() { return InsertTableButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertTableColumnButton\", function() { return InsertTableColumnButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertTableRowButton\", function() { return InsertTableRowButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveTableColumnButton\", function() { return RemoveTableColumnButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveTableRowButton\", function() { return RemoveTableRowButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveTableButton\", function() { return RemoveTableButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TablePlugin\", function() { return TablePlugin; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var slate_edit_table__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! slate-edit-table */ \"./node_modules/slate-edit-table/dist/index.js\");\n/* harmony import */ var slate_edit_table__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(slate_edit_table__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/BorderAll */ \"./node_modules/@material-ui/icons/BorderAll.js\");\n/* harmony import */ var _material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/Add */ \"./node_modules/@material-ui/icons/Add.js\");\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/Remove */ \"./node_modules/@material-ui/icons/Remove.js\");\n/* harmony import */ var _material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/icons/Delete */ \"./node_modules/@material-ui/icons/Delete.js\");\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var actions_editorToolbar__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! actions/editorToolbar */ \"./src/actions/editorToolbar.js\");\n\n\n\n\n\n\n\n\n\n\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\nvar TableNode = function TableNode(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"table\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tbody\", attributes, children));\n};\n\nvar TableRowNode = function TableRowNode(_ref2) {\n var attributes = _ref2.attributes,\n children = _ref2.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tr\", attributes, children);\n};\n\nvar TableCellNode = function TableCellNode(_ref3) {\n var attributes = _ref3.attributes,\n children = _ref3.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", attributes, children);\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar InsertInitialTable = function InsertInitialTable(_ref4) {\n var value = _ref4.value,\n onChange = _ref4.onChange,\n editorToolbar = _ref4.editorToolbar,\n showTableOptions = _ref4.showTableOptions;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"toggle table options\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n onClick: function onClick(e) {\n showTableOptions(!editorToolbar.showTableOptions);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_4___default.a, null)));\n};\n\nvar InsertInitialTableButton = Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(null, {\n showTableOptions: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_9__[\"showTableOptions\"]\n})(InsertInitialTable);\n\nvar InsertTableButton = function InsertTableButton(_ref5) {\n var value = _ref5.value,\n onChange = _ref5.onChange,\n classes = _ref5.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"insert table\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: classes.button,\n onClick: function onClick(e) {\n onChange(TablePlugin.changes.insertTable(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_5___default.a, null), \" Add Table\"));\n};\n\nvar InsertTableColumnButton = function InsertTableColumnButton(_ref6) {\n var value = _ref6.value,\n onChange = _ref6.onChange,\n classes = _ref6.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"insert table column\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: classes.button,\n onClick: function onClick(e) {\n onChange(TablePlugin.changes.insertColumn(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_5___default.a, null), \" \\xA0Add Column\"));\n};\n\nvar InsertTableRowButton = function InsertTableRowButton(_ref7) {\n var value = _ref7.value,\n onChange = _ref7.onChange,\n classes = _ref7.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"insert table row\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: classes.button,\n onClick: function onClick(e) {\n onChange(TablePlugin.changes.insertRow(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_5___default.a, null), \" \\xA0Add Row\"));\n};\n\nvar RemoveTableColumnButton = function RemoveTableColumnButton(_ref8) {\n var value = _ref8.value,\n onChange = _ref8.onChange,\n classes = _ref8.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"remove table column\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: classes.button,\n onClick: function onClick(e) {\n onChange(TablePlugin.changes.removeColumn(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_6___default.a, null), \" \\xA0Remove Column\"));\n};\n\nvar RemoveTableRowButton = function RemoveTableRowButton(_ref9) {\n var value = _ref9.value,\n onChange = _ref9.onChange,\n classes = _ref9.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"remove table row\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: classes.button,\n onClick: function onClick(e) {\n onChange(TablePlugin.changes.removeRow(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_6___default.a, null), \" \\xA0Remove Row\"));\n};\n\nvar RemoveTableButton = function RemoveTableButton(_ref10) {\n var value = _ref10.value,\n onChange = _ref10.onChange,\n classes = _ref10.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"remove table\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n className: classes.button,\n onClick: function onClick(e) {\n onChange(TablePlugin.changes.removeTable(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_7___default.a, null), \" \\xA0Remove Table\"));\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more in the future.\n */\n\n\nvar TablePlugin = slate_edit_table__WEBPACK_IMPORTED_MODULE_2___default()({\n typeTable: \"table\",\n typeRow: \"table-row\",\n typeCell: \"table-cell\"\n});\n/**\n * Export the necessary assets for use with the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/table.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableNode\", function() { return TableNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableRowNode\", function() { return TableRowNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TableCellNode\", function() { return TableCellNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertInitialTableButton\", function() { return InsertInitialTableButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertTableButton\", function() { return InsertTableButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertTableColumnButton\", function() { return InsertTableColumnButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InsertTableRowButton\", function() { return InsertTableRowButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveTableColumnButton\", function() { return RemoveTableColumnButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveTableRowButton\", function() { return RemoveTableRowButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"RemoveTableButton\", function() { return RemoveTableButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TablePlugin\", function() { return TablePlugin; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var slate_deep_table__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate-deep-table */ \"./node_modules/slate-deep-table/dist/index.js\");\n/* harmony import */ var slate_deep_table__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(slate_deep_table__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/BorderAll */ \"./node_modules/@material-ui/icons/BorderAll.js\");\n/* harmony import */ var _material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/icons/Add */ \"./node_modules/@material-ui/icons/Add.js\");\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/icons/Remove */ \"./node_modules/@material-ui/icons/Remove.js\");\n/* harmony import */ var _material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/Delete */ \"./node_modules/@material-ui/icons/Delete.js\");\n/* harmony import */ var _material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\nvar TableNode = function TableNode(_ref) {\n var attributes = _ref.attributes,\n children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"table\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tbody\", attributes, children));\n};\n\nvar TableRowNode = function TableRowNode(_ref2) {\n var attributes = _ref2.attributes,\n children = _ref2.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"tr\", attributes, children);\n};\n\nvar TableCellNode = function TableCellNode(_ref3) {\n var attributes = _ref3.attributes,\n children = _ref3.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"td\", attributes, children);\n};\n/**\n * Button components that use click handlers to connect the buttons to the editor.\n */\n\n\nvar InsertInitialTableButton = function InsertInitialTableButton(_ref4) {\n var showTableOptions = _ref4.showTableOptions,\n setShowTableOptions = _ref4.setShowTableOptions;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Table\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n onClick: function onClick() {\n setShowTableOptions(!showTableOptions);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_BorderAll__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n\nvar InsertTableButton = function InsertTableButton(_ref5) {\n var editor = _ref5.editor,\n classes = _ref5.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Insert Table\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: classes.button,\n onClick: function onClick() {\n editor.insertTable();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_4___default.a, null), \" Add Table\"));\n};\n\nvar InsertTableColumnButton = function InsertTableColumnButton(_ref6) {\n var editor = _ref6.editor,\n classes = _ref6.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Insert Column\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: classes.button,\n onClick: function onClick() {\n editor.insertColumn();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_4___default.a, null), \" \\xA0Add Column\"));\n};\n\nvar InsertTableRowButton = function InsertTableRowButton(_ref7) {\n var editor = _ref7.editor,\n classes = _ref7.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Insert Row\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: classes.button,\n onClick: function onClick() {\n editor.insertRow();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_4___default.a, null), \" \\xA0Add Row\"));\n};\n\nvar RemoveTableColumnButton = function RemoveTableColumnButton(_ref8) {\n var editor = _ref8.editor,\n classes = _ref8.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Remove Column\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: classes.button,\n onClick: function onClick() {\n editor.removeColumn();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_5___default.a, null), \" \\xA0Remove Column\"));\n};\n\nvar RemoveTableRowButton = function RemoveTableRowButton(_ref9) {\n var editor = _ref9.editor,\n classes = _ref9.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Remove Row\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: classes.button,\n onClick: function onClick() {\n editor.removeRow();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Remove__WEBPACK_IMPORTED_MODULE_5___default.a, null), \" \\xA0Remove Row\"));\n};\n\nvar RemoveTableButton = function RemoveTableButton(_ref10) {\n var editor = _ref10.editor,\n classes = _ref10.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"Remove Table\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n className: classes.button,\n onClick: function onClick() {\n editor.removeTable();\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Delete__WEBPACK_IMPORTED_MODULE_6___default.a, null), \" \\xA0Remove Table\"));\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more in the future.\n */\n\n\nvar TablePlugin = slate_deep_table__WEBPACK_IMPORTED_MODULE_1___default()({\n typeTable: \"table\",\n typeRow: \"table-row\",\n typeCell: \"table-cell\"\n});\n/**\n * Export the necessary assets for use with the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/table.js?"); /***/ }), @@ -1016,7 +1095,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlinePlugin\", function() { return UnderlinePlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlineMark\", function() { return UnderlineMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlineButton\", function() { return UnderlineButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatUnderlined */ \"./node_modules/@material-ui/icons/FormatUnderlined.js\");\n/* harmony import */ var _material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n/**\n * Function that toggles the mark type.\n */\n\nvar underlineMarkStrategy = function underlineMarkStrategy(change) {\n return change.toggleMark(\"underline\");\n};\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\n\nvar UnderlineMark = function UnderlineMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"u\", null, children);\n};\n/**\n * Underline button that uses a click handler to connect the button to the editor.\n */\n\n\nvar UnderlineButton = function UnderlineButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"ctrl + u\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(underlineMarkStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for underline.\n * It accepts event and change as arguments.\n */\n\n\nvar UnderlineKeyboardShortcut = function UnderlineKeyboardShortcut(event, change) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"u\") {\n return underlineMarkStrategy(change);\n }\n\n return;\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar UnderlinePlugin = function UnderlinePlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return UnderlineKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/underline.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlinePlugin\", function() { return UnderlinePlugin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlineMark\", function() { return UnderlineMark; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"UnderlineButton\", function() { return UnderlineButton; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/icons/FormatUnderlined */ \"./node_modules/@material-ui/icons/FormatUnderlined.js\");\n/* harmony import */ var _material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_5__);\n\n\n\n\n\n\n/**\n * Rendering component that provides the actual HTML to use inside the editor.\n */\n\nvar UnderlineMark = function UnderlineMark(_ref) {\n var children = _ref.children;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"u\", null, children);\n};\n/**\n * Underline button that uses a click handler to connect the button to the editor.\n */\n\n\nvar UnderlineButton = function UnderlineButton(_ref2) {\n var editor = _ref2.editor;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_1___default.a, {\n title: \"Underline\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n onClick: function onClick() {\n editor.toggleMark(\"underline\");\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_FormatUnderlined__WEBPACK_IMPORTED_MODULE_2___default.a, null)));\n};\n/**\n * Function that specifies the keyboard shortcut to use for underline.\n * It accepts event and change as arguments.\n */\n\n\nvar UnderlineKeyboardShortcut = function UnderlineKeyboardShortcut(event, editor, next) {\n if (Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isMod\"])(event) && event.key === \"u\") {\n return editor.toggleMark(\"underline\");\n }\n\n return next();\n};\n/**\n * Function that represents our actual plugin.\n * It takes options in case we want to add more to it in the future.\n */\n\n\nvar UnderlinePlugin = function UnderlinePlugin(options) {\n return {\n onKeyDown: function onKeyDown() {\n return UnderlineKeyboardShortcut.apply(void 0, arguments);\n }\n };\n};\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/underline.js?"); /***/ }), @@ -1028,7 +1107,19 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoNode\", function() { return VideoNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoButton\", function() { return VideoButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertVideo\", function() { return insertVideo; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/icons/Videocam */ \"./node_modules/@material-ui/icons/Videocam.js\");\n/* harmony import */ var _material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var get_video_id__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! get-video-id */ \"./node_modules/get-video-id/index.js\");\n/* harmony import */ var get_video_id__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(get_video_id__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n\n\n\n\n\n\n/**\n * Material-UI styling\n */\n\nvar styles = function styles(theme) {\n return {\n wrapper: {\n position: \"relative\",\n paddingBottom: \"50.66%\",\n paddingTop: \"25px\",\n height: \"0\",\n outline: \"2px solid #0017ff\"\n },\n iframe: {\n position: \"absolute\",\n top: \"0px\",\n left: \"0px\",\n width: \"100%\",\n height: \"100%\"\n }\n };\n};\n/**\n * Functions to set the video blocks.\n */\n\n\nvar insertVideo = function insertVideo(change, url) {\n var videoId = get_video_id__WEBPACK_IMPORTED_MODULE_4___default()(url).id;\n var src;\n\n if (url.match(/youtube\\.com/)) {\n src = \"https://www.youtube.com/embed/\".concat(videoId);\n } else if (url.match(/vimeo\\.com/)) {\n src = \"https://player.vimeo.com/video/\".concat(videoId);\n } else {\n alert(\"Can only accept YouTube or Vimeo URL.\");\n return;\n }\n\n change.insertBlock({\n type: \"video\",\n isVoid: true,\n data: {\n src: src,\n url: url\n }\n });\n};\n\nvar insertVideoStrategy = function insertVideoStrategy(change) {\n var value = change.value;\n var src = window.prompt(\"Enter the URL of the video (YouTube or Vimeo).\");\n if (!src) return;\n return value.change().call(insertVideo, src);\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar Video = function Video(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n data = _ref.node.data,\n classes = _ref.classes;\n var src = data.get(\"src\");\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", Object.assign({}, attributes, {\n className: classes.wrapper\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"iframe\", {\n title: \"video-embed\",\n id: \"ytplayer\",\n type: \"text/html\",\n width: \"580\",\n height: \"390\",\n src: src,\n frameBorder: \"0\",\n className: classes.iframe\n }));\n};\n\nvar VideoNode = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_1__[\"withStyles\"])(styles)(Video);\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\nvar VideoButton = function VideoButton(_ref2) {\n var value = _ref2.value,\n onChange = _ref2.onChange;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_2___default.a, {\n title: \"video\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_5__[\"default\"] // eslint-disable-next-line\n , {\n onClick: function onClick(e) {\n onChange(insertVideoStrategy(value.change()));\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_3___default.a, null)));\n};\n/**\n * Export everything needed for the editor.\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/video.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoNode\", function() { return VideoNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"VideoButton\", function() { return VideoButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"insertVideo\", function() { return insertVideo; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/TextField */ \"./node_modules/@material-ui/core/TextField/index.js\");\n/* harmony import */ var _material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Dialog */ \"./node_modules/@material-ui/core/Dialog/index.js\");\n/* harmony import */ var _material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/DialogActions */ \"./node_modules/@material-ui/core/DialogActions/index.js\");\n/* harmony import */ var _material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/DialogContent */ \"./node_modules/@material-ui/core/DialogContent/index.js\");\n/* harmony import */ var _material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/DialogTitle */ \"./node_modules/@material-ui/core/DialogTitle/index.js\");\n/* harmony import */ var _material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var _material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! @material-ui/icons/Videocam */ \"./node_modules/@material-ui/icons/Videocam.js\");\n/* harmony import */ var _material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var get_video_id__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! get-video-id */ \"./node_modules/get-video-id/index.js\");\n/* harmony import */ var get_video_id__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(get_video_id__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var _toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../flow/types */ \"./src/components/editor/flow/types.js\");\n/* harmony import */ var _flow_types__WEBPACK_IMPORTED_MODULE_13___default = /*#__PURE__*/__webpack_require__.n(_flow_types__WEBPACK_IMPORTED_MODULE_13__);\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n/**\n * Material-UI styling\n */\n\nvar styles = function styles(theme) {\n return {\n wrapper: {\n position: \"relative\",\n paddingBottom: \"50.66%\",\n height: \"0\"\n },\n iframe: {\n position: \"absolute\",\n top: \"0px\",\n left: \"0px\"\n },\n btn: {\n backgroundColor: \"#15317e\"\n }\n };\n};\n\n/**\n * Functions to set the video blocks.\n */\nvar insertVideo = function insertVideo(editor, data) {\n var url = data.url;\n var videoId = get_video_id__WEBPACK_IMPORTED_MODULE_11___default()(url).id;\n var src;\n\n if (url.match(/youtube\\.com/)) {\n src = \"https://www.youtube.com/embed/\".concat(videoId);\n } else if (url.match(/vimeo\\.com/)) {\n src = \"https://player.vimeo.com/video/\".concat(videoId);\n } else {\n alert(\"Can only accept YouTube or Vimeo URL.\");\n return;\n }\n\n editor.insertBlock({\n type: \"video\",\n data: {\n src: src,\n height: data.height,\n width: data.width\n }\n }).insertBlock(\"\\n\");\n};\n/**\n * Rendering components that provide the actual HTML to use inside the editor.\n */\n\n\nvar Video = function Video(_ref) {\n var children = _ref.children,\n attributes = _ref.attributes,\n data = _ref.node.data,\n classes = _ref.classes;\n var src = data.get(\"src\");\n var height = data.get(\"height\");\n var width = data.get(\"width\");\n\n if (height === \"\") {\n height = \"100%\";\n }\n\n if (width === \"\") {\n width = \"100%\";\n }\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", Object.assign({}, attributes, {\n className: classes.wrapper\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"iframe\", {\n title: \"video-embed\",\n id: \"ytplayer\",\n type: \"text/html\",\n width: width,\n height: height,\n src: src,\n frameBorder: \"0\",\n allowFullScreen: true,\n className: classes.iframe\n }));\n};\n\nvar VideoNode = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__[\"withStyles\"])(styles)(Video);\n/**\n * Button components that use click handlers to connect to the editor.\n */\n\nvar VideoButtonUnconnected = function VideoButtonUnconnected(_ref2) {\n var editor = _ref2.editor,\n classes = _ref2.classes;\n\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(false),\n _useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState, 2),\n videoModalOpen = _useState2[0],\n setVideoModalOpen = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState4 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState3, 2),\n url = _useState4[0],\n setURL = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState6 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState5, 2),\n width = _useState6[0],\n setWidth = _useState6[1];\n\n var _useState7 = Object(react__WEBPACK_IMPORTED_MODULE_1__[\"useState\"])(\"\"),\n _useState8 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_useState7, 2),\n height = _useState8[0],\n setHeight = _useState8[1];\n\n var data = {\n url: url,\n width: width,\n height: height\n };\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_1___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_3___default.a, {\n title: \"Video\",\n placement: \"bottom\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_12__[\"default\"], {\n onClick: function onClick() {\n setVideoModalOpen(true);\n }\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_icons_Videocam__WEBPACK_IMPORTED_MODULE_10___default.a, null))), videoModalOpen && react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Dialog__WEBPACK_IMPORTED_MODULE_6___default.a, {\n open: videoModalOpen,\n onClose: function onClose() {\n return setVideoModalOpen(false);\n },\n \"aria-labelledby\": \"add-video-title\"\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogTitle__WEBPACK_IMPORTED_MODULE_9___default.a, {\n id: \"add-video-title\"\n }, \"Video Details\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogContent__WEBPACK_IMPORTED_MODULE_8___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n autoFocus: true,\n margin: \"dense\",\n id: \"url\",\n label: \"URL (YouTube or Vimeo)\",\n type: \"url\",\n onChange: function onChange(e) {\n return setURL(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"width\",\n label: \"Width (optional)\",\n type: \"width\",\n onChange: function onChange(e) {\n return setWidth(e.target.value);\n },\n fullWidth: true\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_TextField__WEBPACK_IMPORTED_MODULE_4___default.a, {\n margin: \"dense\",\n id: \"height\",\n label: \"Height (optional)\",\n type: \"height\",\n onChange: function onChange(e) {\n return setHeight(e.target.value);\n },\n fullWidth: true\n })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_DialogActions__WEBPACK_IMPORTED_MODULE_7___default.a, null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n onClick: function onClick() {\n setVideoModalOpen(false);\n editor.command(insertVideo, data);\n },\n className: classes.btn,\n variant: \"contained\",\n color: \"primary\"\n }, \"Add Video\"))));\n};\n\nvar VideoButton = Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__[\"withStyles\"])(styles)(VideoButtonUnconnected);\n/**\n * Export everything needed for the editor.\n */\n\n\n\n//# sourceURL=webpack:///./src/components/editor/plugins/video.js?"); + +/***/ }), + +/***/ "./src/components/editor/schema/schema.js": +/*!************************************************!*\ + !*** ./src/components/editor/schema/schema.js ***! + \************************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate_schema_violations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate-schema-violations */ \"./node_modules/slate-schema-violations/lib/slate-schema-violations.es.js\");\n/* harmony import */ var slate__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! slate */ \"./node_modules/slate/lib/slate.es.js\");\n\n\nvar schema = {\n document: {\n last: {\n types: [\"paragraph\"]\n },\n normalize: function normalize(change, reason, _ref) {\n var node = _ref.node;\n\n switch (reason) {\n case slate_schema_violations__WEBPACK_IMPORTED_MODULE_0__[\"LAST_CHILD_TYPE_INVALID\"]:\n {\n var paragraph = slate__WEBPACK_IMPORTED_MODULE_1__[\"Block\"].create(\"paragraph\");\n return change.insertNodeByKey(node.key, node.nodes.size, paragraph);\n }\n\n default:\n break;\n }\n }\n },\n blocks: {\n divider: {\n isVoid: true\n },\n image: {\n isVoid: true\n },\n video: {\n isVoid: true\n }\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (schema);\n\n//# sourceURL=webpack:///./src/components/editor/schema/schema.js?"); /***/ }), @@ -1040,7 +1131,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditorToolbar\", function() { return EditorToolbar; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/AppBar */ \"./node_modules/@material-ui/core/AppBar/index.js\");\n/* harmony import */ var _material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Toolbar */ \"./node_modules/@material-ui/core/Toolbar/index.js\");\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/icons/Help */ \"./node_modules/@material-ui/icons/Help.js\");\n/* harmony import */ var _material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var components_editor_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/editor/toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var actions_editorToolbar__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! actions/editorToolbar */ \"./src/actions/editorToolbar.js\");\n/* harmony import */ var _plugins_bold__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ../plugins/bold */ \"./src/components/editor/plugins/bold.js\");\n/* harmony import */ var _plugins_italic__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../plugins/italic */ \"./src/components/editor/plugins/italic.js\");\n/* harmony import */ var _plugins_strikethrough__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../plugins/strikethrough */ \"./src/components/editor/plugins/strikethrough.js\");\n/* harmony import */ var _plugins_underline__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../plugins/underline */ \"./src/components/editor/plugins/underline.js\");\n/* harmony import */ var _plugins_alignment__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../plugins/alignment */ \"./src/components/editor/plugins/alignment.js\");\n/* harmony import */ var _plugins_divider__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../plugins/divider */ \"./src/components/editor/plugins/divider.js\");\n/* harmony import */ var _plugins_fontcolor__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../plugins/fontcolor */ \"./src/components/editor/plugins/fontcolor.js\");\n/* harmony import */ var _plugins_fontfamily__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../plugins/fontfamily */ \"./src/components/editor/plugins/fontfamily.js\");\n/* harmony import */ var _plugins_fontsize__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../plugins/fontsize */ \"./src/components/editor/plugins/fontsize.js\");\n/* harmony import */ var _plugins_heading__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../plugins/heading */ \"./src/components/editor/plugins/heading.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../plugins/link */ \"./src/components/editor/plugins/link.js\");\n/* harmony import */ var _plugins_list__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../plugins/list */ \"./src/components/editor/plugins/list.js\");\n/* harmony import */ var _plugins_table__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../plugins/table */ \"./src/components/editor/plugins/table.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../plugins/video */ \"./src/components/editor/plugins/video.js\");\n\n\n\n\n\n\n\n\n\n\n\n/** import toolbar buttons */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n toolbar: {\n position: \"sticky\",\n top: 0,\n padding: \"10px 0px 10px\",\n borderBottom: \"2px solid #d1d5da\",\n backgroundColor: \"#ccd9ff\",\n cursor: \"default\"\n },\n fontSizeDropdown: {\n margin: theme.spacing.unit,\n minWidth: 100\n },\n fontFamilyDropdown: {\n margin: theme.spacing.unit,\n minWidth: 150\n },\n colorPicker: {\n position: \"absolute\",\n zIndex: \"100\",\n borderRadius: \"5px\"\n },\n largeIcon: {\n height: \"35px\",\n width: \"40px\"\n },\n button: {\n textTransform: \"none\",\n paddingLeft: \"2px\",\n paddingRight: \"6px\"\n },\n tableButtons: {\n border: \"1px solid\",\n borderRadius: \"2px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"1px\"\n },\n saveButton: {\n width: \"100%\",\n backgroundColor: \"#15317e\"\n }\n };\n};\n/**\n * The toolbar for the page editor. It uses Material-UI's AppBar component as the foundation, then displays individual buttons inside of it.\n */\n\n\nvar EditorToolbar = function EditorToolbar(props) {\n var classes = props.classes,\n editorToolbar = props.editorToolbar,\n showHelpModal = props.showHelpModal,\n showTableOptions = props.showTableOptions;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_0__[\"Fragment\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_2___default.a, {\n className: classes.toolbar,\n position: \"static\",\n color: \"default\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_3___default.a, null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default.a, {\n container: true\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_bold__WEBPACK_IMPORTED_MODULE_11__[\"BoldButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_italic__WEBPACK_IMPORTED_MODULE_12__[\"ItalicButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_underline__WEBPACK_IMPORTED_MODULE_14__[\"UnderlineButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_13__[\"StrikethroughButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_15__[\"AlignmentLeftButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_15__[\"AlignmentCenterButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_15__[\"AlignmentRightButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_divider__WEBPACK_IMPORTED_MODULE_16__[\"DividerButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_23__[\"UnorderedListButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_23__[\"OrderedListButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_20__[\"H1Button\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_20__[\"H2Button\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_20__[\"H3Button\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_link__WEBPACK_IMPORTED_MODULE_22__[\"LinkButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"InsertInitialTableButton\"], Object.assign({}, props, {\n onClick: function onClick(e) {\n showTableOptions(true);\n }\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_image__WEBPACK_IMPORTED_MODULE_21__[\"ImageButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_video__WEBPACK_IMPORTED_MODULE_25__[\"VideoButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_17__[\"FontColorButton\"], props), \"\\xA0\\xA0\", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", {\n className: classes.colorPicker\n }, editorToolbar.showColorPicker && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_17__[\"FontColorPicker\"], props))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default.a, {\n container: true\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default.a, {\n item: true,\n xs: 11\n }, editorToolbar.showTableOptions && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.tableButtons\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"InsertTableButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"InsertTableColumnButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"InsertTableRowButton\"], props), \"\\xA0\\xA0\", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"RemoveTableRowButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"RemoveTableColumnButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_24__[\"RemoveTableButton\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_fontfamily__WEBPACK_IMPORTED_MODULE_18__[\"FontFamilyDropdown\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_plugins_fontsize__WEBPACK_IMPORTED_MODULE_19__[\"FontSizeDropdown\"], props), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_4___default.a, {\n title: \"Editor Help\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_editor_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n onClick: function onClick(e) {\n showHelpModal(true);\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_7___default.a, {\n className: classes.largeIcon\n })))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_5___default.a, {\n item: true,\n xs: 1\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_6___default.a, {\n className: classes.saveButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\",\n onClick: props.onSave\n }, \"Save\"))))))));\n};\n\nvar mapStateToProps = function mapStateToProps(_ref) {\n var editorToolbar = _ref.editorToolbar;\n return {\n editorToolbar: editorToolbar\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps, {\n showHelpModal: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_10__[\"showHelpModal\"],\n showTableOptions: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_10__[\"showTableOptions\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__[\"withStyles\"])(styles)(EditorToolbar)));\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/EditorToolbar.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditorToolbar\", function() { return EditorToolbar; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/slicedToArray.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/AppBar */ \"./node_modules/@material-ui/core/AppBar/index.js\");\n/* harmony import */ var _material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Toolbar */ \"./node_modules/@material-ui/core/Toolbar/index.js\");\n/* harmony import */ var _material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Tooltip */ \"./node_modules/@material-ui/core/Tooltip/index.js\");\n/* harmony import */ var _material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/icons/Help */ \"./node_modules/@material-ui/icons/Help.js\");\n/* harmony import */ var _material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_9___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_9__);\n/* harmony import */ var components_editor_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/editor/toolbar/ToolbarButton */ \"./src/components/editor/toolbar/ToolbarButton.js\");\n/* harmony import */ var components_editor_HelpModal__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/editor/HelpModal */ \"./src/components/editor/HelpModal.js\");\n/* harmony import */ var _plugins_bold__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ../plugins/bold */ \"./src/components/editor/plugins/bold.js\");\n/* harmony import */ var _plugins_italic__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ../plugins/italic */ \"./src/components/editor/plugins/italic.js\");\n/* harmony import */ var _plugins_strikethrough__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ../plugins/strikethrough */ \"./src/components/editor/plugins/strikethrough.js\");\n/* harmony import */ var _plugins_subscript__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ../plugins/subscript */ \"./src/components/editor/plugins/subscript.js\");\n/* harmony import */ var _plugins_superscript__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ../plugins/superscript */ \"./src/components/editor/plugins/superscript.js\");\n/* harmony import */ var _plugins_underline__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ../plugins/underline */ \"./src/components/editor/plugins/underline.js\");\n/* harmony import */ var _plugins_alignment__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ../plugins/alignment */ \"./src/components/editor/plugins/alignment.js\");\n/* harmony import */ var _plugins_divider__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ../plugins/divider */ \"./src/components/editor/plugins/divider.js\");\n/* harmony import */ var _plugins_fontcolor__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ../plugins/fontcolor */ \"./src/components/editor/plugins/fontcolor.js\");\n/* harmony import */ var _plugins_fontfamily__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ../plugins/fontfamily */ \"./src/components/editor/plugins/fontfamily.js\");\n/* harmony import */ var _plugins_fontsize__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ../plugins/fontsize */ \"./src/components/editor/plugins/fontsize.js\");\n/* harmony import */ var _plugins_heading__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ../plugins/heading */ \"./src/components/editor/plugins/heading.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ../plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _plugins_linespacing__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ../plugins/linespacing */ \"./src/components/editor/plugins/linespacing.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ../plugins/link */ \"./src/components/editor/plugins/link.js\");\n/* harmony import */ var _plugins_list__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ../plugins/list */ \"./src/components/editor/plugins/list.js\");\n/* harmony import */ var _plugins_table__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ../plugins/table */ \"./src/components/editor/plugins/table.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ../plugins/video */ \"./src/components/editor/plugins/video.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n/** import toolbar buttons */\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n toolbar: {\n position: \"sticky\",\n top: 0,\n padding: \"10px 0px 10px\",\n borderBottom: \"2px solid #d1d5da\",\n backgroundColor: \"#ccd9ff\",\n cursor: \"default\"\n },\n fontSizeDropdown: {\n margin: theme.spacing.unit,\n minWidth: 100\n },\n fontFamilyDropdown: {\n margin: theme.spacing.unit,\n minWidth: 150\n },\n colorPicker: {\n position: \"absolute\",\n zIndex: \"100\",\n borderRadius: \"5px\"\n },\n largeIcon: {\n height: \"35px\",\n width: \"40px\"\n },\n button: {\n textTransform: \"none\",\n paddingLeft: \"2px\",\n paddingRight: \"6px\"\n },\n tableButtons: {\n border: \"1px solid #bcbcbc\",\n borderRadius: \"2px\",\n display: \"flex\",\n justifyContent: \"space-between\",\n padding: \"1px\"\n },\n saveButton: {\n marginTop: \"5px\",\n width: \"100%\",\n backgroundColor: \"#15317e\"\n },\n separator: {\n borderLeftColor: \"#c1c1c1\",\n borderLeftStyle: \"solid\",\n borderLeftWidth: \"1px\",\n display: \"inline-block\",\n height: \"20px\",\n verticalAlign: \"middle\"\n }\n };\n};\n\n/**\n * The toolbar for the page editor. It uses Material-UI's AppBar component as the foundation, then displays individual buttons inside of it.\n */\nvar EditorToolbar = function EditorToolbar(props) {\n var _useState = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(false),\n _useState2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_useState, 2),\n showColorPicker = _useState2[0],\n setShowColorPicker = _useState2[1];\n\n var _useState3 = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(false),\n _useState4 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_useState3, 2),\n showTableOptions = _useState4[0],\n setShowTableOptions = _useState4[1];\n\n var _useState5 = Object(react__WEBPACK_IMPORTED_MODULE_2__[\"useState\"])(false),\n _useState6 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_slicedToArray__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_useState5, 2),\n showHelpModal = _useState6[0],\n setShowHelpModal = _useState6[1];\n\n var classes = props.classes,\n onSave = props.onSave,\n other = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(props, [\"classes\", \"onSave\"]);\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(react__WEBPACK_IMPORTED_MODULE_2___default.a.Fragment, null, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_AppBar__WEBPACK_IMPORTED_MODULE_3___default.a, {\n className: classes.toolbar,\n position: \"static\",\n color: \"default\"\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Toolbar__WEBPACK_IMPORTED_MODULE_4___default.a, null, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n container: true\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_bold__WEBPACK_IMPORTED_MODULE_12__[\"BoldButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_italic__WEBPACK_IMPORTED_MODULE_13__[\"ItalicButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_underline__WEBPACK_IMPORTED_MODULE_17__[\"UnderlineButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_strikethrough__WEBPACK_IMPORTED_MODULE_14__[\"StrikethroughButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_subscript__WEBPACK_IMPORTED_MODULE_15__[\"SubscriptButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_superscript__WEBPACK_IMPORTED_MODULE_16__[\"SuperscriptButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_18__[\"AlignmentLeftButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_18__[\"AlignmentCenterButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_18__[\"AlignmentRightButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_alignment__WEBPACK_IMPORTED_MODULE_18__[\"AlignmentJustifyButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_divider__WEBPACK_IMPORTED_MODULE_19__[\"DividerButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_27__[\"UnorderedListButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_27__[\"OrderedListButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_27__[\"ListIncreaseIndentButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_list__WEBPACK_IMPORTED_MODULE_27__[\"ListDecreaseIndentButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_23__[\"H1Button\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_23__[\"H2Button\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_heading__WEBPACK_IMPORTED_MODULE_23__[\"H3Button\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_linespacing__WEBPACK_IMPORTED_MODULE_25__[\"LineSpacingButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_link__WEBPACK_IMPORTED_MODULE_26__[\"LinkButton\"], other), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"InsertInitialTableButton\"], Object.assign({\n showTableOptions: showTableOptions,\n setShowTableOptions: setShowTableOptions\n }, props, {\n onClick: function onClick() {\n setShowTableOptions(true);\n }\n })), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_image__WEBPACK_IMPORTED_MODULE_24__[\"ImageButton\"], other), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_video__WEBPACK_IMPORTED_MODULE_29__[\"VideoButton\"], other), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_20__[\"FontColorButton\"], Object.assign({\n showColorPicker: showColorPicker,\n setShowColorPicker: setShowColorPicker\n }, props)), \"\\xA0\\xA0\", react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"span\", {\n className: classes.colorPicker\n }, showColorPicker && react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_fontcolor__WEBPACK_IMPORTED_MODULE_20__[\"FontColorPicker\"], props))), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n container: true\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n xs: 10\n }, showTableOptions && react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.tableButtons\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"InsertTableButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"InsertTableColumnButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"InsertTableRowButton\"], props), \"\\xA0\\xA0\", react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"RemoveTableRowButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"RemoveTableColumnButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_table__WEBPACK_IMPORTED_MODULE_28__[\"RemoveTableButton\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"br\", null)), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_fontfamily__WEBPACK_IMPORTED_MODULE_21__[\"FontFamilyDropdown\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_plugins_fontsize__WEBPACK_IMPORTED_MODULE_22__[\"FontSizeDropdown\"], props), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(\"div\", {\n className: classes.separator\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Tooltip__WEBPACK_IMPORTED_MODULE_5___default.a, {\n title: \"Editor Help\"\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(components_editor_toolbar_ToolbarButton__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n onClick: function onClick() {\n setShowHelpModal(true);\n }\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_icons_Help__WEBPACK_IMPORTED_MODULE_8___default.a, {\n className: classes.largeIcon\n }))), showHelpModal && react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(components_editor_HelpModal__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n showHelpModal: showHelpModal,\n handleClose: function handleClose() {\n setShowHelpModal(false);\n },\n onClick: function onClick() {\n return window.scrollTo(0, 0);\n }\n })), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n xs: 1\n }), react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_6___default.a, {\n item: true,\n xs: 1\n }, react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_7___default.a, {\n className: classes.saveButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\",\n onClick: onSave\n }, \"Save\"))))))));\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_9__[\"withStyles\"])(styles)(EditorToolbar));\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/EditorToolbar.js?"); /***/ }), @@ -1052,7 +1143,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n button: {\n color: \"rgba(0, 0, 0, 0.87)\",\n padding: \"10px\",\n minWidth: \"25px\"\n }\n };\n};\n/**\n * Material-UI button that has a click handler attached to it.\n */\n\n\nvar ToolbarButton = function ToolbarButton(_ref) {\n var children = _ref.children,\n _onClick = _ref.onClick,\n classes = _ref.classes,\n props = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, [\"children\", \"onClick\", \"classes\"]);\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2___default.a, Object.assign({\n className: classes.button,\n onClick: function onClick(e) {\n Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isFunction\"])(_onClick) && _onClick(e);\n }\n }, props), children);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__[\"withStyles\"])(styles)(ToolbarButton));\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/ToolbarButton.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _utils_utils__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../utils/utils */ \"./src/components/editor/utils/utils.js\");\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n button: {\n color: \"rgba(0, 0, 0, 0.87)\",\n padding: \"7px\",\n minWidth: \"20px\"\n }\n };\n};\n\n/**\n * Material-UI button that has a click handler attached to it.\n */\nvar ToolbarButton = function ToolbarButton(_ref) {\n var children = _ref.children,\n _onClick = _ref.onClick,\n classes = _ref.classes,\n props = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, [\"children\", \"onClick\", \"classes\"]);\n\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_2___default.a, Object.assign({\n className: classes.button,\n onClick: function onClick(event) {\n Object(_utils_utils__WEBPACK_IMPORTED_MODULE_4__[\"isFunction\"])(_onClick) && _onClick(event);\n }\n }, props), children);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__[\"withStyles\"])(styles)(ToolbarButton));\n\n//# sourceURL=webpack:///./src/components/editor/toolbar/ToolbarButton.js?"); /***/ }), @@ -1064,7 +1155,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate_html_serializer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate-html-serializer */ \"./node_modules/slate-html-serializer/lib/slate-html-serializer.es.js\");\n\nvar BLOCK_TAGS = {\n p: \"paragraph\",\n ul: \"unordered-list\",\n ol: \"ordered-list\",\n li: \"list-item\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n hr: \"divider\",\n table: \"table\",\n th: \"table-head\",\n tr: \"table-row\",\n td: \"table-cell\",\n center: \"center\"\n};\nvar MARK_TAGS = {\n strong: \"bold\",\n b: \"bold\",\n em: \"italic\",\n i: \"italic\",\n u: \"underline\",\n s: \"strikethrough\",\n del: \"strikethrough\"\n};\nvar rules = [{\n deserialize: function deserialize(el, next) {\n var tagName = el.tagName.toLowerCase();\n\n if (tagName === \"img\") {\n // special case for images, to grab their src\n return {\n object: \"block\",\n type: \"image\",\n isVoid: true,\n nodes: next(el.childNodes),\n data: {\n src: el.getAttribute(\"src\")\n }\n };\n } else if (tagName === \"a\") {\n // special case for links, to grab their href\n return {\n object: \"inline\",\n type: \"link\",\n nodes: next(el.childNodes),\n data: {\n href: el.getAttribute(\"href\")\n }\n };\n } else if (el.tagName.toLowerCase() === \"br\") {\n return {\n object: \"text\",\n text: \"\\n\"\n };\n } else if (BLOCK_TAGS[tagName]) {\n // rule to handle blocks\n return {\n object: \"block\",\n type: BLOCK_TAGS[tagName],\n data: {\n className: el.getAttribute(\"class\")\n },\n nodes: next(el.childNodes)\n };\n } else if (MARK_TAGS[tagName]) {\n // rule to handle marks\n return {\n object: \"mark\",\n type: MARK_TAGS[tagName],\n nodes: next(el.childNodes)\n };\n }\n }\n}];\nvar deserializer = new slate_html_serializer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n rules: rules\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (deserializer);\n\n//# sourceURL=webpack:///./src/components/editor/utils/deserializer.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slate_html_serializer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate-html-serializer */ \"./node_modules/slate-html-serializer/lib/slate-html-serializer.es.js\");\n\nvar BLOCK_TAGS = {\n p: \"paragraph\",\n ul: \"unordered-list\",\n ol: \"ordered-list\",\n li: \"list-item\",\n h1: \"h1\",\n h2: \"h2\",\n h3: \"h3\",\n h4: \"h4\",\n h5: \"h5\",\n h6: \"h6\",\n hr: \"divider\",\n table: \"table\",\n th: \"table-cell\",\n tr: \"table-row\",\n td: \"table-cell\",\n center: \"center\",\n div: \"div\"\n};\nvar MARK_TAGS = {\n strong: \"bold\",\n b: \"bold\",\n em: \"italic\",\n i: \"italic\",\n u: \"underline\",\n s: \"strikethrough\",\n del: \"strikethrough\",\n sub: \"subscript\",\n sup: \"superscript\"\n};\nvar rules = [{\n deserialize: function deserialize(el, next) {\n var tag = el.tagName.toLowerCase();\n var block = BLOCK_TAGS[tag];\n\n if (block) {\n return {\n object: \"block\",\n type: block,\n nodes: next(el.childNodes)\n };\n }\n }\n}, {\n deserialize: function deserialize(el, next) {\n var mark = MARK_TAGS[el.tagName.toLowerCase()];\n\n if (mark) {\n return {\n object: \"mark\",\n type: mark,\n nodes: next(el.childNodes)\n };\n }\n }\n}, {\n // Special case for images, to grab their src.\n deserialize: function deserialize(el, next) {\n if (el.tagName.toLowerCase() === \"img\") {\n return {\n object: \"block\",\n type: \"image\",\n nodes: next(el.childNodes),\n data: {\n src: el.getAttribute(\"src\")\n }\n };\n }\n }\n}, {\n // Special case for links, to grab their href.\n deserialize: function deserialize(el, next) {\n if (el.tagName.toLowerCase() === \"a\") {\n return {\n object: \"mark\",\n type: \"link\",\n nodes: next(el.childNodes),\n data: {\n href: el.getAttribute(\"href\")\n }\n };\n }\n }\n}];\nvar deserializer = new slate_html_serializer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]({\n rules: rules\n});\n/* harmony default export */ __webpack_exports__[\"default\"] = (deserializer);\n\n//# sourceURL=webpack:///./src/components/editor/utils/deserializer.js?"); /***/ }), @@ -1076,7 +1167,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var slat /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMod\", function() { return isMod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPasteHtml\", function() { return onPasteHtml; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPasteText\", function() { return onPasteText; });\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var is_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! is-url */ \"./node_modules/is-url/index.js\");\n/* harmony import */ var is_url__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(is_url__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _deserializer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./deserializer */ \"./src/components/editor/utils/deserializer.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../plugins/video */ \"./src/components/editor/plugins/video.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../plugins/link */ \"./src/components/editor/plugins/link.js\");\n\n\n\n\n\n\n/**\n * Helper function that checks if a given item is a function.\n */\n\nvar isFunction = function isFunction(v) {\n if (v instanceof Function) {\n return true;\n }\n\n return false;\n};\n/**\n * Helper function that checks if the meta or ctrl key is pressed.\n * metaKey = ⌘ for Mac, ⊞ for Windows\n */\n\n\nvar isMod = function isMod(event) {\n return event.metaKey && !event.ctrlKey || event.ctrlKey;\n};\n/**\n * Function to handle any pasted HTML\n */\n\n\nvar onPasteHtml = function onPasteHtml(e, change) {\n if (e.shiftKey) return;\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_0__[\"getEventTransfer\"])(e);\n var html = transfer.html,\n rich = transfer.rich,\n text = transfer.text;\n\n if (rich) {\n return change.insertText(text);\n }\n\n var _deserializer$deseria = _deserializer__WEBPACK_IMPORTED_MODULE_2__[\"default\"].deserialize(html),\n document = _deserializer$deseria.document;\n\n change.insertFragment(document);\n return true;\n};\n/**\n * Function to handle any pasted text\n */\n\n\nvar onPasteText = function onPasteText(e, change) {\n var target = Object(slate_react__WEBPACK_IMPORTED_MODULE_0__[\"getEventRange\"])(e, change.value);\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_0__[\"getEventTransfer\"])(e);\n var text = transfer.text;\n if (!is_url__WEBPACK_IMPORTED_MODULE_1___default()(text)) return null;\n\n if (text.slice(-3) === \"png\" || text.slice(-3) === \"jpg\") {\n return change.call(_plugins_image__WEBPACK_IMPORTED_MODULE_3__[\"insertImage\"], text, target);\n } else if (text.match(/youtube\\.com|vimeo\\.com/)) {\n return change.call(_plugins_video__WEBPACK_IMPORTED_MODULE_4__[\"insertVideo\"], text);\n }\n\n return change.call(_plugins_link__WEBPACK_IMPORTED_MODULE_5__[\"insertLink\"], text);\n};\n/**\n * Export our helpers\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/utils/utils.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isFunction\", function() { return isFunction; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"isMod\", function() { return isMod; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPasteHtml\", function() { return onPasteHtml; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"onPasteText\", function() { return onPasteText; });\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var is_url__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! is-url */ \"./node_modules/is-url/index.js\");\n/* harmony import */ var is_url__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(is_url__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _deserializer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./deserializer */ \"./src/components/editor/utils/deserializer.js\");\n/* harmony import */ var _plugins_image__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../plugins/image */ \"./src/components/editor/plugins/image.js\");\n/* harmony import */ var _plugins_video__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../plugins/video */ \"./src/components/editor/plugins/video.js\");\n/* harmony import */ var _plugins_link__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../plugins/link */ \"./src/components/editor/plugins/link.js\");\n\n\n\n\n\n\n/**\n * Helper function that checks if a given item is a function.\n */\n\nvar isFunction = function isFunction(v) {\n if (v instanceof Function) {\n return true;\n }\n\n return false;\n};\n/**\n * Helper function that checks if the meta or ctrl key is pressed.\n * metaKey = ⌘ for Mac, ⊞ for Windows\n */\n\n\nvar isMod = function isMod(event) {\n return event.metaKey && !event.ctrlKey || event.ctrlKey;\n};\n/**\n * fixHTML receives pasted HTML and wraps inlines with blocks. This is\n * necessary due to the way Slate handles mixed inline and block level\n * content. If we didn't parse the pasted HTML, all of the mixed\n * content would be stripped (i.e. lists would completely disappear).\n * https://github.com/ianstormtaylor/slate/issues/1497\n */\n\n\nvar fixHTML = function fixHTML(html) {\n var dom = document.createElement(\"div\");\n html = html.replace(/\\s+/g, \" \").replace(/> <\"); // removes white space\n\n while (html.match(/<(h[1-6]|p|strong|div|u|em|a|b|i) ?[^>]*>\\s?<\\/\\1>/g)) {\n html = html.replace(/<(h[1-6]|p|strong|div|u|em|a|b|i) ?[^>]*>\\s?<\\/\\1>/g, \"\"); //removes empty tags recursively\n }\n\n dom.innerHTML = html;\n return dom.innerHTML.replace(/\\s+/g, \" \") // replace whitespace\n .replace(/> <\"); // remove space between tags\n};\n/**\n * Function to handle any pasted HTML\n */\n\n\nvar onPasteHtml = function onPasteHtml(event, editor, next) {\n if (event.shiftKey) return;\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_0__[\"getEventTransfer\"])(event);\n var html = transfer.html,\n rich = transfer.rich,\n text = transfer.text;\n\n if (rich) {\n return editor.insertText(text);\n }\n\n var fixedHTML = fixHTML(html);\n\n var _deserializer$deseria = _deserializer__WEBPACK_IMPORTED_MODULE_2__[\"default\"].deserialize(fixedHTML),\n document = _deserializer$deseria.document;\n\n editor.insertFragment(document);\n return true;\n};\n/**\n * Function to handle any pasted text\n */\n\n\nvar onPasteText = function onPasteText(event, editor, next) {\n var transfer = Object(slate_react__WEBPACK_IMPORTED_MODULE_0__[\"getEventTransfer\"])(event);\n var text = transfer.text; // if text isn't a URL, then no need for special use case\n\n if (!is_url__WEBPACK_IMPORTED_MODULE_1___default()(text)) return next();\n\n if (text.slice(-3) === \"png\" || text.slice(-3) === \"jpg\" || text.slice(-3) === \"gif\") {\n var data = {\n src: text\n };\n return editor.command(_plugins_image__WEBPACK_IMPORTED_MODULE_3__[\"insertImage\"], data);\n }\n\n if (text.match(/youtube\\.com|vimeo\\.com/)) {\n var _data = {\n url: text,\n height: \"100%\",\n width: \"100%\"\n };\n return editor.command(_plugins_video__WEBPACK_IMPORTED_MODULE_4__[\"insertVideo\"], _data);\n }\n\n return editor.command(_plugins_link__WEBPACK_IMPORTED_MODULE_5__[\"insertLink\"], text);\n};\n/**\n * Export our helpers\n */\n\n\n\n\n//# sourceURL=webpack:///./src/components/editor/utils/utils.js?"); /***/ }), @@ -1092,18 +1183,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ }), -/***/ "./src/components/frontpage/News.js": -/*!******************************************!*\ - !*** ./src/components/frontpage/News.js ***! - \******************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! images/twitterLogo.png */ \"./src/images/twitterLogo.png\");\n/* harmony import */ var images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var styles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! styles */ \"./src/styles/index.js\");\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n twitter: {\n paddingLeft: \"2px\",\n paddingRight: \"2px\"\n },\n title: {\n paddingLeft: \"2px\"\n }\n };\n};\n\n/** Widget that displays the most recent Dicty news */\nvar News = function News(props) {\n var posts = props.posts,\n classes = props.classes;\n var text = posts.map(function (post) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"ListItems\"], {\n key: post.date\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"LeadText\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, post.date)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"MainContent\"], null, post.content));\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"NewsContainer\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"Header\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n wrap: \"wrap\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n className: classes.twitter,\n xs: 1\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"Link\"], {\n href: \"https://twitter.com/dictybase\",\n title: \"Dicty News at Twitter\",\n target: \"new\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"Img\"], {\n src: images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_4___default.a,\n alt: \"Twitter logo\"\n }))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n className: classes.title,\n xs: 10\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"center\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_3___default.a, {\n name: \"globe fa-lg\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"NewsStockTitle\"], null, \"DICTY NEWS\"))))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n wrap: \"wrap\",\n direction: \"column\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"ListBox\"], null, text)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"MoreLink\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_3___default.a, {\n name: \"plus\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_5__[\"RouterLink\"], {\n to: \"/news\",\n alt: \"more news\"\n }, \" \", \"more news\", \" \")))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_2__[\"withStyles\"])(styles)(News));\n\n//# sourceURL=webpack:///./src/components/frontpage/News.js?"); - -/***/ }), - /***/ "./src/components/frontpage/Papers.js": /*!********************************************!*\ !*** ./src/components/frontpage/Papers.js ***! @@ -1112,7 +1191,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! styles */ \"./src/styles/index.js\");\n\n\n\n\n/** Widget that displays the latest Dicty papers */\n\nvar Papers = function Papers(props) {\n var text = props.papers.map(function (paper, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"ListItems\"], {\n key: index\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"LeadText\"], null, paper.author), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"MainContent\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"em\", null, paper.title))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"SourceContent\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"SourceTitle\"], null, \"Journal: \"), paper.journal, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n href: paper.link,\n target: \"new\"\n }, \" \", \"Pubmed\")));\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"PaperContainer\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"Header\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n wrap: \"wrap\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"PaperTitle\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default.a, {\n name: \"paperclip fa-lg\"\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"PaperTitle\"], null, \"LATEST PAPERS\"))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"ListBox\"], null, text), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"MoreLink\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default.a, {\n name: \"plus\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"RouterLink\"], {\n to: \"/papers\",\n alt: \"more papers\"\n }, \" \", \"more papers\", \" \")));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Papers);\n\n//# sourceURL=webpack:///./src/components/frontpage/Papers.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! styles */ \"./src/styles/index.js\");\n\n\n\n\n/** Widget that displays the latest Dicty papers */\n\nvar Papers = function Papers(props) {\n var text = props.papers.map(function (paper, index) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"ListItems\"], {\n key: index\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"LeadText\"], null, paper.author), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"MainContent\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"em\", null, paper.title))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"SourceContent\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"SourceTitle\"], null, \"Journal: \"), paper.journal, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"Link\"], {\n href: paper.link,\n target: \"new\"\n }, \" \", \"Pubmed\")));\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"PaperContainer\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"Header\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n wrap: \"wrap\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"PaperTitle\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_2___default.a, {\n name: \"paperclip fa-lg\"\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"PaperTitle\"], null, \"LATEST PAPERS\"))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"ListBox\"], null, text), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_3__[\"MoreLink\"], null));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Papers);\n\n//# sourceURL=webpack:///./src/components/frontpage/Papers.js?"); /***/ }), @@ -1152,6 +1231,18 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ }), +/***/ "./src/components/frontpage/Tweets.js": +/*!********************************************!*\ + !*** ./src/components/frontpage/Tweets.js ***! + \********************************************/ +/*! exports provided: default */ +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_twitter_widgets__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-twitter-widgets */ \"./node_modules/react-twitter-widgets/dist/index.js\");\n/* harmony import */ var react_twitter_widgets__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_twitter_widgets__WEBPACK_IMPORTED_MODULE_2__);\n\n\n\n/** Widget that displays the most recent dictybase tweets */\n\nvar Tweets = function Tweets() {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n wrap: \"wrap\",\n direction: \"column\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_twitter_widgets__WEBPACK_IMPORTED_MODULE_2__[\"Timeline\"], {\n dataSource: {\n sourceType: \"profile\",\n screenName: \"dictybase\"\n },\n options: {\n height: \"450\"\n }\n })));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Tweets);\n\n//# sourceURL=webpack:///./src/components/frontpage/Tweets.js?"); + +/***/ }), + /***/ "./src/components/pages/About/About.js": /*!*********************************************!*\ !*** ./src/components/pages/About/About.js ***! @@ -1268,7 +1359,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/editor/PageEditor */ \"./src/components/editor/PageEditor.js\");\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/authentication/ErrorNotification */ \"./src/components/authentication/ErrorNotification.js\");\n/* harmony import */ var styles_NewsStyles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! styles/NewsStyles */ \"./src/styles/NewsStyles.js\");\n\n\n\n\n\n\n\nvar error = \"Your login token is expired. Please log out and then log back in to regain full user access.\";\n\n/**\n * This is the view component so an authorized user can add a new page.\n */\nvar AddPage = function AddPage(props) {\n var _props$location$state = props.location.state,\n name = _props$location$state.name,\n subname = _props$location$state.subname,\n url = _props$location$state.url,\n match = props.match;\n var slug;\n\n if (subname) {\n slug = subname;\n } else {\n slug = name;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n render: function render(_ref) {\n var canEditPages = _ref.canEditPages,\n verifiedToken = _ref.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, canEditPages && verifiedToken === false && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n error: error\n }), canEditPages && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n wrap: \"wrap\",\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_NewsStyles__WEBPACK_IMPORTED_MODULE_6__[\"Banner\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, \"Add Editable Page for Route:\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, url))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 9\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n slug: slug,\n url: url,\n match: match,\n readOnly: false\n }))), !canEditPages && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n error: \"You have reached this page in error.\"\n }));\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_router_dom__WEBPACK_IMPORTED_MODULE_1__[\"withRouter\"])(AddPage));\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/AddPage.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/editor/PageEditor */ \"./src/components/editor/PageEditor.js\");\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/authentication/ErrorNotification */ \"./src/components/authentication/ErrorNotification.js\");\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n banner: {\n minHeight: \"45px\",\n textAlign: \"center\",\n padding: \"40px 20px 20px 20px\",\n backgroundColor: \"#eee\",\n marginBottom: \"20px\"\n }\n };\n};\n\nvar error = \"Your login token is expired. Please log out and then log back in to regain full user access.\";\n\n/**\n * This is the view component so an authorized user can add a new page.\n */\nvar AddPage = function AddPage(props) {\n var _props$location$state = props.location.state,\n name = _props$location$state.name,\n subname = _props$location$state.subname,\n url = _props$location$state.url,\n match = props.match,\n classes = props.classes;\n var slug;\n\n if (subname) {\n slug = subname;\n } else {\n slug = name;\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n render: function render(_ref) {\n var canEditPages = _ref.canEditPages,\n verifiedToken = _ref.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, canEditPages && verifiedToken === false && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n error: error\n }), canEditPages && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n wrap: \"wrap\",\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 12\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.banner\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h2\", null, \"Add Editable Page for Route:\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, url))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 9\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n slug: slug,\n url: url,\n match: match,\n readOnly: false\n }))), !canEditPages && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n error: \"You have reached this page in error.\"\n }));\n }\n });\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_router_dom__WEBPACK_IMPORTED_MODULE_1__[\"withRouter\"])(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__[\"withStyles\"])(styles)(AddPage)));\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/AddPage.js?"); /***/ }), @@ -1280,7 +1371,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var reac /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/editor/PageEditor */ \"./src/components/editor/PageEditor.js\");\n/* harmony import */ var components_editor_HelpModal__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/editor/HelpModal */ \"./src/components/editor/HelpModal.js\");\n/* harmony import */ var actions_editorToolbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! actions/editorToolbar */ \"./src/actions/editorToolbar.js\");\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n/* harmony import */ var constants_namespace__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! constants/namespace */ \"./src/constants/namespace.js\");\n\n\n\n\n\n\n\n\n\n/**\n * Allows page editing\n */\nvar EditInfoPage = function EditInfoPage(props) {\n var page = props.page,\n match = props.match,\n editorToolbar = props.editorToolbar,\n showHelpModal = props.showHelpModal;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 11,\n lg: 7\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_6__[\"EditorStyle\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n page: page,\n match: match\n }))), editorToolbar.showHelpModal && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_editor_HelpModal__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n showHelpModal: editorToolbar.showHelpModal,\n handleClose: function handleClose(e) {\n showHelpModal(false);\n },\n onClick: function onClick(e) {\n return window.scrollTo(0, 0);\n }\n }));\n};\n\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\n var slugName;\n\n if (ownProps.match.params.subname) {\n slugName = \"\".concat(constants_namespace__WEBPACK_IMPORTED_MODULE_7__[\"NAMESPACE\"], \"-\").concat(ownProps.match.params.subname);\n } else {\n slugName = \"\".concat(constants_namespace__WEBPACK_IMPORTED_MODULE_7__[\"NAMESPACE\"], \"-\").concat(ownProps.match.params.name);\n }\n\n return {\n page: state.editablePages[slugName],\n editorToolbar: state.editorToolbar\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps, {\n showHelpModal: actions_editorToolbar__WEBPACK_IMPORTED_MODULE_5__[\"showHelpModal\"]\n})(EditInfoPage));\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/EditInfoPage.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! components/editor/PageEditor */ \"./src/components/editor/PageEditor.js\");\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n/* harmony import */ var constants_namespace__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! constants/namespace */ \"./src/constants/namespace.js\");\n\n\n\n\n\n\n\n/**\n * Allows page editing\n */\nvar EditInfoPage = function EditInfoPage(props) {\n var page = props.page,\n match = props.match;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n xs: 11,\n lg: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_4__[\"EditorStyle\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n page: page,\n match: match\n }))));\n};\n\nvar mapStateToProps = function mapStateToProps(state, ownProps) {\n var slugName;\n\n if (ownProps.match.params.subname) {\n slugName = \"\".concat(constants_namespace__WEBPACK_IMPORTED_MODULE_5__[\"NAMESPACE\"], \"-\").concat(ownProps.match.params.subname);\n } else {\n slugName = \"\".concat(constants_namespace__WEBPACK_IMPORTED_MODULE_5__[\"NAMESPACE\"], \"-\").concat(ownProps.match.params.name);\n }\n\n return {\n page: state.editablePages[slugName]\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps, null)(EditInfoPage));\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/EditInfoPage.js?"); /***/ }), @@ -1304,7 +1395,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/editor/PageEditor */ \"./src/components/editor/PageEditor.js\");\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/authentication/ErrorNotification */ \"./src/components/authentication/ErrorNotification.js\");\n/* harmony import */ var utils_timeSince__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! utils/timeSince */ \"./src/utils/timeSince.js\");\n/* harmony import */ var utils_apiClasses__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! utils/apiClasses */ \"./src/utils/apiClasses.js\");\n/* harmony import */ var actions_editablePages__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! actions/editablePages */ \"./src/actions/editablePages.js\");\n/* harmony import */ var actions_auth__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! actions/auth */ \"./src/actions/auth.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n toolbar: {\n marginLeft: \"auto\"\n }\n };\n};\n\nvar error = \"Your login token is expired. Please log out and then log back in to regain full user access.\";\n\n/** Displays the page data that was fetched from the InfoPage component */\nvar InfoPageView =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(InfoPageView, _Component);\n\n function InfoPageView() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, InfoPageView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(InfoPageView)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.onClick = function (e) {\n e.preventDefault();\n var _this$props = _this.props,\n editPage = _this$props.editPage,\n match = _this$props.match,\n page = _this$props.page;\n editPage(page.data.attributes.content, match.url);\n };\n\n return _this;\n }\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(InfoPageView, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n fetchUserInfo = _this$props2.fetchUserInfo;\n var fetchedUser = new utils_apiClasses__WEBPACK_IMPORTED_MODULE_13__[\"ContentAPI\"](page).getUser();\n fetchUserInfo(fetchedUser);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n page = _this$props3.page,\n match = _this$props3.match,\n classes = _this$props3.classes;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_10__[\"default\"] // eslint-disable-next-line\n , {\n render: function render(_ref) {\n var canEditPages = _ref.canEditPages,\n fetchedUserData = _ref.fetchedUserData,\n verifiedToken = _ref.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", null, canEditPages && verifiedToken === false && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n error: error\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"br\", null), canEditPages && fetchedUserData && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"ToolbarNav\"], null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"TextInfo\"], null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"strong\", null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_16___default.a, {\n name: \"user\"\n }), \" \", fetchedUserData.getFullName()), \" \", \"edited \", Object(utils_timeSince__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(page.data.attributes.updated_at), \" \", \"ago\")), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true,\n className: classes.toolbar\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"Label\"], null, fetchedUserData.getRoles()), \" \\xA0\", verifiedToken && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"InlineLink\"], {\n onClick: _this2.onClick\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_16___default.a, {\n name: \"pencil\",\n title: \"Edit page\"\n }))))));\n }\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n page: page,\n readOnly: true,\n match: match\n })))));\n }\n }]);\n\n return InfoPageView;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_6__[\"connect\"])(null, {\n editPage: actions_editablePages__WEBPACK_IMPORTED_MODULE_14__[\"editPage\"],\n fetchUserInfo: actions_auth__WEBPACK_IMPORTED_MODULE_15__[\"fetchUserInfo\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__[\"withStyles\"])(styles)(InfoPageView)));\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/InfoPageView.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/classCallCheck.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/createClass.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/inherits.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__);\n/* harmony import */ var components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/editor/PageEditor */ \"./src/components/editor/PageEditor.js\");\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! components/authentication/ErrorNotification */ \"./src/components/authentication/ErrorNotification.js\");\n/* harmony import */ var utils_timeSince__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! utils/timeSince */ \"./src/utils/timeSince.js\");\n/* harmony import */ var utils_apiClasses__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! utils/apiClasses */ \"./src/utils/apiClasses.js\");\n/* harmony import */ var actions_editablePages__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! actions/editablePages */ \"./src/actions/editablePages.js\");\n/* harmony import */ var actions_auth__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! actions/auth */ \"./src/actions/auth.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_16___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_16__);\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n toolbar: {\n marginLeft: \"auto\"\n }\n };\n};\n\nvar error = \"Your login token is expired. Please log out and then log back in to regain full user access.\";\n\n/** Displays the page data that was fetched from the InfoPage component */\nvar InfoPageView =\n/*#__PURE__*/\nfunction (_Component) {\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_inherits__WEBPACK_IMPORTED_MODULE_4__[\"default\"])(InfoPageView, _Component);\n\n function InfoPageView() {\n var _getPrototypeOf2;\n\n var _this;\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_classCallCheck__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(this, InfoPageView);\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_possibleConstructorReturn__WEBPACK_IMPORTED_MODULE_2__[\"default\"])(this, (_getPrototypeOf2 = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_getPrototypeOf__WEBPACK_IMPORTED_MODULE_3__[\"default\"])(InfoPageView)).call.apply(_getPrototypeOf2, [this].concat(args)));\n\n _this.onClick = function (e) {\n e.preventDefault();\n var _this$props = _this.props,\n editPage = _this$props.editPage,\n match = _this$props.match,\n page = _this$props.page;\n editPage(page.data.attributes.content, match.url);\n };\n\n return _this;\n }\n\n Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_createClass__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(InfoPageView, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n var _this$props2 = this.props,\n page = _this$props2.page,\n fetchUserInfo = _this$props2.fetchUserInfo;\n var fetchedUser = new utils_apiClasses__WEBPACK_IMPORTED_MODULE_13__[\"ContentAPI\"](page).getUser();\n fetchUserInfo(fetchedUser);\n }\n }, {\n key: \"render\",\n value: function render() {\n var _this2 = this;\n\n var _this$props3 = this.props,\n page = _this$props3.page,\n match = _this$props3.match,\n classes = _this$props3.classes;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n render: function render(_ref) {\n var canEditPages = _ref.canEditPages,\n fetchedUserData = _ref.fetchedUserData,\n verifiedToken = _ref.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"div\", null, canEditPages && verifiedToken === false && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(components_authentication_ErrorNotification__WEBPACK_IMPORTED_MODULE_11__[\"default\"], {\n error: error\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"br\", null), canEditPages && fetchedUserData && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"ToolbarNav\"], null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"TextInfo\"], null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(\"strong\", null, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_16___default.a, {\n name: \"user\"\n }), \" \", fetchedUserData.getFullName()), \" \", \"edited \", Object(utils_timeSince__WEBPACK_IMPORTED_MODULE_12__[\"default\"])(page.data.attributes.updated_at), \" \", \"ago\")), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true,\n className: classes.toolbar\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"Label\"], null, fetchedUserData.getRoles()), \" \\xA0\", verifiedToken && react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_17__[\"InlineLink\"], {\n onClick: _this2.onClick\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_16___default.a, {\n name: \"pencil\",\n title: \"Edit page\"\n }))))));\n }\n }), react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n container: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_7___default.a, {\n item: true\n }, react__WEBPACK_IMPORTED_MODULE_5___default.a.createElement(components_editor_PageEditor__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n page: page,\n readOnly: true,\n match: match\n })))));\n }\n }]);\n\n return InfoPageView;\n}(react__WEBPACK_IMPORTED_MODULE_5__[\"Component\"]);\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_redux__WEBPACK_IMPORTED_MODULE_6__[\"connect\"])(null, {\n editPage: actions_editablePages__WEBPACK_IMPORTED_MODULE_14__[\"editPage\"],\n fetchUserInfo: actions_auth__WEBPACK_IMPORTED_MODULE_15__[\"fetchUserInfo\"]\n})(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_8__[\"withStyles\"])(styles)(InfoPageView)));\n\n//# sourceURL=webpack:///./src/components/pages/EditablePages/InfoPageView.js?"); /***/ }), @@ -1328,7 +1419,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorPage\", function() { return ErrorPage; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/Add */ \"./node_modules/@material-ui/icons/Add.js\");\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! styles */ \"./src/styles/index.js\");\n/* harmony import */ var images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! images/sad-dicty.png */ \"./src/images/sad-dicty.png\");\n/* harmony import */ var images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n\n // eslint-disable-next-line\n\nvar styles = function styles(theme) {\n return {\n error400: {\n backgroundColor: \"#eff8fb\",\n textAlign: \"center\",\n paddingTop: 30,\n paddingBottom: 30,\n marginBottom: 30,\n borderRadius: 5\n },\n error500: {\n backgroundColor: \"#a63232\",\n textAlign: \"center\",\n paddingTop: 30,\n paddingBottom: 30,\n marginBottom: 30,\n borderRadius: 5,\n color: \"#fff\"\n },\n backButton: {\n width: \"25%\",\n padding: \"20px\",\n textTransform: \"none\",\n backgroundColor: \"#15317e\"\n },\n addPageButton: {\n width: \"25%\",\n marginTop: \"25px\",\n padding: \"25px\",\n textTransform: \"none\",\n backgroundColor: \"#FF6347\",\n \"&:hover\": {\n backgroundColor: \"#cc381e\"\n }\n },\n mainGrid: {\n marginTop: \"40px\"\n },\n paragraph: {\n padding: \"10px\"\n }\n };\n};\n\n/**\n * General error handling page\n */\nvar ErrorPage = function ErrorPage(props) {\n var page = props.page,\n news = props.news,\n auth = props.auth,\n classes = props.classes,\n match = props.match;\n var errorStatus = 0;\n var errorMsg;\n\n if (page.error) {\n errorStatus = page.error.status;\n errorMsg = page.error.title;\n }\n\n if (news.error) {\n errorStatus = news.error.status;\n errorMsg = news.error.title;\n }\n\n if (auth.error) {\n errorStatus = auth.error.status;\n errorMsg = auth.error.title;\n }\n\n if (errorStatus >= 500) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n container: true,\n className: classes.mainGrid,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true,\n xs: 10,\n md: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.error500\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Sorry! There was a server error.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"If the problem persists, please email us at\", \" \", \"dictybase@northwestern.edu\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: \"/\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.backButton,\n size: \"small\",\n variant: \"contained\",\n color: \"default\"\n }, \"Back to homepage\")))));\n }\n\n if (errorStatus === 404) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n container: true,\n className: classes.mainGrid,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true,\n xs: 10,\n md: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.error400\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10___default.a,\n alt: \"Sad Dicty -- Page Not Found\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Page Not Found\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", {\n className: classes.paragraph\n }, \"Sorry! We can't find that page.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", {\n className: classes.paragraph\n }, \"You can try one of the links in our navbar above, or head back to the homepage.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: \"/\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.backButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\"\n }, \"Back to homepage\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_8__[\"default\"] // eslint-disable-next-line\n , {\n render: function render(_ref) {\n var canEditPages = _ref.canEditPages,\n verifiedToken = _ref.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true\n }, canEditPages && verifiedToken && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: {\n pathname: \"/addpage\",\n state: {\n name: match.params.name,\n subname: match.params.subname,\n url: match.url\n }\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.addPageButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6___default.a, null), \"\\xA0 Add a page to this route\"))));\n }\n }))));\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n container: true,\n className: classes.mainGrid,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true,\n xs: 10,\n md: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.error400\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10___default.a,\n alt: \"Sad Dicty -- HTTP Error\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_7___default.a, {\n name: \"exclamation-circle\"\n }), \" \", errorStatus, \" Error\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, errorMsg), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"If the problem persists, please email us at\", \" \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: \"mailto:dictybase@northwestern.edu\"\n }, \"dictybase@northwestern.edu\"), \".\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: \"/\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.backButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\"\n }, \"Back to Homepage\")))));\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n page: state.editablePages,\n news: state.news,\n auth: state.auth\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_router_dom__WEBPACK_IMPORTED_MODULE_2__[\"withRouter\"])(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__[\"withStyles\"])(styles)(Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps)(ErrorPage))));\n\n//# sourceURL=webpack:///./src/components/pages/ErrorPage.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ErrorPage\", function() { return ErrorPage; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_redux__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-redux */ \"./node_modules/react-redux/es/index.js\");\n/* harmony import */ var react_router_dom__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-router-dom */ \"./node_modules/react-router-dom/esm/react-router-dom.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5__);\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @material-ui/icons/Add */ \"./node_modules/@material-ui/icons/Add.js\");\n/* harmony import */ var _material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6___default = /*#__PURE__*/__webpack_require__.n(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/authentication/Authorization */ \"./src/components/authentication/Authorization.js\");\n/* harmony import */ var styles__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! styles */ \"./src/styles/index.js\");\n/* harmony import */ var images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! images/sad-dicty.png */ \"./src/images/sad-dicty.png\");\n/* harmony import */ var images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10__);\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n error400: {\n backgroundColor: \"#eff8fb\",\n textAlign: \"center\",\n paddingTop: 30,\n paddingBottom: 30,\n marginBottom: 30,\n borderRadius: 5\n },\n error500: {\n backgroundColor: \"#a63232\",\n textAlign: \"center\",\n paddingTop: 30,\n paddingBottom: 30,\n marginBottom: 30,\n borderRadius: 5,\n color: \"#fff\"\n },\n backButton: {\n width: \"25%\",\n padding: \"20px\",\n textTransform: \"none\",\n backgroundColor: \"#15317e\"\n },\n addPageButton: {\n width: \"25%\",\n marginTop: \"25px\",\n padding: \"25px\",\n textTransform: \"none\",\n backgroundColor: \"#FF6347\",\n \"&:hover\": {\n backgroundColor: \"#cc381e\"\n }\n },\n mainGrid: {\n marginTop: \"40px\"\n },\n paragraph: {\n padding: \"10px\"\n }\n };\n};\n\n/**\n * General error handling page\n */\nvar ErrorPage = function ErrorPage(props) {\n var page = props.page,\n auth = props.auth,\n classes = props.classes,\n match = props.match;\n var errorStatus = 0;\n var errorMsg;\n\n if (page.error) {\n errorStatus = page.error.status;\n errorMsg = page.error.title;\n }\n\n if (auth.error) {\n errorStatus = auth.error.status;\n errorMsg = auth.error.title;\n }\n\n if (errorStatus >= 500) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n container: true,\n className: classes.mainGrid,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true,\n xs: 10,\n md: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.error500\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Sorry! There was a server error.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"If the problem persists, please email us at\", \" \", \"dictybase@northwestern.edu\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: \"/\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.backButton,\n size: \"small\",\n variant: \"contained\",\n color: \"default\"\n }, \"Back to homepage\")))));\n }\n\n if (errorStatus === 404) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n container: true,\n className: classes.mainGrid,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true,\n xs: 10,\n md: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.error400\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10___default.a,\n alt: \"Sad Dicty -- Page Not Found\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, \"Page Not Found\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", {\n className: classes.paragraph\n }, \"Sorry! We can't find that page.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", {\n className: classes.paragraph\n }, \"You can try one of the links in our navbar above, or head back to the homepage.\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: \"/\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.backButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\"\n }, \"Back to homepage\")), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_authentication_Authorization__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n render: function render(_ref) {\n var canEditPages = _ref.canEditPages,\n verifiedToken = _ref.verifiedToken;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true\n }, canEditPages && verifiedToken && react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: {\n pathname: \"/addpage\",\n state: {\n name: match.params.name,\n subname: match.params.subname,\n url: match.url\n }\n }\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.addPageButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_icons_Add__WEBPACK_IMPORTED_MODULE_6___default.a, null), \"\\xA0 Add a page to this route\"))));\n }\n }))));\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n container: true,\n className: classes.mainGrid,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_4___default.a, {\n item: true,\n xs: 10,\n md: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", {\n className: classes.error400\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"img\", {\n src: images_sad_dicty_png__WEBPACK_IMPORTED_MODULE_10___default.a,\n alt: \"Sad Dicty -- HTTP Error\"\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h1\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_7___default.a, {\n name: \"exclamation-circle\"\n }), \" \", errorStatus, \" Error\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"h3\", null, errorMsg), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"p\", null, \"If the problem persists, please email us at\", \" \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"a\", {\n href: \"mailto:dictybase@northwestern.edu\"\n }, \"dictybase@northwestern.edu\"), \".\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_9__[\"RouterLink\"], {\n to: \"/\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_5___default.a, {\n className: classes.backButton,\n size: \"small\",\n variant: \"contained\",\n color: \"primary\"\n }, \"Back to Homepage\")))));\n};\n\nvar mapStateToProps = function mapStateToProps(state) {\n return {\n page: state.editablePages,\n auth: state.auth\n };\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(react_router_dom__WEBPACK_IMPORTED_MODULE_2__[\"withRouter\"])(Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__[\"withStyles\"])(styles)(Object(react_redux__WEBPACK_IMPORTED_MODULE_1__[\"connect\"])(mapStateToProps)(ErrorPage))));\n\n//# sourceURL=webpack:///./src/components/pages/ErrorPage.js?"); /***/ }), @@ -1340,19 +1431,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_helmet__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-helmet */ \"./node_modules/react-helmet/lib/Helmet.js\");\n/* harmony import */ var react_helmet__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_helmet__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var components_frontpage_Slideshow__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! components/frontpage/Slideshow */ \"./src/components/frontpage/Slideshow.js\");\n/* harmony import */ var components_frontpage_News__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/frontpage/News */ \"./src/components/frontpage/News.js\");\n/* harmony import */ var components_frontpage_Papers__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/frontpage/Papers */ \"./src/components/frontpage/Papers.js\");\n/* harmony import */ var components_frontpage_Popular__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/frontpage/Popular */ \"./src/components/frontpage/Popular.js\");\n/* harmony import */ var components_frontpage_Annotations__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/frontpage/Annotations */ \"./src/components/frontpage/Annotations.js\");\n/* harmony import */ var components_frontpage_StockCenter__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/frontpage/StockCenter */ \"./src/components/frontpage/StockCenter.js\");\n/* harmony import */ var data_papers__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! data/papers */ \"./src/data/papers.js\");\n/* harmony import */ var data_papers__WEBPACK_IMPORTED_MODULE_10___default = /*#__PURE__*/__webpack_require__.n(data_papers__WEBPACK_IMPORTED_MODULE_10__);\n/* harmony import */ var data_news__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! data/news */ \"./src/data/news.js\");\n/* harmony import */ var data_news__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(data_news__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var data_annotations__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! data/annotations */ \"./src/data/annotations.js\");\n/* harmony import */ var data_stockcenter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! data/stockcenter */ \"./src/data/stockcenter.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n container: {\n paddingLeft: \"30px\",\n paddingRight: \"30px\"\n },\n topItem: {\n padding: \"8px 16px 8px 16px\"\n },\n bottomItem: {\n padding: \"1px 2px 1px 2px\"\n }\n };\n};\n\n/** This is the frontpage component that appears when the user hits the \"/\" route. */\nvar Front = function Front(props) {\n var classes = props.classes;\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_helmet__WEBPACK_IMPORTED_MODULE_1__[\"Helmet\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"title\", null, \"dictyBase - your central resource for Dictyostelid genomics\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"meta\", {\n name: \"description\",\n content: \"dictyBase is a central resource for Dictyostelid genomics\"\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n container: true,\n wrap: \"wrap\",\n className: classes.container\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_frontpage_Slideshow__WEBPACK_IMPORTED_MODULE_4__[\"default\"], null)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_frontpage_News__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n posts: data_news__WEBPACK_IMPORTED_MODULE_11___default.a.slice(0, 5)\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n lg: 6\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_frontpage_Papers__WEBPACK_IMPORTED_MODULE_6__[\"default\"], {\n papers: data_papers__WEBPACK_IMPORTED_MODULE_10___default.a.slice(0, 4)\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6,\n lg: 3\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_frontpage_Popular__WEBPACK_IMPORTED_MODULE_7__[\"default\"], null)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_2___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6,\n lg: 3\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_frontpage_StockCenter__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n stockcenter: data_stockcenter__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n }), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(components_frontpage_Annotations__WEBPACK_IMPORTED_MODULE_8__[\"default\"], {\n annotations: data_annotations__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n }))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_3__[\"withStyles\"])(styles)(Front));\n\n//# sourceURL=webpack:///./src/components/pages/Front.js?"); - -/***/ }), - -/***/ "./src/components/pages/News/NewsArchive.js": -/*!**************************************************!*\ - !*** ./src/components/pages/News/NewsArchive.js ***! - \**************************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _material_ui_core__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @material-ui/core */ \"./node_modules/@material-ui/core/index.es.js\");\n/* harmony import */ var react_helmet__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! react-helmet */ \"./node_modules/react-helmet/lib/Helmet.js\");\n/* harmony import */ var react_helmet__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(react_helmet__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! react-fontawesome */ \"./node_modules/react-fontawesome/lib/index.js\");\n/* harmony import */ var react_fontawesome__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(react_fontawesome__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! styles/EditablePageStyles */ \"./src/styles/EditablePageStyles.js\");\n/* harmony import */ var styles__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! styles */ \"./src/styles/index.js\");\n/* harmony import */ var data_news__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! data/news */ \"./src/data/news.js\");\n/* harmony import */ var data_news__WEBPACK_IMPORTED_MODULE_7___default = /*#__PURE__*/__webpack_require__.n(data_news__WEBPACK_IMPORTED_MODULE_7__);\n/* harmony import */ var images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! images/twitterLogo.png */ \"./src/images/twitterLogo.png\");\n/* harmony import */ var images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_8___default = /*#__PURE__*/__webpack_require__.n(images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_8__);\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n item: {\n paddingBottom: \"10px\"\n }\n };\n};\n\n/**\n * This displays the Dicty news archive.\n */\nvar NewsArchive = function NewsArchive(props) {\n var classes = props.classes;\n var newsList = data_news__WEBPACK_IMPORTED_MODULE_7___default.a.map(function (post) {\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n justify: \"center\",\n key: post.date\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true,\n className: classes.item,\n xs: 8\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, post.date)), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, post.content), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"strong\", null, post.source))));\n });\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_helmet__WEBPACK_IMPORTED_MODULE_3__[\"Helmet\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"title\", null, \"dictyBase News Archive\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"meta\", {\n name: \"description\",\n content: \"An archive of dictyBase news items\"\n })), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_5__[\"Banner\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_5__[\"Header\"], null, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(react_fontawesome__WEBPACK_IMPORTED_MODULE_4___default.a, {\n name: \"globe\"\n }), \" Dicty News\"), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles_EditablePageStyles__WEBPACK_IMPORTED_MODULE_5__[\"Hdrtxt\"], null, \"Also available at\", \" \", react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_6__[\"Link\"], {\n href: \"https://twitter.com/dictybase\",\n title: \"Dicty News at Twitter\",\n target: \"new\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(styles__WEBPACK_IMPORTED_MODULE_6__[\"Img\"], {\n src: images_twitterLogo_png__WEBPACK_IMPORTED_MODULE_8___default.a,\n alt: \"Twitter logo\"\n })))), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"br\", null), react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n container: true,\n justify: \"center\"\n }, react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_1___default.a, {\n item: true\n }, newsList)));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core__WEBPACK_IMPORTED_MODULE_2__[\"withStyles\"])(styles)(NewsArchive));\n\n//# sourceURL=webpack:///./src/components/pages/News/NewsArchive.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var react_helmet__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-helmet */ \"./node_modules/react-helmet/lib/Helmet.js\");\n/* harmony import */ var react_helmet__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react_helmet__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Grid */ \"./node_modules/@material-ui/core/Grid/index.js\");\n/* harmony import */ var _material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @material-ui/core/styles */ \"./node_modules/@material-ui/core/styles/index.js\");\n/* harmony import */ var _material_ui_core_styles__WEBPACK_IMPORTED_MODULE_4___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_4__);\n/* harmony import */ var components_frontpage_Slideshow__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! components/frontpage/Slideshow */ \"./src/components/frontpage/Slideshow.js\");\n/* harmony import */ var components_frontpage_Tweets__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! components/frontpage/Tweets */ \"./src/components/frontpage/Tweets.js\");\n/* harmony import */ var components_frontpage_Papers__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! components/frontpage/Papers */ \"./src/components/frontpage/Papers.js\");\n/* harmony import */ var components_frontpage_Popular__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! components/frontpage/Popular */ \"./src/components/frontpage/Popular.js\");\n/* harmony import */ var components_frontpage_Annotations__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! components/frontpage/Annotations */ \"./src/components/frontpage/Annotations.js\");\n/* harmony import */ var components_frontpage_StockCenter__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! components/frontpage/StockCenter */ \"./src/components/frontpage/StockCenter.js\");\n/* harmony import */ var data_papers__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! data/papers */ \"./src/data/papers.js\");\n/* harmony import */ var data_papers__WEBPACK_IMPORTED_MODULE_11___default = /*#__PURE__*/__webpack_require__.n(data_papers__WEBPACK_IMPORTED_MODULE_11__);\n/* harmony import */ var data_annotations__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! data/annotations */ \"./src/data/annotations.js\");\n/* harmony import */ var data_stockcenter__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! data/stockcenter */ \"./src/data/stockcenter.js\");\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\nvar styles = function styles(theme) {\n return {\n container: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n paddingLeft: \"30px\",\n paddingRight: \"30px\"\n }, theme.breakpoints.up(\"xl\"), {\n paddingLeft: 0,\n paddingRight: 0\n }),\n topItem: {\n padding: \"8px 16px 8px 16px\"\n },\n bottomItem: {\n padding: \"1px 2px 1px 2px\"\n }\n };\n};\n\n/** This is the frontpage component that appears when the user hits the \"/\" route. */\nvar Front = function Front(props) {\n var classes = props.classes;\n return react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"div\", null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(react_helmet__WEBPACK_IMPORTED_MODULE_2__[\"Helmet\"], null, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"title\", null, \"dictyBase - your central resource for Dictyostelid genomics\"), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(\"meta\", {\n name: \"description\",\n content: \"dictyBase is a central resource for Dictyostelid genomics\"\n })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {\n container: true,\n justify: \"center\",\n className: classes.container\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6,\n xl: 5\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(components_frontpage_Slideshow__WEBPACK_IMPORTED_MODULE_5__[\"default\"], null)), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6,\n xl: 5\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(components_frontpage_Tweets__WEBPACK_IMPORTED_MODULE_6__[\"default\"], null)), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n lg: 6,\n xl: 4\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(components_frontpage_Papers__WEBPACK_IMPORTED_MODULE_7__[\"default\"], {\n papers: data_papers__WEBPACK_IMPORTED_MODULE_11___default.a.slice(0, 4)\n })), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6,\n lg: 3\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(components_frontpage_Popular__WEBPACK_IMPORTED_MODULE_8__[\"default\"], null)), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(_material_ui_core_Grid__WEBPACK_IMPORTED_MODULE_3___default.a, {\n item: true,\n className: classes.topItem,\n xs: 12,\n sm: 6,\n lg: 3\n }, react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(components_frontpage_StockCenter__WEBPACK_IMPORTED_MODULE_10__[\"default\"], {\n stockcenter: data_stockcenter__WEBPACK_IMPORTED_MODULE_13__[\"default\"]\n }), react__WEBPACK_IMPORTED_MODULE_1___default.a.createElement(components_frontpage_Annotations__WEBPACK_IMPORTED_MODULE_9__[\"default\"], {\n annotations: data_annotations__WEBPACK_IMPORTED_MODULE_12__[\"default\"]\n }))));\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (Object(_material_ui_core_styles__WEBPACK_IMPORTED_MODULE_4__[\"withStyles\"])(styles)(Front));\n\n//# sourceURL=webpack:///./src/components/pages/Front.js?"); /***/ }), @@ -1408,11 +1487,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /*!********************************!*\ !*** ./src/constants/types.js ***! \********************************/ -/*! exports provided: EDIT_PAGE, SAVE_PAGE_REQUEST, SAVE_PAGE_SUCCESS, SAVE_PAGE_FAILURE, FETCH_PAGE_REQUEST, FETCH_PAGE_SUCCESS, FETCH_PAGE_FAILURE, CHANGE_FONT_SELECT, CHANGE_FONT_SIZE, SHOW_HELP_MODAL, SHOW_COLOR_PICKER, SHOW_TABLE_OPTIONS, EDIT_NEWS, SAVE_NEWS_REQUEST, SAVE_NEWS_SUCCESS, SAVE_NEWS_FAILURE, FETCH_NEWS_REQUEST, FETCH_NEWS_SUCCESS, FETCH_NEWS_FAILURE, LOGIN_REQUEST, LOGIN_SUCCESS, LOGIN_FAILURE, LOGOUT_REQUEST, LOGOUT_SUCCESS, FETCH_USER_REQUEST, FETCH_USER_SUCCESS, FETCH_USER_FAILURE, FETCH_ROLE_REQUEST, FETCH_ROLE_SUCCESS, FETCH_ROLE_FAILURE, FETCH_NON_AUTH_ROLE_REQUEST, FETCH_NON_AUTH_ROLE_SUCCESS, FETCH_NON_AUTH_ROLE_FAILURE, FETCH_PERMISSION_REQUEST, FETCH_PERMISSION_SUCCESS, FETCH_PERMISSION_FAILURE, FETCH_NAVBAR_REQUEST, FETCH_NAVBAR_SUCCESS, FETCH_NAVBAR_FAILURE, FETCH_FOOTER_REQUEST, FETCH_FOOTER_SUCCESS, FETCH_FOOTER_FAILURE, FETCH_DOWNLOAD_TABS_REQUEST, FETCH_DOWNLOAD_TABS_SUCCESS, FETCH_DOWNLOAD_TABS_FAILURE, FETCH_DOWNLOAD_CONTENT_REQUEST, FETCH_DOWNLOAD_CONTENT_SUCCESS, FETCH_DOWNLOAD_CONTENT_FAILURE, CHANGE_TAB */ +/*! exports provided: EDIT_PAGE, SAVE_PAGE_REQUEST, SAVE_PAGE_SUCCESS, SAVE_PAGE_FAILURE, FETCH_PAGE_REQUEST, FETCH_PAGE_SUCCESS, FETCH_PAGE_FAILURE, LOGIN_REQUEST, LOGIN_SUCCESS, LOGIN_FAILURE, LOGOUT_REQUEST, LOGOUT_SUCCESS, FETCH_USER_REQUEST, FETCH_USER_SUCCESS, FETCH_USER_FAILURE, FETCH_ROLE_REQUEST, FETCH_ROLE_SUCCESS, FETCH_ROLE_FAILURE, FETCH_NON_AUTH_ROLE_REQUEST, FETCH_NON_AUTH_ROLE_SUCCESS, FETCH_NON_AUTH_ROLE_FAILURE, FETCH_PERMISSION_REQUEST, FETCH_PERMISSION_SUCCESS, FETCH_PERMISSION_FAILURE, FETCH_NAVBAR_REQUEST, FETCH_NAVBAR_SUCCESS, FETCH_NAVBAR_FAILURE, FETCH_FOOTER_REQUEST, FETCH_FOOTER_SUCCESS, FETCH_FOOTER_FAILURE, FETCH_DOWNLOAD_TABS_REQUEST, FETCH_DOWNLOAD_TABS_SUCCESS, FETCH_DOWNLOAD_TABS_FAILURE, FETCH_DOWNLOAD_CONTENT_REQUEST, FETCH_DOWNLOAD_CONTENT_SUCCESS, FETCH_DOWNLOAD_CONTENT_FAILURE, CHANGE_TAB */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_PAGE\", function() { return EDIT_PAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PAGE_REQUEST\", function() { return SAVE_PAGE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PAGE_SUCCESS\", function() { return SAVE_PAGE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PAGE_FAILURE\", function() { return SAVE_PAGE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PAGE_REQUEST\", function() { return FETCH_PAGE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PAGE_SUCCESS\", function() { return FETCH_PAGE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PAGE_FAILURE\", function() { return FETCH_PAGE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CHANGE_FONT_SELECT\", function() { return CHANGE_FONT_SELECT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CHANGE_FONT_SIZE\", function() { return CHANGE_FONT_SIZE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_HELP_MODAL\", function() { return SHOW_HELP_MODAL; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_COLOR_PICKER\", function() { return SHOW_COLOR_PICKER; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SHOW_TABLE_OPTIONS\", function() { return SHOW_TABLE_OPTIONS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_NEWS\", function() { return EDIT_NEWS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_NEWS_REQUEST\", function() { return SAVE_NEWS_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_NEWS_SUCCESS\", function() { return SAVE_NEWS_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_NEWS_FAILURE\", function() { return SAVE_NEWS_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NEWS_REQUEST\", function() { return FETCH_NEWS_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NEWS_SUCCESS\", function() { return FETCH_NEWS_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NEWS_FAILURE\", function() { return FETCH_NEWS_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGIN_REQUEST\", function() { return LOGIN_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGIN_SUCCESS\", function() { return LOGIN_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGIN_FAILURE\", function() { return LOGIN_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGOUT_REQUEST\", function() { return LOGOUT_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGOUT_SUCCESS\", function() { return LOGOUT_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_USER_REQUEST\", function() { return FETCH_USER_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_USER_SUCCESS\", function() { return FETCH_USER_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_USER_FAILURE\", function() { return FETCH_USER_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_ROLE_REQUEST\", function() { return FETCH_ROLE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_ROLE_SUCCESS\", function() { return FETCH_ROLE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_ROLE_FAILURE\", function() { return FETCH_ROLE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NON_AUTH_ROLE_REQUEST\", function() { return FETCH_NON_AUTH_ROLE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NON_AUTH_ROLE_SUCCESS\", function() { return FETCH_NON_AUTH_ROLE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NON_AUTH_ROLE_FAILURE\", function() { return FETCH_NON_AUTH_ROLE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PERMISSION_REQUEST\", function() { return FETCH_PERMISSION_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PERMISSION_SUCCESS\", function() { return FETCH_PERMISSION_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PERMISSION_FAILURE\", function() { return FETCH_PERMISSION_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NAVBAR_REQUEST\", function() { return FETCH_NAVBAR_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NAVBAR_SUCCESS\", function() { return FETCH_NAVBAR_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NAVBAR_FAILURE\", function() { return FETCH_NAVBAR_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_FOOTER_REQUEST\", function() { return FETCH_FOOTER_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_FOOTER_SUCCESS\", function() { return FETCH_FOOTER_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_FOOTER_FAILURE\", function() { return FETCH_FOOTER_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_TABS_REQUEST\", function() { return FETCH_DOWNLOAD_TABS_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_TABS_SUCCESS\", function() { return FETCH_DOWNLOAD_TABS_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_TABS_FAILURE\", function() { return FETCH_DOWNLOAD_TABS_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_CONTENT_REQUEST\", function() { return FETCH_DOWNLOAD_CONTENT_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_CONTENT_SUCCESS\", function() { return FETCH_DOWNLOAD_CONTENT_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_CONTENT_FAILURE\", function() { return FETCH_DOWNLOAD_CONTENT_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CHANGE_TAB\", function() { return CHANGE_TAB; });\nvar EDIT_PAGE = \"EDIT_PAGE\";\nvar SAVE_PAGE_REQUEST = \"SAVE_PAGE_REQUEST\";\nvar SAVE_PAGE_SUCCESS = \"SAVE_PAGE_SUCCESS\";\nvar SAVE_PAGE_FAILURE = \"SAVE_PAGE_FAILURE\";\nvar FETCH_PAGE_REQUEST = \"FETCH_PAGE_REQUEST\";\nvar FETCH_PAGE_SUCCESS = \"FETCH_PAGE_SUCCESS\";\nvar FETCH_PAGE_FAILURE = \"FETCH_PAGE_FAILURE\";\nvar CHANGE_FONT_SELECT = \"CHANGE_FONT_SELECT\";\nvar CHANGE_FONT_SIZE = \"CHANGE_FONT_SIZE\";\nvar SHOW_HELP_MODAL = \"SHOW_HELP_MODAL\";\nvar SHOW_COLOR_PICKER = \"SHOW_COLOR_PICKER\";\nvar SHOW_TABLE_OPTIONS = \"SHOW_TABLE_OPTIONS\";\nvar EDIT_NEWS = \"EDIT_NEWS\";\nvar SAVE_NEWS_REQUEST = \"SAVE_NEWS_REQUEST\";\nvar SAVE_NEWS_SUCCESS = \"SAVE_NEWS_SUCCESS\";\nvar SAVE_NEWS_FAILURE = \"SAVE_NEWS_FAILURE\";\nvar FETCH_NEWS_REQUEST = \"FETCH_NEWS_REQUEST\";\nvar FETCH_NEWS_SUCCESS = \"FETCH_NEWS_SUCCESS\";\nvar FETCH_NEWS_FAILURE = \"FETCH_NEWS_FAILURE\";\nvar LOGIN_REQUEST = \"LOGIN_REQUEST\";\nvar LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\nvar LOGIN_FAILURE = \"LOGIN_FAILURE\";\nvar LOGOUT_REQUEST = \"LOGOUT_REQUEST\";\nvar LOGOUT_SUCCESS = \"LOGOUT_SUCCESS\";\nvar FETCH_USER_REQUEST = \"FETCH_USER_REQUEST\";\nvar FETCH_USER_SUCCESS = \"FETCH_USER_SUCCESS\";\nvar FETCH_USER_FAILURE = \"FETCH_USER_FAILURE\";\nvar FETCH_ROLE_REQUEST = \"FETCH_ROLE_REQUEST\";\nvar FETCH_ROLE_SUCCESS = \"FETCH_ROLE_SUCCESS\";\nvar FETCH_ROLE_FAILURE = \"FETCH_ROLE_FAILURE\";\nvar FETCH_NON_AUTH_ROLE_REQUEST = \"FETCH_NON_AUTH_ROLE_REQUEST\";\nvar FETCH_NON_AUTH_ROLE_SUCCESS = \"FETCH_NON_AUTH_ROLE_SUCCESS\";\nvar FETCH_NON_AUTH_ROLE_FAILURE = \"FETCH_NON_AUTH_ROLE_FAILURE\";\nvar FETCH_PERMISSION_REQUEST = \"FETCH_PERMISSION_REQUEST\";\nvar FETCH_PERMISSION_SUCCESS = \"FETCH_PERMISSION_SUCCESS\";\nvar FETCH_PERMISSION_FAILURE = \"FETCH_PERMISSION_FAILURE\";\nvar FETCH_NAVBAR_REQUEST = \"FETCH_NAVBAR_REQUEST\";\nvar FETCH_NAVBAR_SUCCESS = \"FETCH_NAVBAR_SUCCESS\";\nvar FETCH_NAVBAR_FAILURE = \"FETCH_NAVBAR_FAILURE\";\nvar FETCH_FOOTER_REQUEST = \"FETCH_FOOTER_REQUEST\";\nvar FETCH_FOOTER_SUCCESS = \"FETCH_FOOTER_SUCCESS\";\nvar FETCH_FOOTER_FAILURE = \"FETCH_FOOTER_FAILURE\";\nvar FETCH_DOWNLOAD_TABS_REQUEST = \"FETCH_DOWNLOAD_TABS_REQUEST\";\nvar FETCH_DOWNLOAD_TABS_SUCCESS = \"FETCH_DOWNLOAD_TABS_SUCCESS\";\nvar FETCH_DOWNLOAD_TABS_FAILURE = \"FETCH_DOWNLOAD_TABS_FAILURE\";\nvar FETCH_DOWNLOAD_CONTENT_REQUEST = \"FETCH_DOWNLOAD_CONTENT_REQUEST\";\nvar FETCH_DOWNLOAD_CONTENT_SUCCESS = \"FETCH_DOWNLOAD_CONTENT_SUCCESS\";\nvar FETCH_DOWNLOAD_CONTENT_FAILURE = \"FETCH_DOWNLOAD_CONTENT_FAILURE\";\nvar CHANGE_TAB = \"CHANGE_TAB\";\n\n//# sourceURL=webpack:///./src/constants/types.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EDIT_PAGE\", function() { return EDIT_PAGE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PAGE_REQUEST\", function() { return SAVE_PAGE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PAGE_SUCCESS\", function() { return SAVE_PAGE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SAVE_PAGE_FAILURE\", function() { return SAVE_PAGE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PAGE_REQUEST\", function() { return FETCH_PAGE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PAGE_SUCCESS\", function() { return FETCH_PAGE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PAGE_FAILURE\", function() { return FETCH_PAGE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGIN_REQUEST\", function() { return LOGIN_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGIN_SUCCESS\", function() { return LOGIN_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGIN_FAILURE\", function() { return LOGIN_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGOUT_REQUEST\", function() { return LOGOUT_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"LOGOUT_SUCCESS\", function() { return LOGOUT_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_USER_REQUEST\", function() { return FETCH_USER_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_USER_SUCCESS\", function() { return FETCH_USER_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_USER_FAILURE\", function() { return FETCH_USER_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_ROLE_REQUEST\", function() { return FETCH_ROLE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_ROLE_SUCCESS\", function() { return FETCH_ROLE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_ROLE_FAILURE\", function() { return FETCH_ROLE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NON_AUTH_ROLE_REQUEST\", function() { return FETCH_NON_AUTH_ROLE_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NON_AUTH_ROLE_SUCCESS\", function() { return FETCH_NON_AUTH_ROLE_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NON_AUTH_ROLE_FAILURE\", function() { return FETCH_NON_AUTH_ROLE_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PERMISSION_REQUEST\", function() { return FETCH_PERMISSION_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PERMISSION_SUCCESS\", function() { return FETCH_PERMISSION_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_PERMISSION_FAILURE\", function() { return FETCH_PERMISSION_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NAVBAR_REQUEST\", function() { return FETCH_NAVBAR_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NAVBAR_SUCCESS\", function() { return FETCH_NAVBAR_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_NAVBAR_FAILURE\", function() { return FETCH_NAVBAR_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_FOOTER_REQUEST\", function() { return FETCH_FOOTER_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_FOOTER_SUCCESS\", function() { return FETCH_FOOTER_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_FOOTER_FAILURE\", function() { return FETCH_FOOTER_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_TABS_REQUEST\", function() { return FETCH_DOWNLOAD_TABS_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_TABS_SUCCESS\", function() { return FETCH_DOWNLOAD_TABS_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_TABS_FAILURE\", function() { return FETCH_DOWNLOAD_TABS_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_CONTENT_REQUEST\", function() { return FETCH_DOWNLOAD_CONTENT_REQUEST; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_CONTENT_SUCCESS\", function() { return FETCH_DOWNLOAD_CONTENT_SUCCESS; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"FETCH_DOWNLOAD_CONTENT_FAILURE\", function() { return FETCH_DOWNLOAD_CONTENT_FAILURE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CHANGE_TAB\", function() { return CHANGE_TAB; });\nvar EDIT_PAGE = \"EDIT_PAGE\";\nvar SAVE_PAGE_REQUEST = \"SAVE_PAGE_REQUEST\";\nvar SAVE_PAGE_SUCCESS = \"SAVE_PAGE_SUCCESS\";\nvar SAVE_PAGE_FAILURE = \"SAVE_PAGE_FAILURE\";\nvar FETCH_PAGE_REQUEST = \"FETCH_PAGE_REQUEST\";\nvar FETCH_PAGE_SUCCESS = \"FETCH_PAGE_SUCCESS\";\nvar FETCH_PAGE_FAILURE = \"FETCH_PAGE_FAILURE\";\nvar LOGIN_REQUEST = \"LOGIN_REQUEST\";\nvar LOGIN_SUCCESS = \"LOGIN_SUCCESS\";\nvar LOGIN_FAILURE = \"LOGIN_FAILURE\";\nvar LOGOUT_REQUEST = \"LOGOUT_REQUEST\";\nvar LOGOUT_SUCCESS = \"LOGOUT_SUCCESS\";\nvar FETCH_USER_REQUEST = \"FETCH_USER_REQUEST\";\nvar FETCH_USER_SUCCESS = \"FETCH_USER_SUCCESS\";\nvar FETCH_USER_FAILURE = \"FETCH_USER_FAILURE\";\nvar FETCH_ROLE_REQUEST = \"FETCH_ROLE_REQUEST\";\nvar FETCH_ROLE_SUCCESS = \"FETCH_ROLE_SUCCESS\";\nvar FETCH_ROLE_FAILURE = \"FETCH_ROLE_FAILURE\";\nvar FETCH_NON_AUTH_ROLE_REQUEST = \"FETCH_NON_AUTH_ROLE_REQUEST\";\nvar FETCH_NON_AUTH_ROLE_SUCCESS = \"FETCH_NON_AUTH_ROLE_SUCCESS\";\nvar FETCH_NON_AUTH_ROLE_FAILURE = \"FETCH_NON_AUTH_ROLE_FAILURE\";\nvar FETCH_PERMISSION_REQUEST = \"FETCH_PERMISSION_REQUEST\";\nvar FETCH_PERMISSION_SUCCESS = \"FETCH_PERMISSION_SUCCESS\";\nvar FETCH_PERMISSION_FAILURE = \"FETCH_PERMISSION_FAILURE\";\nvar FETCH_NAVBAR_REQUEST = \"FETCH_NAVBAR_REQUEST\";\nvar FETCH_NAVBAR_SUCCESS = \"FETCH_NAVBAR_SUCCESS\";\nvar FETCH_NAVBAR_FAILURE = \"FETCH_NAVBAR_FAILURE\";\nvar FETCH_FOOTER_REQUEST = \"FETCH_FOOTER_REQUEST\";\nvar FETCH_FOOTER_SUCCESS = \"FETCH_FOOTER_SUCCESS\";\nvar FETCH_FOOTER_FAILURE = \"FETCH_FOOTER_FAILURE\";\nvar FETCH_DOWNLOAD_TABS_REQUEST = \"FETCH_DOWNLOAD_TABS_REQUEST\";\nvar FETCH_DOWNLOAD_TABS_SUCCESS = \"FETCH_DOWNLOAD_TABS_SUCCESS\";\nvar FETCH_DOWNLOAD_TABS_FAILURE = \"FETCH_DOWNLOAD_TABS_FAILURE\";\nvar FETCH_DOWNLOAD_CONTENT_REQUEST = \"FETCH_DOWNLOAD_CONTENT_REQUEST\";\nvar FETCH_DOWNLOAD_CONTENT_SUCCESS = \"FETCH_DOWNLOAD_CONTENT_SUCCESS\";\nvar FETCH_DOWNLOAD_CONTENT_FAILURE = \"FETCH_DOWNLOAD_CONTENT_FAILURE\";\nvar CHANGE_TAB = \"CHANGE_TAB\";\n\n//# sourceURL=webpack:///./src/constants/types.js?"); /***/ }), @@ -1428,17 +1507,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ /***/ }), -/***/ "./src/data/news.js": -/*!**************************!*\ - !*** ./src/data/news.js ***! - \**************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("module.exports = [{\n date: \"2018.07.21\",\n source: \"ScienceNews\",\n content: \"Dicty in the News: Bacteria carried as food within Dictyostelium discoideum are protected by a lectin coat. Reported in ScienceNews, and recently published by Dinh and colleagues in Science with comments by co-author Adam Kuspa.\"\n}, {\n date: \"2018.07.19\",\n source: \"dictyBase\",\n content: \"Dicty2018: A list of currently registered people is available here. Please check if all your information has been correctly processed and email the organizers if corrections are needed. \"\n}, {\n date: \"2018.05.14\",\n source: \"Dicty Stock Center\",\n content: \"Thierry Soldati is amongst 62 life scientists elected to EMBO (European Molecular Biology Organisation) this year. New EMBO members. Congratulations Thierry!\"\n}, {\n date: \"2018.04.24\",\n source: \"Dicty Stock Center\",\n content: \"Thomas Williams, who graduated and now is a post-doc in Rob Kay's lab, recently first authored a paper in JCS. In addition, JCS chose him to be First Person, a series of interviews with selected first authors, helping early-career researchers promote themselves alongside their papers.\"\n}, {\n date: \"2018.02.13\",\n source: \"dictyBase\",\n content: \"After Northwestern moved our servers from one campus to the other recently our Blast from the Front - and all Gene Pages, as well as the Genome Browser (including snapshot on gene page) are down. We and Northwestern IT staff are working on the problem. Meanwhile for Blast use the Genome Server, the Blast server which is available from the other genome sites we house. Thanks for your patience! \"\n}, {\n date: \"2018.02.07\",\n source: \"Medical Express\",\n content: \"Dicty in the News: New evidence using Dictyostelium discoideum suggests a role for curcumin and related compounds in the treatment of cancer and Alzheimer's disease. Reported in Medical Xpress with comments from Professor Robin SB Williams.\"\n}, {\n date: \"2018.01.29\",\n source: \"dictyBase\",\n content: \"We are happy to announce that Eric Hartline has joined the dictyBase team. Eric is working with us on user interface and software development.\"\n}, {\n date: \"2018.01.23\",\n source: \"LiveScience\",\n content: \"Dicty in the News: New research shows that plague bacterium Yersinia pestis can survive and replicate within Dictyostelium discoideum, potentially explaining how the plague can remain dormant for years before unexpectedly re-emerging. Reported in LiveScience and EurekAlert. Recently published by Markman and colleagues in Emerging Infect. Dis.\"\n}];\n\n//# sourceURL=webpack:///./src/data/news.js?"); - -/***/ }), - /***/ "./src/data/papers.js": /*!****************************!*\ !*** ./src/data/papers.js ***! @@ -1446,7 +1514,7 @@ eval("module.exports = [{\n date: \"2018.07.21\",\n source: \"ScienceNews\",\n /*! no static exports found */ /***/ (function(module, exports) { -eval("module.exports = [{\n author: \"Usaj, Zattelman, Regev, Shneyer, Wiesel-Motiuk & Henn\",\n title: \"Overexpression and purification of human myosins from transiently and stably transfected suspension adapted HEK293SF-3F6 cells.\",\n journal: \"Anal Biochem. 2018 Jul 31. pii: S0003-2697(18)30419-6. doi: 10.1016/j.ab.2018.07.026. [Epub ahead of print]\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/30075102\"\n}, {\n author: \"Marinović M, Xiong H, Rivero F, Weber I.\",\n title: \"Assaying Rho GTPase-Dependent Processes in Dictyostelium discoideum.\",\n journal: \"Methods Mol Biol. 2018;1821:371-392. doi: 10.1007/978-1-4939-8612-5_25.\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/30062425\"\n}, {\n author: \"Tunnacliffe E, Corrigan AM, Chubb JR.\",\n title: \"Promoter-mediated diversification of transcriptional bursting dynamics following gene duplication.\",\n journal: \"Proc Natl Acad Sci U S A. 2018 Jul 30. pii: 201800943. doi: 10.1073/pnas.1800943115. [Epub ahead of print]\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/30061408\"\n}, {\n author: \"Song L, Rijal R, Karow M, Stumpf M, Hahn O, Park L, Insall R, Schröder R, Hofmann A, Clemen CS, Eichinger L.\",\n title: \"Expression of N471D strumpellin leads to defects in the endolysosomal system.\",\n journal: \"Dis Model Mech. 2018 Jul 30. pii: dmm.033449. doi: 10.1242/dmm.033449. [Epub ahead of print]\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/30061306\"\n}, {\n author: \"Tu Y, Rappel WJ.\",\n title: \"Adaptation of Living Systems.\",\n journal: \"Annu Rev Condens Matter Phys. 2018 Mar;9:183-205. doi: 10.1146/annurev-conmatphys-033117-054046. Epub 2017 Dec 8.\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/30057689\"\n}];\n\n//# sourceURL=webpack:///./src/data/papers.js?"); +eval("module.exports = [{\n author: \"Tanaka, Jahan, Kondo, Nakano & Yumura (2019)\",\n title: \"Cytokinesis D is Mediated by Cortical Flow of Dividing Cells Instead of Chemotaxis.\",\n journal: \"Cells 8\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/31108912\"\n}, {\n author: \"Odell, Sikirzhytski, Tikhonenko, Cobani, Khodjakov & Koonce (2019)\",\n title: \"Force balances between interphase centrosomes, as revealed by laser ablation.\",\n journal: \"Mol. Biol. Cell mbcE19010034\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/31067156\"\n}, {\n author: \"Chen, Luck, Rabe, Dinh, Shaulsky, Nelson, Gershenzon, Dickschat, Kollner & Chen (2019)\",\n title: \"A terpene synthase-cytochrome P450 cluster in Dictyostelium discoideum produces a novel trisnorsesquiterpene.\",\n journal: \"Elife 8\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/31063135\"\n}, {\n author: \"Yamada & Schaap (2019)\",\n title: \"Cyclic AMP induction of Dictyostelium prespore gene expression requires autophagy.\",\n journal: \"Dev. Biol.\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/31051160\"\n}, {\n author: \"Saga, Iwade, Araki, Ishikawa & Kawata (2019)\",\n title: \"Analysis of DrkA kinase's role in STATa activation.\",\n journal: \"Genes Cells\",\n link: \"https://www.ncbi.nlm.nih.gov/pubmed/31002205\"\n}];\n\n//# sourceURL=webpack:///./src/data/papers.js?"); /***/ }), @@ -1506,17 +1574,6 @@ eval("module.exports = __webpack_require__.p + \"static/media/sad-dicty.98bec487 /***/ }), -/***/ "./src/images/twitterLogo.png": -/*!************************************!*\ - !*** ./src/images/twitterLogo.png ***! - \************************************/ -/*! no static exports found */ -/***/ (function(module, exports) { - -eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUCAYAAAB4d5a9AAAKQ2lDQ1BJQ0MgcHJvZmlsZQAAeNqdU3dYk/cWPt/3ZQ9WQtjwsZdsgQAiI6wIyBBZohCSAGGEEBJAxYWIClYUFRGcSFXEgtUKSJ2I4qAouGdBiohai1VcOO4f3Ke1fXrv7e371/u855zn/M55zw+AERImkeaiagA5UoU8Otgfj09IxMm9gAIVSOAEIBDmy8JnBcUAAPADeXh+dLA//AGvbwACAHDVLiQSx+H/g7pQJlcAIJEA4CIS5wsBkFIAyC5UyBQAyBgAsFOzZAoAlAAAbHl8QiIAqg0A7PRJPgUA2KmT3BcA2KIcqQgAjQEAmShHJAJAuwBgVYFSLALAwgCgrEAiLgTArgGAWbYyRwKAvQUAdo5YkA9AYACAmUIszAAgOAIAQx4TzQMgTAOgMNK/4KlfcIW4SAEAwMuVzZdL0jMUuJXQGnfy8ODiIeLCbLFCYRcpEGYJ5CKcl5sjE0jnA0zODAAAGvnRwf44P5Dn5uTh5mbnbO/0xaL+a/BvIj4h8d/+vIwCBAAQTs/v2l/l5dYDcMcBsHW/a6lbANpWAGjf+V0z2wmgWgrQevmLeTj8QB6eoVDIPB0cCgsL7SViob0w44s+/zPhb+CLfvb8QB7+23rwAHGaQJmtwKOD/XFhbnauUo7nywRCMW735yP+x4V//Y4p0eI0sVwsFYrxWIm4UCJNx3m5UpFEIcmV4hLpfzLxH5b9CZN3DQCshk/ATrYHtctswH7uAQKLDljSdgBAfvMtjBoLkQAQZzQyefcAAJO/+Y9AKwEAzZek4wAAvOgYXKiUF0zGCAAARKCBKrBBBwzBFKzADpzBHbzAFwJhBkRADCTAPBBCBuSAHAqhGJZBGVTAOtgEtbADGqARmuEQtMExOA3n4BJcgetwFwZgGJ7CGLyGCQRByAgTYSE6iBFijtgizggXmY4EImFINJKApCDpiBRRIsXIcqQCqUJqkV1II/ItchQ5jVxA+pDbyCAyivyKvEcxlIGyUQPUAnVAuagfGorGoHPRdDQPXYCWomvRGrQePYC2oqfRS+h1dAB9io5jgNExDmaM2WFcjIdFYIlYGibHFmPlWDVWjzVjHVg3dhUbwJ5h7wgkAouAE+wIXoQQwmyCkJBHWExYQ6gl7CO0EroIVwmDhDHCJyKTqE+0JXoS+cR4YjqxkFhGrCbuIR4hniVeJw4TX5NIJA7JkuROCiElkDJJC0lrSNtILaRTpD7SEGmcTCbrkG3J3uQIsoCsIJeRt5APkE+S+8nD5LcUOsWI4kwJoiRSpJQSSjVlP+UEpZ8yQpmgqlHNqZ7UCKqIOp9aSW2gdlAvU4epEzR1miXNmxZDy6Qto9XQmmlnafdoL+l0ugndgx5Fl9CX0mvoB+nn6YP0dwwNhg2Dx0hiKBlrGXsZpxi3GS+ZTKYF05eZyFQw1zIbmWeYD5hvVVgq9ip8FZHKEpU6lVaVfpXnqlRVc1U/1XmqC1SrVQ+rXlZ9pkZVs1DjqQnUFqvVqR1Vu6k2rs5Sd1KPUM9RX6O+X/2C+mMNsoaFRqCGSKNUY7fGGY0hFsYyZfFYQtZyVgPrLGuYTWJbsvnsTHYF+xt2L3tMU0NzqmasZpFmneZxzQEOxrHg8DnZnErOIc4NznstAy0/LbHWaq1mrX6tN9p62r7aYu1y7Rbt69rvdXCdQJ0snfU6bTr3dQm6NrpRuoW623XP6j7TY+t56Qn1yvUO6d3RR/Vt9KP1F+rv1u/RHzcwNAg2kBlsMThj8MyQY+hrmGm40fCE4agRy2i6kcRoo9FJoye4Ju6HZ+M1eBc+ZqxvHGKsNN5l3Gs8YWJpMtukxKTF5L4pzZRrmma60bTTdMzMyCzcrNisyeyOOdWca55hvtm82/yNhaVFnMVKizaLx5balnzLBZZNlvesmFY+VnlW9VbXrEnWXOss623WV2xQG1ebDJs6m8u2qK2brcR2m23fFOIUjynSKfVTbtox7PzsCuya7AbtOfZh9iX2bfbPHcwcEh3WO3Q7fHJ0dcx2bHC866ThNMOpxKnD6VdnG2ehc53zNRemS5DLEpd2lxdTbaeKp26fesuV5RruutK10/Wjm7ub3K3ZbdTdzD3Ffav7TS6bG8ldwz3vQfTw91jicczjnaebp8LzkOcvXnZeWV77vR5Ps5wmntYwbcjbxFvgvct7YDo+PWX6zukDPsY+Ap96n4e+pr4i3z2+I37Wfpl+B/ye+zv6y/2P+L/hefIW8U4FYAHBAeUBvYEagbMDawMfBJkEpQc1BY0FuwYvDD4VQgwJDVkfcpNvwBfyG/ljM9xnLJrRFcoInRVaG/owzCZMHtYRjobPCN8Qfm+m+UzpzLYIiOBHbIi4H2kZmRf5fRQpKjKqLupRtFN0cXT3LNas5Fn7Z72O8Y+pjLk722q2cnZnrGpsUmxj7Ju4gLiquIF4h/hF8ZcSdBMkCe2J5MTYxD2J43MC52yaM5zkmlSWdGOu5dyiuRfm6c7Lnnc8WTVZkHw4hZgSl7I/5YMgQlAvGE/lp25NHRPyhJuFT0W+oo2iUbG3uEo8kuadVpX2ON07fUP6aIZPRnXGMwlPUit5kRmSuSPzTVZE1t6sz9lx2S05lJyUnKNSDWmWtCvXMLcot09mKyuTDeR55m3KG5OHyvfkI/lz89sVbIVM0aO0Uq5QDhZML6greFsYW3i4SL1IWtQz32b+6vkjC4IWfL2QsFC4sLPYuHhZ8eAiv0W7FiOLUxd3LjFdUrpkeGnw0n3LaMuylv1Q4lhSVfJqedzyjlKD0qWlQyuCVzSVqZTJy26u9Fq5YxVhlWRV72qX1VtWfyoXlV+scKyorviwRrjm4ldOX9V89Xlt2treSrfK7etI66Trbqz3Wb+vSr1qQdXQhvANrRvxjeUbX21K3nShemr1js20zcrNAzVhNe1bzLas2/KhNqP2ep1/XctW/a2rt77ZJtrWv913e/MOgx0VO97vlOy8tSt4V2u9RX31btLugt2PGmIbur/mft24R3dPxZ6Pe6V7B/ZF7+tqdG9s3K+/v7IJbVI2jR5IOnDlm4Bv2pvtmne1cFoqDsJB5cEn36Z8e+NQ6KHOw9zDzd+Zf7f1COtIeSvSOr91rC2jbaA9ob3v6IyjnR1eHUe+t/9+7zHjY3XHNY9XnqCdKD3x+eSCk+OnZKeenU4/PdSZ3Hn3TPyZa11RXb1nQ8+ePxd07ky3X/fJ897nj13wvHD0Ivdi2yW3S609rj1HfnD94UivW2/rZffL7Vc8rnT0Tes70e/Tf/pqwNVz1/jXLl2feb3vxuwbt24m3Ry4Jbr1+Hb27Rd3Cu5M3F16j3iv/L7a/eoH+g/qf7T+sWXAbeD4YMBgz8NZD+8OCYee/pT/04fh0kfMR9UjRiONj50fHxsNGr3yZM6T4aeypxPPyn5W/3nrc6vn3/3i+0vPWPzY8Av5i8+/rnmp83Lvq6mvOscjxx+8znk98ab8rc7bfe+477rfx70fmSj8QP5Q89H6Y8en0E/3Pud8/vwv94Tz+4A5JREAAAAZdEVYdFNvZnR3YXJlAEFkb2JlIEltYWdlUmVhZHlxyWU8AAADI2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS41LWMwMjEgNzkuMTU0OTExLCAyMDEzLzEwLzI5LTExOjQ3OjE2ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMiPiA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIiB4bWxuczp4bXA9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC8iIHhtbG5zOnhtcE1NPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvbW0vIiB4bWxuczpzdFJlZj0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL3NUeXBlL1Jlc291cmNlUmVmIyIgeG1wOkNyZWF0b3JUb29sPSJBZG9iZSBQaG90b3Nob3AgQ0MgKE1hY2ludG9zaCkiIHhtcE1NOkluc3RhbmNlSUQ9InhtcC5paWQ6REExMERGQjAyQjRFMTFFNTk1NEFFRDI5NURDMjU3RjkiIHhtcE1NOkRvY3VtZW50SUQ9InhtcC5kaWQ6REExMERGQjEyQjRFMTFFNTk1NEFFRDI5NURDMjU3RjkiPiA8eG1wTU06RGVyaXZlZEZyb20gc3RSZWY6aW5zdGFuY2VJRD0ieG1wLmlpZDpEQTEwREZBRTJCNEUxMUU1OTU0QUVEMjk1REMyNTdGOSIgc3RSZWY6ZG9jdW1lbnRJRD0ieG1wLmRpZDpEQTEwREZBRjJCNEUxMUU1OTU0QUVEMjk1REMyNTdGOSIvPiA8L3JkZjpEZXNjcmlwdGlvbj4gPC9yZGY6UkRGPiA8L3g6eG1wbWV0YT4gPD94cGFja2V0IGVuZD0iciI/Pv9I9jEAAAPSSURBVHjanFVtaBRHGJ6Z3b29vY/cV70knlGDmmiTEKtJtWLFIlUbBPGrKYWWUgotVPqj0EJbqiAi/hCqtH8CrahgQUVLoSJU8Yf4wwRTWmM0okma9EjueknW8/b2dm9vd/u+8e4w5yVeM9wMw8y+87zzPM+8R23bJhYhPCPEJITYpMI2JGdfvXRXPvQgoW3Wc7bok7h/Nyz2nN35sv+wS6BT+E1fXNu2wM0PUgT59X7y22qPMLi+zvVzJQA9UfXtru7EGdWwRAdHCaWEWJCpblpkVVi63RZx/9ITVTqrRG78843VO3iIod2jyu7RZHY1x2qM9oh0YS6AcSW3qqsn8aOWs0SRp8V1BlRIMDyc0Nr6YmrbkoA4tKc5+D3c5k2m5WyXZto+SIKcuBk7f7E/ecS0iTgbyPXB1EdPNNMrcHTGup3vPKx7RI5kDCt0qneiC3QwmJOnaa+DTTCI4WA4d2fyqwNXx3p7xzK7IYgvBRme0tsF9hSAlnSW75YFWXJM3f9aeG9T2Hlt+pDWWtdv/XGt3SFS4hIYGZb1pmM3Yhfrg+LAujr3ueZq1+8Lq4QBiSdT9Ok5sza8TRao2LLc+8OyoOMWrk2DdKz0fwcgHQOJzDq8LoqJH4/I+spHk9pBBycf9Ds5OSBx0Uk1V8fn98vRVZgDnZnCHq9kreCFPvkoZN098lhvhSycJE838i7kD0xqZkDO5AJIKbI1l9cx3O/kx4sgHgebAnoa4SabvCKbtmO5IHQP7E7P7RfwJYLaNV7hQdF5OGxd4fuJ5aML4tF5dIwz4d3BAxyKVJWAbFziPvNWo+9k2rAI/IrZz6cZIDoaBfyjzgDB9sHa0MefrA9/Ci4ahO+w1BTFrLRjnINjZFO95/SzwEUQzbC99+KZLVjD6DyugSFQBcjaRa5LBes+BwJFTUax7ie0BqD1f9MF5xOoVcq+luCB0r0ZD2tfs//r914JHcW5mrWIZVcmOCZlQF16d3Xoy4iX73/ulliFS1s8bTbejqZ3XXv0ZP9kOhcBmou2fdbCOMdEoBqTvS3BY50t/i/K3ZIvtwg+V+Dx1aR0M0zozNdceNE0Xz5Q7HdaQ0f2NPm+mY1K/p+k0ZLUrYWmZTviirH8biyztT+eeUPJmqITHhUrIw5WbB1EAA3j76956TP4ezg/l148ZJ2+87ey/cZw6sN4yqhCZ0lgcgQouAwZtWBAcXEt7OZjr9f7T25r8B33CDTxQucVNEll7QV/jqk7/hpXO6CGrXmsmbXZnC0hjiiwdMDJRZcGxD+gYl9urZWuFP5iK2n/CTAAI9eZoseqwB0AAAAASUVORK5CYII=\"\n\n//# sourceURL=webpack:///./src/images/twitterLogo.png?"); - -/***/ }), - /***/ "./src/reducers/auth.js": /*!******************************!*\ !*** ./src/reducers/auth.js ***! @@ -1525,7 +1582,7 @@ eval("module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABkAAAAUC /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar authReducer = function authReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGIN_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true,\n isAuthenticated: false,\n provider: action.payload.provider\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGIN_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n isAuthenticated: action.payload.token ? true : false,\n token: action.payload.token,\n user: action.payload.user\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGIN_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n isAuthenticated: false,\n error: action.payload.error,\n provider: null\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGOUT_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGOUT_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n isAuthenticated: false,\n provider: null,\n user: null,\n token: null\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_USER_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_USER_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n fetchedUserData: action.payload.json\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_USER_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_ROLE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_ROLE_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: action.payload.isFetching,\n user: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.user, {\n // merge roles into one array, regardless if they are one or many\n roles: [].concat(action.payload.json.data)\n })\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_ROLE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_NON_AUTH_ROLE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_NON_AUTH_ROLE_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n fetchedUserData: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.fetchedUserData, {\n // merge roles into one array, regardless if they are one or many\n roles: [].concat(action.payload.roles.data)\n })\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_NON_AUTH_ROLE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_PERMISSION_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_PERMISSION_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n user: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.user, {\n // merge permissions into one array, regardless if they are one or many\n permissions: [].concat(action.payload.permissions.data)\n })\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_PERMISSION_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (authReducer);\n\n//# sourceURL=webpack:///./src/reducers/auth.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar authReducer = function authReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGIN_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true,\n isAuthenticated: false,\n provider: action.payload.provider\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGIN_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n isAuthenticated: action.payload.token ? true : false,\n token: action.payload.token,\n user: action.payload.user,\n error: null\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGIN_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n isAuthenticated: false,\n error: action.payload.error,\n provider: null\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGOUT_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"LOGOUT_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n isAuthenticated: false,\n provider: null,\n user: null,\n token: null\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_USER_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_USER_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n fetchedUserData: action.payload.json\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_USER_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_ROLE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_ROLE_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: action.payload.isFetching,\n user: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.user, {\n // merge roles into one array, regardless if they are one or many\n roles: [].concat(action.payload.json.data)\n })\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_ROLE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_NON_AUTH_ROLE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_NON_AUTH_ROLE_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n fetchedUserData: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.fetchedUserData, {\n // merge roles into one array, regardless if they are one or many\n roles: [].concat(action.payload.roles.data)\n })\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_NON_AUTH_ROLE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_PERMISSION_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_PERMISSION_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n user: Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state.user, {\n // merge permissions into one array, regardless if they are one or many\n permissions: [].concat(action.payload.permissions.data)\n })\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"FETCH_PERMISSION_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (authReducer);\n\n//# sourceURL=webpack:///./src/reducers/auth.js?"); /***/ }), @@ -1549,19 +1606,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar initialState = {\n content: null,\n isFetching: false,\n error: null,\n currentFont: 0,\n currentFontSize: 2,\n currentFontColor: \"#000\"\n};\n\nvar editablePagesReducer = function editablePagesReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_PAGE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: true // eslint-disable-next-line\n\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_PAGE_SUCCESS\"]:\n var slugName = action.payload.json.data.attributes.slug;\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n isFetching: false\n }, slugName, action.payload.json));\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_PAGE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_PAGE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n content: action.payload.content\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PAGE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PAGE_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PAGE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (editablePagesReducer);\n\n//# sourceURL=webpack:///./src/reducers/editablePages.js?"); - -/***/ }), - -/***/ "./src/reducers/editorToolbar.js": -/*!***************************************!*\ - !*** ./src/reducers/editorToolbar.js ***! - \***************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\nvar initialState = {\n currentFont: 0,\n currentFontSize: 2,\n showHelpModal: false,\n showColorPicker: false,\n showTableOptions: false\n};\n\nvar editorToolbarReducer = function editorToolbarReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"CHANGE_FONT_SELECT\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n currentFont: action.payload.font\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"CHANGE_FONT_SIZE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n currentFontSize: action.payload.fontSize\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"SHOW_HELP_MODAL\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n showHelpModal: action.payload.bool\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"SHOW_COLOR_PICKER\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n showColorPicker: action.payload.bool\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_1__[\"SHOW_TABLE_OPTIONS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({}, state, {\n showTableOptions: action.payload.bool\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (editorToolbarReducer);\n\n//# sourceURL=webpack:///./src/reducers/editorToolbar.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar initialState = {\n content: null,\n isFetching: false,\n error: null\n};\n\nvar editablePagesReducer = function editablePagesReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_PAGE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_PAGE_SUCCESS\"]:\n var slugName = action.payload.json.data.attributes.slug;\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n isFetching: false\n }, slugName, action.payload.json));\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_PAGE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_PAGE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n content: action.payload.content\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PAGE_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PAGE_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: null\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_PAGE_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (editablePagesReducer);\n\n//# sourceURL=webpack:///./src/reducers/editablePages.js?"); /***/ }), @@ -1585,7 +1630,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var connected_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! connected-react-router */ \"./node_modules/connected-react-router/esm/index.js\");\n/* harmony import */ var reducers_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! reducers/auth */ \"./src/reducers/auth.js\");\n/* harmony import */ var reducers_downloads__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! reducers/downloads */ \"./src/reducers/downloads.js\");\n/* harmony import */ var reducers_editablePages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! reducers/editablePages */ \"./src/reducers/editablePages.js\");\n/* harmony import */ var reducers_editorToolbar__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! reducers/editorToolbar */ \"./src/reducers/editorToolbar.js\");\n/* harmony import */ var reducers_footer__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! reducers/footer */ \"./src/reducers/footer.js\");\n/* harmony import */ var reducers_news__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! reducers/news */ \"./src/reducers/news.js\");\n/* harmony import */ var reducers_navbar__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! reducers/navbar */ \"./src/reducers/navbar.js\");\n\n\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (history) {\n return Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"combineReducers\"])({\n router: Object(connected_react_router__WEBPACK_IMPORTED_MODULE_1__[\"connectRouter\"])(history),\n auth: reducers_auth__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n downloads: reducers_downloads__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n editablePages: reducers_editablePages__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n editorToolbar: reducers_editorToolbar__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n footer: reducers_footer__WEBPACK_IMPORTED_MODULE_6__[\"default\"],\n navbar: reducers_navbar__WEBPACK_IMPORTED_MODULE_8__[\"default\"],\n news: reducers_news__WEBPACK_IMPORTED_MODULE_7__[\"default\"]\n });\n});\n\n//# sourceURL=webpack:///./src/reducers/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var redux__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! redux */ \"./node_modules/redux/es/redux.js\");\n/* harmony import */ var connected_react_router__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! connected-react-router */ \"./node_modules/connected-react-router/esm/index.js\");\n/* harmony import */ var reducers_auth__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! reducers/auth */ \"./src/reducers/auth.js\");\n/* harmony import */ var reducers_downloads__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! reducers/downloads */ \"./src/reducers/downloads.js\");\n/* harmony import */ var reducers_editablePages__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! reducers/editablePages */ \"./src/reducers/editablePages.js\");\n/* harmony import */ var reducers_footer__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! reducers/footer */ \"./src/reducers/footer.js\");\n/* harmony import */ var reducers_navbar__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! reducers/navbar */ \"./src/reducers/navbar.js\");\n\n\n\n\n\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (function (history) {\n return Object(redux__WEBPACK_IMPORTED_MODULE_0__[\"combineReducers\"])({\n router: Object(connected_react_router__WEBPACK_IMPORTED_MODULE_1__[\"connectRouter\"])(history),\n auth: reducers_auth__WEBPACK_IMPORTED_MODULE_2__[\"default\"],\n downloads: reducers_downloads__WEBPACK_IMPORTED_MODULE_3__[\"default\"],\n editablePages: reducers_editablePages__WEBPACK_IMPORTED_MODULE_4__[\"default\"],\n footer: reducers_footer__WEBPACK_IMPORTED_MODULE_5__[\"default\"],\n navbar: reducers_navbar__WEBPACK_IMPORTED_MODULE_6__[\"default\"]\n });\n});\n\n//# sourceURL=webpack:///./src/reducers/index.js?"); /***/ }), @@ -1601,18 +1646,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ }), -/***/ "./src/reducers/news.js": -/*!******************************!*\ - !*** ./src/reducers/news.js ***! - \******************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/defineProperty.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectSpread.js\");\n/* harmony import */ var constants_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! constants/types */ \"./src/constants/types.js\");\n\n\n\nvar initialState = {\n content: null,\n isFetching: false,\n error: null\n};\n\nvar newsReducer = function newsReducer() {\n var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;\n var action = arguments.length > 1 ? arguments[1] : undefined;\n\n switch (action.type) {\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_NEWS_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_NEWS_SUCCESS\"]:\n var slugName = action.payload.json.data.attributes.slug;\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_defineProperty__WEBPACK_IMPORTED_MODULE_0__[\"default\"])({\n isFetching: false\n }, slugName, action.payload.json));\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"FETCH_NEWS_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"EDIT_NEWS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n content: action.payload.content\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_NEWS_REQUEST\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: true\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_NEWS_SUCCESS\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false\n });\n\n case constants_types__WEBPACK_IMPORTED_MODULE_2__[\"SAVE_NEWS_FAILURE\"]:\n return Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectSpread__WEBPACK_IMPORTED_MODULE_1__[\"default\"])({}, state, {\n isFetching: false,\n error: action.payload.error\n });\n\n default:\n return state;\n }\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (newsReducer);\n\n//# sourceURL=webpack:///./src/reducers/news.js?"); - -/***/ }), - /***/ "./src/styleguide/Wrapper.js": /*!***********************************!*\ !*** ./src/styleguide/Wrapper.js ***! @@ -1705,7 +1738,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StyledEditor\", function() { return StyledEditor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CancelButton\", function() { return CancelButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SaveButton\", function() { return SaveButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditorStyle\", function() { return EditorStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Toolbar\", function() { return Toolbar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolbarButton\", function() { return ToolbarButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Item\", function() { return Item; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Banner\", function() { return Banner; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Header\", function() { return Header; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hdrtxt\", function() { return Hdrtxt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InlineLink\", function() { return InlineLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextInfo\", function() { return TextInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolbarNav\", function() { return ToolbarNav; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Label\", function() { return Label; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\");\n/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__);\n\n\nfunction _templateObject14() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n display: inline;\\n padding: 0.2em 0.6em 0.3em;\\n font-size: 75%;\\n font-weight: bold;\\n line-height: 1;\\n color: #fff;\\n text-align: center;\\n white-space: nowrap;\\n vertical-align: baseline;\\n border-radius: 0.25em;\\n background-color: #337ab7;\\n &:hover {\\n background-color: #337ab7;\\n }\\n &:focus {\\n background-color: #337ab7;\\n }\\n\"]);\n\n _templateObject14 = function _templateObject14() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject13() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n background-color: #fafafa;\\n border-radius: 2px;\\n border: 1px solid #ddd;\\n padding: 9px;\\n width: 100%;\\n display: inline-block;\\n\"]);\n\n _templateObject13 = function _templateObject13() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject12() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n color: #31708f;\\n &:hover {\\n color: #245269;\\n }\\n &:focus {\\n color: #245269;\\n }\\n\"]);\n\n _templateObject12 = function _templateObject12() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject11() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n cursor: pointer;\\n\"]);\n\n _templateObject11 = function _templateObject11() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject10() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n font-size: 21px;\\n\"]);\n\n _templateObject10 = function _templateObject10() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject9() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n background-color: #f2f2f2;\\n @media (min-width: 768px) {\\n font-size: 63px;\\n padding: 2px;\\n margin: 2px;\\n }\\n\"]);\n\n _templateObject9 = function _templateObject9() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject8() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n min-height: 150px;\\n text-align: center;\\n padding: 48px 30px 48px 30px;\\n background-color: #eee;\\n\"]);\n\n _templateObject8 = function _templateObject8() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject7() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n width: 50%;\\n padding-left: 50px;\\n padding-bottom: 50px;\\n padding-right: 20px;\\n\\n @media (max-width: 767px) {\\n padding-left: 50px;\\n padding-bottom: 5px;\\n padding-right: 50px;\\n width: 100%;\\n }\\n\"]);\n\n _templateObject7 = function _templateObject7() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject6() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n color: #586069;\\n width: 50px;\\n cursor: pointer;\\n padding: 10px;\\n\\n &:hover {\\n color: #000;\\n }\\n\"]);\n\n _templateObject6 = function _templateObject6() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject5() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n position: relative;\\n padding: 20px 18px 17px;\\n border-bottom: 2px solid #d1d5da;\\n /* margin-bottom: 20px; */\\n background-color: #f1f8ff;\\n\"]);\n\n _templateObject5 = function _templateObject5() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject4() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n border: 1px solid #ddd;\\n cursor: text;\\n border-radius: 2px;\\n margin: 10px auto;\\n padding-bottom: 5px;\\n\"]);\n\n _templateObject4 = function _templateObject4() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject3() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n && {\\n width: 100%;\\n background-color: #15317e;\\n }\\n\"]);\n\n _templateObject3 = function _templateObject3() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject2() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n && {\\n width: 100%;\\n }\\n\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n padding: 15px;\\n min-height: 200px;\\n min-width: 800px;\\n line-height: 1.6;\\n color: \\\"rgba(0, 0, 0, 0.87)\\\";\\n\\n a {\\n color: #428bca;\\n text-decoration: none;\\n }\\n\\n table {\\n width: 100%;\\n border-collapse: collapse;\\n border-top: 1px solid #ccc;\\n }\\n\\n table tr {\\n border: none;\\n border-bottom: 1px solid #ccc;\\n border-right: 1px solid #ccc;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n }\\n\\n table td {\\n padding: 0.4rem 1.4rem 0.4rem 0.8rem;\\n border: 1px solid #ccc;\\n border-top: none;\\n border-bottom: none;\\n border-right: none;\\n flex: 1;\\n word-break: break-all;\\n position: relative;\\n }\\n\\n table td p {\\n margin: 0;\\n }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n\n\n\nvar StyledEditor = Object(styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(slate_react__WEBPACK_IMPORTED_MODULE_2__[\"Editor\"])(_templateObject());\nvar CancelButton = Object(styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default.a)(_templateObject2());\nvar SaveButton = Object(styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default.a)(_templateObject3());\nvar EditorStyle = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject4());\nvar Toolbar = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject5());\nvar ToolbarButton = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].span(_templateObject6());\nvar Item = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject7());\nvar Banner = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject8());\nvar Header = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].h1(_templateObject9());\nvar Hdrtxt = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].p(_templateObject10());\nvar InlineLink = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].a(_templateObject11());\nvar TextInfo = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].span(_templateObject12());\nvar ToolbarNav = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject13());\nvar Label = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].span(_templateObject14());\n\n//# sourceURL=webpack:///./src/styles/EditablePageStyles.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"StyledEditor\", function() { return StyledEditor; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"CancelButton\", function() { return CancelButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"SaveButton\", function() { return SaveButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"EditorStyle\", function() { return EditorStyle; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Toolbar\", function() { return Toolbar; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolbarButton\", function() { return ToolbarButton; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Item\", function() { return Item; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Banner\", function() { return Banner; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Header\", function() { return Header; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hdrtxt\", function() { return Hdrtxt; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"InlineLink\", function() { return InlineLink; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"TextInfo\", function() { return TextInfo; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"ToolbarNav\", function() { return ToolbarNav; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Label\", function() { return Label; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\");\n/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n/* harmony import */ var slate_react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! slate-react */ \"./node_modules/slate-react/lib/slate-react.es.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @material-ui/core/Button */ \"./node_modules/@material-ui/core/Button/index.js\");\n/* harmony import */ var _material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3__);\n\n\nfunction _templateObject14() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n display: inline;\\n padding: 0.2em 0.6em 0.3em;\\n font-size: 75%;\\n font-weight: bold;\\n line-height: 1;\\n color: #fff;\\n text-align: center;\\n white-space: nowrap;\\n vertical-align: baseline;\\n border-radius: 0.25em;\\n background-color: #337ab7;\\n &:hover {\\n background-color: #337ab7;\\n }\\n &:focus {\\n background-color: #337ab7;\\n }\\n\"]);\n\n _templateObject14 = function _templateObject14() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject13() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n background-color: #fafafa;\\n border-radius: 2px;\\n border: 1px solid #ddd;\\n padding: 9px;\\n width: 100%;\\n display: inline-block;\\n\"]);\n\n _templateObject13 = function _templateObject13() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject12() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n color: #31708f;\\n &:hover {\\n color: #245269;\\n }\\n &:focus {\\n color: #245269;\\n }\\n\"]);\n\n _templateObject12 = function _templateObject12() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject11() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n cursor: pointer;\\n\"]);\n\n _templateObject11 = function _templateObject11() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject10() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n font-size: 21px;\\n\"]);\n\n _templateObject10 = function _templateObject10() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject9() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n background-color: #f2f2f2;\\n @media (min-width: 768px) {\\n font-size: 63px;\\n padding: 2px;\\n margin: 2px;\\n }\\n\"]);\n\n _templateObject9 = function _templateObject9() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject8() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n min-height: 150px;\\n text-align: center;\\n padding: 48px 30px 48px 30px;\\n background-color: #eee;\\n\"]);\n\n _templateObject8 = function _templateObject8() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject7() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n width: 50%;\\n padding-left: 50px;\\n padding-bottom: 50px;\\n padding-right: 20px;\\n\\n @media (max-width: 767px) {\\n padding-left: 50px;\\n padding-bottom: 5px;\\n padding-right: 50px;\\n width: 100%;\\n }\\n\"]);\n\n _templateObject7 = function _templateObject7() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject6() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n color: #586069;\\n width: 50px;\\n cursor: pointer;\\n padding: 10px;\\n\\n &:hover {\\n color: #000;\\n }\\n\"]);\n\n _templateObject6 = function _templateObject6() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject5() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n position: relative;\\n padding: 20px 18px 17px;\\n border-bottom: 2px solid #d1d5da;\\n background-color: #f1f8ff;\\n\"]);\n\n _templateObject5 = function _templateObject5() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject4() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n border: 1px solid #ddd;\\n cursor: text;\\n border-radius: 2px;\\n margin: 10px auto;\\n padding-bottom: 5px;\\n\"]);\n\n _templateObject4 = function _templateObject4() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject3() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n && {\\n width: 100%;\\n background-color: #15317e;\\n }\\n\"]);\n\n _templateObject3 = function _templateObject3() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject2() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n && {\\n width: 100%;\\n }\\n\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n padding: 15px;\\n min-height: 200px;\\n min-width: 800px;\\n line-height: 1.6;\\n color: \\\"rgba(0, 0, 0, 0.87)\\\";\\n\\n a {\\n color: #428bca;\\n text-decoration: none;\\n }\\n\\n table {\\n width: 100%;\\n border-collapse: collapse;\\n border-top: 1px solid #ccc;\\n }\\n\\n table tr {\\n border: none;\\n border-bottom: 1px solid #ccc;\\n border-right: 1px solid #ccc;\\n display: flex;\\n flex-direction: row;\\n flex-wrap: nowrap;\\n }\\n\\n table td {\\n padding: 0.4rem 1.4rem 0.4rem 0.8rem;\\n border: 1px solid #ccc;\\n border-top: none;\\n border-bottom: none;\\n border-right: none;\\n flex: 1;\\n position: relative;\\n }\\n\\n table td p {\\n margin: 0;\\n }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n\n\n\nvar StyledEditor = Object(styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(slate_react__WEBPACK_IMPORTED_MODULE_2__[\"Editor\"])(_templateObject());\nvar CancelButton = Object(styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default.a)(_templateObject2());\nvar SaveButton = Object(styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"])(_material_ui_core_Button__WEBPACK_IMPORTED_MODULE_3___default.a)(_templateObject3());\nvar EditorStyle = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject4());\nvar Toolbar = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject5());\nvar ToolbarButton = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].span(_templateObject6());\nvar Item = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject7());\nvar Banner = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject8());\nvar Header = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].h1(_templateObject9());\nvar Hdrtxt = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].p(_templateObject10());\nvar InlineLink = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].a(_templateObject11());\nvar TextInfo = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].span(_templateObject12());\nvar ToolbarNav = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject13());\nvar Label = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].span(_templateObject14());\n\n//# sourceURL=webpack:///./src/styles/EditablePageStyles.js?"); /***/ }), @@ -1805,18 +1838,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ }), -/***/ "./src/styles/NewsContainer.js": -/*!*************************************!*\ - !*** ./src/styles/NewsContainer.js ***! - \*************************************/ -/*! exports provided: default */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js\");\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react */ \"./node_modules/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\n\n\nfunction _templateObject() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_1__[\"default\"])([\"\\n font-family: \\\"Helvetica Neue\\\", Helvetica, Arial, sans-serif;\\n line-height: 1.428;\\n text-align: left;\\n background-color: #f2f2f2;\\n border-radius: 15px;\\n margin-top: 10px;\\n margin-bottom: 10px;\\n height: 440px;\\n overflow: auto;\\n\\n @media (max-width: 768px) {\\n height: 350px;\\n }\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n\n\nvar NewsContainerStyle = styled_components__WEBPACK_IMPORTED_MODULE_3__[\"default\"].div(_templateObject());\n\nvar NewsContainer = function NewsContainer(_ref) {\n var children = _ref.children,\n props = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_objectWithoutProperties__WEBPACK_IMPORTED_MODULE_0__[\"default\"])(_ref, [\"children\"]);\n\n return react__WEBPACK_IMPORTED_MODULE_2___default.a.createElement(NewsContainerStyle, props, children);\n};\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (NewsContainer);\n\n//# sourceURL=webpack:///./src/styles/NewsContainer.js?"); - -/***/ }), - /***/ "./src/styles/NewsStockTitle.js": /*!**************************************!*\ !*** ./src/styles/NewsStockTitle.js ***! @@ -1829,18 +1850,6 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /***/ }), -/***/ "./src/styles/NewsStyles.js": -/*!**********************************!*\ - !*** ./src/styles/NewsStyles.js ***! - \**********************************/ -/*! exports provided: Banner, Header, Hdrtxt */ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -"use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Banner\", function() { return Banner; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Header\", function() { return Header; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"Hdrtxt\", function() { return Hdrtxt; });\n/* harmony import */ var _Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral */ \"./node_modules/babel-preset-react-app/node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js\");\n/* harmony import */ var styled_components__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! styled-components */ \"./node_modules/styled-components/dist/styled-components.es.js\");\n\n\nfunction _templateObject3() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n font-size: 21px;\\n\"]);\n\n _templateObject3 = function _templateObject3() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject2() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n @media (min-width: 768px) {\\n font-size: 63px;\\n padding: 2px;\\n margin: 2px;\\n }\\n\"]);\n\n _templateObject2 = function _templateObject2() {\n return data;\n };\n\n return data;\n}\n\nfunction _templateObject() {\n var data = Object(_Users_ech0266_Documents_Github_dicty_frontpage_node_modules_babel_preset_react_app_node_modules_babel_runtime_helpers_esm_taggedTemplateLiteral__WEBPACK_IMPORTED_MODULE_0__[\"default\"])([\"\\n min-height: 60px;\\n text-align: center;\\n padding: 48px 30px 30px 30px;\\n background-color: #eee;\\n margin-bottom: 30px;\\n\"]);\n\n _templateObject = function _templateObject() {\n return data;\n };\n\n return data;\n}\n\n\nvar Banner = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].div(_templateObject());\nvar Header = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].h1(_templateObject2());\nvar Hdrtxt = styled_components__WEBPACK_IMPORTED_MODULE_1__[\"default\"].p(_templateObject3());\n\n//# sourceURL=webpack:///./src/styles/NewsStyles.js?"); - -/***/ }), - /***/ "./src/styles/PaperContainer.js": /*!**************************************!*\ !*** ./src/styles/PaperContainer.js ***! @@ -2025,11 +2034,11 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _Use /*!*****************************!*\ !*** ./src/styles/index.js ***! \*****************************/ -/*! exports provided: NewsContainer, PaperContainer, AnnotationContainer, StockContainer, AnnotationHeader, StockHeader, StockSubHeader, StockTitle, AnnotationTitle, AnnotationSubTitle, AnnotationListItems, PaperTitle, Link, WidgetLink, Header, PopularHeader, ListBox, StockBox, WidgetListBox, ListItems, MoreLink, LeadText, SourceContent, MainContent, SourceTitle, NewsStockTitle, Img, WidgetImg, Danger, RouterLink */ +/*! exports provided: PaperContainer, AnnotationContainer, StockContainer, AnnotationHeader, StockHeader, StockSubHeader, StockTitle, AnnotationTitle, AnnotationSubTitle, AnnotationListItems, PaperTitle, Link, WidgetLink, Header, PopularHeader, ListBox, StockBox, WidgetListBox, ListItems, MoreLink, LeadText, SourceContent, MainContent, SourceTitle, NewsStockTitle, Img, WidgetImg, Danger, RouterLink */ /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _NewsContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./NewsContainer */ \"./src/styles/NewsContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NewsContainer\", function() { return _NewsContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _PaperContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./PaperContainer */ \"./src/styles/PaperContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PaperContainer\", function() { return _PaperContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _AnnotationContainer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./AnnotationContainer */ \"./src/styles/AnnotationContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationContainer\", function() { return _AnnotationContainer__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _StockContainer__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./StockContainer */ \"./src/styles/StockContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockContainer\", function() { return _StockContainer__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _AnnotationHeader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./AnnotationHeader */ \"./src/styles/AnnotationHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationHeader\", function() { return _AnnotationHeader__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _StockHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./StockHeader */ \"./src/styles/StockHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockHeader\", function() { return _StockHeader__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _StockSubHeader__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./StockSubHeader */ \"./src/styles/StockSubHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockSubHeader\", function() { return _StockSubHeader__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _StockTitle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./StockTitle */ \"./src/styles/StockTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockTitle\", function() { return _StockTitle__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _AnnotationTitle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./AnnotationTitle */ \"./src/styles/AnnotationTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationTitle\", function() { return _AnnotationTitle__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _AnnotationSubTitle__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./AnnotationSubTitle */ \"./src/styles/AnnotationSubTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationSubTitle\", function() { return _AnnotationSubTitle__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _AnnotationListItems__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./AnnotationListItems */ \"./src/styles/AnnotationListItems.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationListItems\", function() { return _AnnotationListItems__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _PaperTitle__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./PaperTitle */ \"./src/styles/PaperTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PaperTitle\", function() { return _PaperTitle__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./Link */ \"./src/styles/Link.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Link\", function() { return _Link__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _WidgetLink__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./WidgetLink */ \"./src/styles/WidgetLink.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WidgetLink\", function() { return _WidgetLink__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _Header__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./Header */ \"./src/styles/Header.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Header\", function() { return _Header__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _PopularHeader__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./PopularHeader */ \"./src/styles/PopularHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PopularHeader\", function() { return _PopularHeader__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _ListBox__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./ListBox */ \"./src/styles/ListBox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ListBox\", function() { return _ListBox__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _StockBox__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./StockBox */ \"./src/styles/StockBox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockBox\", function() { return _StockBox__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _WidgetListBox__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./WidgetListBox */ \"./src/styles/WidgetListBox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WidgetListBox\", function() { return _WidgetListBox__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _ListItems__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./ListItems */ \"./src/styles/ListItems.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ListItems\", function() { return _ListItems__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _MoreLink__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./MoreLink */ \"./src/styles/MoreLink.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MoreLink\", function() { return _MoreLink__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _LeadText__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./LeadText */ \"./src/styles/LeadText.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LeadText\", function() { return _LeadText__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _SourceContent__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./SourceContent */ \"./src/styles/SourceContent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SourceContent\", function() { return _SourceContent__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _MainContent__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./MainContent */ \"./src/styles/MainContent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MainContent\", function() { return _MainContent__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _SourceTitle__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./SourceTitle */ \"./src/styles/SourceTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SourceTitle\", function() { return _SourceTitle__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _NewsStockTitle__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./NewsStockTitle */ \"./src/styles/NewsStockTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NewsStockTitle\", function() { return _NewsStockTitle__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _Img__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./Img */ \"./src/styles/Img.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Img\", function() { return _Img__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _WidgetImg__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./WidgetImg */ \"./src/styles/WidgetImg.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WidgetImg\", function() { return _WidgetImg__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _Danger__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./Danger */ \"./src/styles/Danger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Danger\", function() { return _Danger__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n/* harmony import */ var _RouterLink__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! ./RouterLink */ \"./src/styles/RouterLink.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RouterLink\", function() { return _RouterLink__WEBPACK_IMPORTED_MODULE_29__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/styles/index.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony import */ var _PaperContainer__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./PaperContainer */ \"./src/styles/PaperContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PaperContainer\", function() { return _PaperContainer__WEBPACK_IMPORTED_MODULE_0__[\"default\"]; });\n\n/* harmony import */ var _AnnotationContainer__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./AnnotationContainer */ \"./src/styles/AnnotationContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationContainer\", function() { return _AnnotationContainer__WEBPACK_IMPORTED_MODULE_1__[\"default\"]; });\n\n/* harmony import */ var _StockContainer__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./StockContainer */ \"./src/styles/StockContainer.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockContainer\", function() { return _StockContainer__WEBPACK_IMPORTED_MODULE_2__[\"default\"]; });\n\n/* harmony import */ var _AnnotationHeader__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./AnnotationHeader */ \"./src/styles/AnnotationHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationHeader\", function() { return _AnnotationHeader__WEBPACK_IMPORTED_MODULE_3__[\"default\"]; });\n\n/* harmony import */ var _StockHeader__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./StockHeader */ \"./src/styles/StockHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockHeader\", function() { return _StockHeader__WEBPACK_IMPORTED_MODULE_4__[\"default\"]; });\n\n/* harmony import */ var _StockSubHeader__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./StockSubHeader */ \"./src/styles/StockSubHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockSubHeader\", function() { return _StockSubHeader__WEBPACK_IMPORTED_MODULE_5__[\"default\"]; });\n\n/* harmony import */ var _StockTitle__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./StockTitle */ \"./src/styles/StockTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockTitle\", function() { return _StockTitle__WEBPACK_IMPORTED_MODULE_6__[\"default\"]; });\n\n/* harmony import */ var _AnnotationTitle__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ./AnnotationTitle */ \"./src/styles/AnnotationTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationTitle\", function() { return _AnnotationTitle__WEBPACK_IMPORTED_MODULE_7__[\"default\"]; });\n\n/* harmony import */ var _AnnotationSubTitle__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ./AnnotationSubTitle */ \"./src/styles/AnnotationSubTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationSubTitle\", function() { return _AnnotationSubTitle__WEBPACK_IMPORTED_MODULE_8__[\"default\"]; });\n\n/* harmony import */ var _AnnotationListItems__WEBPACK_IMPORTED_MODULE_9__ = __webpack_require__(/*! ./AnnotationListItems */ \"./src/styles/AnnotationListItems.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"AnnotationListItems\", function() { return _AnnotationListItems__WEBPACK_IMPORTED_MODULE_9__[\"default\"]; });\n\n/* harmony import */ var _PaperTitle__WEBPACK_IMPORTED_MODULE_10__ = __webpack_require__(/*! ./PaperTitle */ \"./src/styles/PaperTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PaperTitle\", function() { return _PaperTitle__WEBPACK_IMPORTED_MODULE_10__[\"default\"]; });\n\n/* harmony import */ var _Link__WEBPACK_IMPORTED_MODULE_11__ = __webpack_require__(/*! ./Link */ \"./src/styles/Link.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Link\", function() { return _Link__WEBPACK_IMPORTED_MODULE_11__[\"default\"]; });\n\n/* harmony import */ var _WidgetLink__WEBPACK_IMPORTED_MODULE_12__ = __webpack_require__(/*! ./WidgetLink */ \"./src/styles/WidgetLink.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WidgetLink\", function() { return _WidgetLink__WEBPACK_IMPORTED_MODULE_12__[\"default\"]; });\n\n/* harmony import */ var _Header__WEBPACK_IMPORTED_MODULE_13__ = __webpack_require__(/*! ./Header */ \"./src/styles/Header.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Header\", function() { return _Header__WEBPACK_IMPORTED_MODULE_13__[\"default\"]; });\n\n/* harmony import */ var _PopularHeader__WEBPACK_IMPORTED_MODULE_14__ = __webpack_require__(/*! ./PopularHeader */ \"./src/styles/PopularHeader.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"PopularHeader\", function() { return _PopularHeader__WEBPACK_IMPORTED_MODULE_14__[\"default\"]; });\n\n/* harmony import */ var _ListBox__WEBPACK_IMPORTED_MODULE_15__ = __webpack_require__(/*! ./ListBox */ \"./src/styles/ListBox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ListBox\", function() { return _ListBox__WEBPACK_IMPORTED_MODULE_15__[\"default\"]; });\n\n/* harmony import */ var _StockBox__WEBPACK_IMPORTED_MODULE_16__ = __webpack_require__(/*! ./StockBox */ \"./src/styles/StockBox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"StockBox\", function() { return _StockBox__WEBPACK_IMPORTED_MODULE_16__[\"default\"]; });\n\n/* harmony import */ var _WidgetListBox__WEBPACK_IMPORTED_MODULE_17__ = __webpack_require__(/*! ./WidgetListBox */ \"./src/styles/WidgetListBox.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WidgetListBox\", function() { return _WidgetListBox__WEBPACK_IMPORTED_MODULE_17__[\"default\"]; });\n\n/* harmony import */ var _ListItems__WEBPACK_IMPORTED_MODULE_18__ = __webpack_require__(/*! ./ListItems */ \"./src/styles/ListItems.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"ListItems\", function() { return _ListItems__WEBPACK_IMPORTED_MODULE_18__[\"default\"]; });\n\n/* harmony import */ var _MoreLink__WEBPACK_IMPORTED_MODULE_19__ = __webpack_require__(/*! ./MoreLink */ \"./src/styles/MoreLink.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MoreLink\", function() { return _MoreLink__WEBPACK_IMPORTED_MODULE_19__[\"default\"]; });\n\n/* harmony import */ var _LeadText__WEBPACK_IMPORTED_MODULE_20__ = __webpack_require__(/*! ./LeadText */ \"./src/styles/LeadText.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"LeadText\", function() { return _LeadText__WEBPACK_IMPORTED_MODULE_20__[\"default\"]; });\n\n/* harmony import */ var _SourceContent__WEBPACK_IMPORTED_MODULE_21__ = __webpack_require__(/*! ./SourceContent */ \"./src/styles/SourceContent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SourceContent\", function() { return _SourceContent__WEBPACK_IMPORTED_MODULE_21__[\"default\"]; });\n\n/* harmony import */ var _MainContent__WEBPACK_IMPORTED_MODULE_22__ = __webpack_require__(/*! ./MainContent */ \"./src/styles/MainContent.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"MainContent\", function() { return _MainContent__WEBPACK_IMPORTED_MODULE_22__[\"default\"]; });\n\n/* harmony import */ var _SourceTitle__WEBPACK_IMPORTED_MODULE_23__ = __webpack_require__(/*! ./SourceTitle */ \"./src/styles/SourceTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"SourceTitle\", function() { return _SourceTitle__WEBPACK_IMPORTED_MODULE_23__[\"default\"]; });\n\n/* harmony import */ var _NewsStockTitle__WEBPACK_IMPORTED_MODULE_24__ = __webpack_require__(/*! ./NewsStockTitle */ \"./src/styles/NewsStockTitle.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"NewsStockTitle\", function() { return _NewsStockTitle__WEBPACK_IMPORTED_MODULE_24__[\"default\"]; });\n\n/* harmony import */ var _Img__WEBPACK_IMPORTED_MODULE_25__ = __webpack_require__(/*! ./Img */ \"./src/styles/Img.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Img\", function() { return _Img__WEBPACK_IMPORTED_MODULE_25__[\"default\"]; });\n\n/* harmony import */ var _WidgetImg__WEBPACK_IMPORTED_MODULE_26__ = __webpack_require__(/*! ./WidgetImg */ \"./src/styles/WidgetImg.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"WidgetImg\", function() { return _WidgetImg__WEBPACK_IMPORTED_MODULE_26__[\"default\"]; });\n\n/* harmony import */ var _Danger__WEBPACK_IMPORTED_MODULE_27__ = __webpack_require__(/*! ./Danger */ \"./src/styles/Danger.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"Danger\", function() { return _Danger__WEBPACK_IMPORTED_MODULE_27__[\"default\"]; });\n\n/* harmony import */ var _RouterLink__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! ./RouterLink */ \"./src/styles/RouterLink.js\");\n/* harmony reexport (safe) */ __webpack_require__.d(__webpack_exports__, \"RouterLink\", function() { return _RouterLink__WEBPACK_IMPORTED_MODULE_28__[\"default\"]; });\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n\n//# sourceURL=webpack:///./src/styles/index.js?"); /***/ }), @@ -2065,7 +2074,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) * /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\nvar clientConfig = {\n google: {\n clientId: \"xxxxxxxxxxxxxxxxxx\"\n },\n linkedin: {\n clientId: \"xxxxxxxxxxxxxxxxxx\"\n },\n orcid: {\n clientId: \"APP-Y35D1DVLCC4PL0JL\"\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clientConfig);\n\n//# sourceURL=webpack:///./src/utils/clientConfig.js?"); +eval("__webpack_require__.r(__webpack_exports__);\nvar clientConfig = {\n google: {\n clientId: \"660971614503-m99u7c1ro8u3uen5jft26l5qbnd078d7.apps.googleusercontent.com\"\n },\n linkedin: {\n clientId: \"77e54p8xh4n77e\"\n },\n orcid: {\n clientId: \"APP-WMS3MZZ97UNRSK2O\"\n },\n facebook: {\n clientId: \"xxxxxxxxxxxxxxxxxx\"\n }\n};\n/* harmony default export */ __webpack_exports__[\"default\"] = (clientConfig);\n\n//# sourceURL=webpack:///./src/utils/clientConfig.js?"); /***/ }), @@ -2077,7 +2086,7 @@ eval("__webpack_require__.r(__webpack_exports__);\nvar clientConfig = {\n googl /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchBySlugResource\", function() { return fetchBySlugResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchByIdResource\", function() { return fetchByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchUserByIdResource\", function() { return fetchUserByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchUserByEmailResource\", function() { return fetchUserByEmailResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchRoleByIdResource\", function() { return fetchRoleByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchPermissionByIdResource\", function() { return fetchPermissionByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"oauthEndpointResource\", function() { return oauthEndpointResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchHeaderConfig\", function() { return fetchHeaderConfig; });\nvar fetchBySlugResource, fetchByIdResource, fetchUserByIdResource, fetchUserByEmailResource, fetchRoleByIdResource, fetchPermissionByIdResource, oauthEndpointResource;\n\nif (true) {\n // set URL base for fetching by slug\n var fetchBySlugBase = \"/contents/slug\";\n fetchBySlugResource = \"\".concat(\"https://betaapi.dictybase.local\").concat(fetchBySlugBase); // set URL base for fetching by ID\n\n var fetchByIdBase = \"/contents\";\n fetchByIdResource = \"\".concat(\"https://betaapi.dictybase.local\").concat(fetchByIdBase); // set URL base for fetching user by ID\n\n var fetchUserByIdBase = \"/users\";\n fetchUserByIdResource = \"\".concat(\"https://betaapi.dictybase.local\").concat(fetchUserByIdBase); // set URL base for fetching user by email\n\n var fetchUserByEmailBase = \"/users/email\";\n fetchUserByEmailResource = \"\".concat(\"https://betaapi.dictybase.local\").concat(fetchUserByEmailBase); // set URL base for fetching role by ID\n\n var fetchRoleByIdBase = \"/roles\";\n fetchRoleByIdResource = \"\".concat(\"https://betaapi.dictybase.local\").concat(fetchRoleByIdBase); // set URL base for fetching permission by ID\n\n var fetchPermissionByIdBase = \"/permissions\";\n fetchPermissionByIdResource = \"\".concat(\"https://betaapi.dictybase.local\").concat(fetchPermissionByIdBase);\n} else {}\n\nif (true) {\n var oauthEndpointBase = \"/tokens\";\n oauthEndpointResource = \"\".concat(\"https://betatoken.dictybase.local\").concat(oauthEndpointBase);\n} else {}\n\nvar fetchHeaderConfig = {\n headers: {\n \"content-type\": \"application/vnd.api+json\"\n }\n};\n\n\n//# sourceURL=webpack:///./src/utils/fetchResources.js?"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchBySlugResource\", function() { return fetchBySlugResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchByIdResource\", function() { return fetchByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchUserByIdResource\", function() { return fetchUserByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchUserByEmailResource\", function() { return fetchUserByEmailResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchRoleByIdResource\", function() { return fetchRoleByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchPermissionByIdResource\", function() { return fetchPermissionByIdResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"oauthEndpointResource\", function() { return oauthEndpointResource; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"fetchHeaderConfig\", function() { return fetchHeaderConfig; });\nvar fetchBySlugResource, fetchByIdResource, fetchUserByIdResource, fetchUserByEmailResource, fetchRoleByIdResource, fetchPermissionByIdResource, oauthEndpointResource;\n\nif (true) {\n // set URL base for fetching by slug\n var fetchBySlugBase = \"/contents/slug\";\n fetchBySlugResource = \"\".concat(\"https://betaapi.dictybase.org\").concat(fetchBySlugBase); // set URL base for fetching by ID\n\n var fetchByIdBase = \"/contents\";\n fetchByIdResource = \"\".concat(\"https://betaapi.dictybase.org\").concat(fetchByIdBase); // set URL base for fetching user by ID\n\n var fetchUserByIdBase = \"/users\";\n fetchUserByIdResource = \"\".concat(\"https://betaapi.dictybase.org\").concat(fetchUserByIdBase); // set URL base for fetching user by email\n\n var fetchUserByEmailBase = \"/users/email\";\n fetchUserByEmailResource = \"\".concat(\"https://betaapi.dictybase.org\").concat(fetchUserByEmailBase); // set URL base for fetching role by ID\n\n var fetchRoleByIdBase = \"/roles\";\n fetchRoleByIdResource = \"\".concat(\"https://betaapi.dictybase.org\").concat(fetchRoleByIdBase); // set URL base for fetching permission by ID\n\n var fetchPermissionByIdBase = \"/permissions\";\n fetchPermissionByIdResource = \"\".concat(\"https://betaapi.dictybase.org\").concat(fetchPermissionByIdBase);\n} else {}\n\nif (true) {\n var oauthEndpointBase = \"/tokens\";\n oauthEndpointResource = \"\".concat(\"https://betatoken.dictybase.org\").concat(oauthEndpointBase);\n} else {}\n\nvar fetchHeaderConfig = {\n headers: {\n \"content-type\": \"application/vnd.api+json\"\n }\n};\n\n\n//# sourceURL=webpack:///./src/utils/fetchResources.js?"); /***/ }), diff --git a/docs/index.html b/docs/index.html index 1395f326e..96c1dd3df 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -Dicty Frontpage Style Guide
\ No newline at end of file +Dicty Frontpage Style Guide
\ No newline at end of file diff --git a/src/reducers/editablePages.js b/src/reducers/editablePages.js index 7751caba6..622394996 100644 --- a/src/reducers/editablePages.js +++ b/src/reducers/editablePages.js @@ -13,9 +13,6 @@ const initialState = { content: null, isFetching: false, error: null, - currentFont: 0, - currentFontSize: 2, - currentFontColor: "#000", } const editablePagesReducer = (state: Object = initialState, action: Object) => { @@ -25,7 +22,6 @@ const editablePagesReducer = (state: Object = initialState, action: Object) => { ...state, isFetching: true, } - // eslint-disable-next-line case FETCH_PAGE_SUCCESS: const slugName = action.payload.json.data.attributes.slug return { @@ -53,6 +49,7 @@ const editablePagesReducer = (state: Object = initialState, action: Object) => { return { ...state, isFetching: false, + error: null, } case SAVE_PAGE_FAILURE: return {