{"version":3,"file":"js/596-86439de6fd1dfc1d2d14.js","mappings":"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","sources":["webpack://ventures_nest/./node_modules/actioncable-vue/dist/actioncablevue.js","webpack://ventures_nest/./node_modules/trix/dist/trix.js"],"sourcesContent":["!function(t,e){\"object\"==typeof exports&&\"object\"==typeof module?module.exports=e():\"function\"==typeof define&&define.amd?define([],e):\"object\"==typeof exports?exports.ActionCableVue=e():t.ActionCableVue=e()}(\"undefined\"!=typeof self?self:this,(function(){return function(t){var e={};function n(o){if(e[o])return e[o].exports;var i=e[o]={i:o,l:!1,exports:{}};return t[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=t,n.c=e,n.d=function(t,e,o){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:o})},n.r=function(t){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(t,\"__esModule\",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&\"object\"==typeof t&&t&&t.__esModule)return t;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,\"default\",{enumerable:!0,value:t}),2&e&&\"string\"!=typeof t)for(var i in t)n.d(o,i,function(e){return t[e]}.bind(null,i));return o},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,\"a\",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p=\"\",n(n.s=1)}([function(t,e,n){!function(t){\"use strict\";var e={logger:self.console,WebSocket:self.WebSocket},n={log:function(){if(this.enabled){for(var t,n=arguments.length,o=Array(n),i=0;ithis.constructor.staleThreshold},t.prototype.disconnectedRecently=function(){return this.disconnectedAt&&s(this.disconnectedAt)0&&void 0!==arguments[0]?arguments[0]:{allowReconnect:!0},e=t.allowReconnect;if(e||this.monitor.stop(),this.isActive())return this.webSocket.close()},t.prototype.reopen=function(){if(n.log(\"Reopening WebSocket, current state is \"+this.getState()),!this.isActive())return this.open();try{return this.close()}catch(t){n.log(\"Failed to reopen WebSocket\",t)}finally{n.log(\"Reopening WebSocket in \"+this.constructor.reopenDelay+\"ms\"),setTimeout(this.open,this.constructor.reopenDelay)}},t.prototype.getProtocol=function(){if(this.webSocket)return this.webSocket.protocol},t.prototype.isOpen=function(){return this.isState(\"open\")},t.prototype.isActive=function(){return this.isState(\"open\",\"connecting\")},t.prototype.isProtocolSupported=function(){return p.call(f,this.getProtocol())>=0},t.prototype.isState=function(){for(var t=arguments.length,e=Array(t),n=0;n=0},t.prototype.getState=function(){if(this.webSocket)for(var t in e.WebSocket)if(e.WebSocket[t]===this.webSocket.readyState)return t.toLowerCase();return null},t.prototype.installEventHandlers=function(){for(var t in this.events){var e=this.events[t].bind(this);this.webSocket[\"on\"+t]=e}},t.prototype.uninstallEventHandlers=function(){for(var t in this.events)this.webSocket[\"on\"+t]=function(){}},t}();d.reopenDelay=500,d.prototype.events={message:function(t){if(this.isProtocolSupported()){var e=JSON.parse(t.data),o=e.identifier,i=e.message,r=e.reason,c=e.reconnect;switch(e.type){case a.welcome:return this.monitor.recordConnect(),this.subscriptions.reload();case a.disconnect:return n.log(\"Disconnecting. Reason: \"+r),this.close({allowReconnect:c});case a.ping:return this.monitor.recordPing();case a.confirmation:return this.subscriptions.notify(o,\"connected\");case a.rejection:return this.subscriptions.reject(o);default:return this.subscriptions.notify(o,\"received\",i)}}},open:function(){if(n.log(\"WebSocket onopen event, using '\"+this.getProtocol()+\"' subprotocol\"),this.disconnected=!1,!this.isProtocolSupported())return n.log(\"Protocol is unsupported. Stopping monitor and disconnecting.\"),this.close({allowReconnect:!1})},close:function(t){if(n.log(\"WebSocket onclose event\"),!this.disconnected)return this.disconnected=!0,this.monitor.recordDisconnect(),this.subscriptions.notifyAll(\"disconnected\",{willAttemptReconnect:this.monitor.isRunning()})},error:function(){n.log(\"WebSocket onerror event\")}};var b=function(t,e){if(null!=e)for(var n in e){var o=e[n];t[n]=o}return t},y=function(){function t(e){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},o=arguments[2];i(this,t),this.consumer=e,this.identifier=JSON.stringify(n),b(this,o)}return t.prototype.perform=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};return e.action=t,this.send(e)},t.prototype.send=function(t){return this.consumer.send({command:\"message\",identifier:this.identifier,data:JSON.stringify(t)})},t.prototype.unsubscribe=function(){return this.consumer.subscriptions.remove(this)},t}(),g=function(){function t(e){i(this,t),this.consumer=e,this.subscriptions=[]}return t.prototype.create=function(t,e){var n=t,i=\"object\"===(void 0===n?\"undefined\":o(n))?n:{channel:n},r=new y(this.consumer,i,e);return this.add(r)},t.prototype.add=function(t){return this.subscriptions.push(t),this.consumer.ensureActiveConnection(),this.notify(t,\"initialized\"),this.sendCommand(t,\"subscribe\"),t},t.prototype.remove=function(t){return this.forget(t),this.findAll(t.identifier).length||this.sendCommand(t,\"unsubscribe\"),t},t.prototype.reject=function(t){var e=this;return this.findAll(t).map((function(t){return e.forget(t),e.notify(t,\"rejected\"),t}))},t.prototype.forget=function(t){return this.subscriptions=this.subscriptions.filter((function(e){return e!==t})),t},t.prototype.findAll=function(t){return this.subscriptions.filter((function(e){return e.identifier===t}))},t.prototype.reload=function(){var t=this;return this.subscriptions.map((function(e){return t.sendCommand(e,\"subscribe\")}))},t.prototype.notifyAll=function(t){for(var e=this,n=arguments.length,o=Array(n>1?n-1:0),i=1;i2?n-2:0),i=2;i0&&void 0!==arguments[0]?arguments[0]:_(\"url\")||u.default_mount_path;return new v(t)},t.getConfig=_,Object.defineProperty(t,\"__esModule\",{value:!0})}(e)},function(t,e,n){t.exports=n(2)},function(t,e,n){\"use strict\";n.r(e);var o=n(0);function i(t,e){for(var n=0;n1&&void 0!==arguments[1]?arguments[1]:\"error\";this._debug&&(\"all\"===this._debugLevel||e===this._debugLevel)&&console.log(t)}}])&&i(e.prototype,n),o&&i(e,o),t}();function s(t){return(s=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&\"function\"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?\"symbol\":typeof t})(t)}var l=function(){var t,e,n,o;Object.keys||(Object.keys=(t=Object.prototype.hasOwnProperty,e=Object.prototype.propertyIsEnumerable.call(!1,\"toString\"),o=(n=[\"toString\",\"toLocaleString\",\"valueOf\",\"hasOwnProperty\",\"isPrototypeOf\",\"propertyIsEnumerable\",\"constructor\"]).length,function(i){if(\"function\"!=typeof i&&(\"object\"!==s(i)||null===i))throw new TypeError(\"Object.keys called on non-object\");var r,c,l=[];for(r in i)t.call(i,r)&&l.push(r);if(e)for(c=0;c0&&void 0!==arguments[0]?arguments[0]:null;e&&(t._connectionUrl=e),t._cable?t._cable.connect():t._connect(e||t._connectionUrl),t._isReset&&t._resubscribe()},disconnect:function(){t._cable&&(t._cable.disconnect(),t._isReset=!0,t._reset())}}}},{key:\"_addChannel\",value:function(t,e,n){e._uid=n._uid,e._name=t,this._channels[t]||(this._channels[t]=[]),this._addContext(n),!this._channels[t].find((function(t){return t._uid===n._uid}))&&this._contexts[n._uid]&&this._channels[t].push(e)}},{key:\"_addContext\",value:function(t){this._contexts[t._uid]={context:t}}},{key:\"_removeChannel\",value:function(t,e){this._channels[t]&&(this._channels[t].splice(this._channels[t].findIndex((function(t){return t._uid===e})),1),delete this._contexts[e],0===this._channels[t].length&&this._channels.subscriptions[t]&&(this._channels.subscriptions[t].unsubscribe(),delete this._channels.subscriptions[t]),this._logger.log(\"Unsubscribed from channel '\".concat(t,\"'.\"),\"info\"))}},{key:\"_fireChannelEvent\",value:function(t,e,n){if(Object.prototype.hasOwnProperty.call(this._channels,t))for(var o=this._channels[t],i=0;i {\n var _element$tagName;\n\n return element === null || element === void 0 ? void 0 : (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase();\n};\n\nvar browser$1 = {\n // Android emits composition events when moving the cursor through existing text\n // Introduced in Chrome 65: https://bugs.chromium.org/p/chromium/issues/detail?id=764439#c9\n composesExistingText: /Android.*Chrome/.test(navigator.userAgent),\n // IE 11 activates resizing handles on editable elements that have \"layout\"\n forcesObjectResizing: /Trident.*rv:11/.test(navigator.userAgent),\n // https://www.w3.org/TR/input-events-1/ + https://www.w3.org/TR/input-events-2/\n supportsInputEvents: function () {\n if (typeof InputEvent === \"undefined\") {\n return false;\n }\n\n for (const property of [\"data\", \"getTargetRanges\", \"inputType\"]) {\n if (!(property in InputEvent.prototype)) {\n return false;\n }\n }\n\n return true;\n }()\n};\n\nvar css$3 = {\n attachment: \"attachment\",\n attachmentCaption: \"attachment__caption\",\n attachmentCaptionEditor: \"attachment__caption-editor\",\n attachmentMetadata: \"attachment__metadata\",\n attachmentMetadataContainer: \"attachment__metadata-container\",\n attachmentName: \"attachment__name\",\n attachmentProgress: \"attachment__progress\",\n attachmentSize: \"attachment__size\",\n attachmentToolbar: \"attachment__toolbar\",\n attachmentGallery: \"attachment-gallery\"\n};\n\nvar lang$1 = {\n attachFiles: \"Attach Files\",\n bold: \"Bold\",\n bullets: \"Bullets\",\n byte: \"Byte\",\n bytes: \"Bytes\",\n captionPlaceholder: \"Add a caption…\",\n code: \"Code\",\n heading1: \"Heading\",\n indent: \"Increase Level\",\n italic: \"Italic\",\n link: \"Link\",\n numbers: \"Numbers\",\n outdent: \"Decrease Level\",\n quote: \"Quote\",\n redo: \"Redo\",\n remove: \"Remove\",\n strike: \"Strikethrough\",\n undo: \"Undo\",\n unlink: \"Unlink\",\n url: \"URL\",\n urlPlaceholder: \"Enter a URL…\",\n GB: \"GB\",\n KB: \"KB\",\n MB: \"MB\",\n PB: \"PB\",\n TB: \"TB\"\n};\n\n/* eslint-disable\n no-case-declarations,\n*/\nconst sizes = [lang$1.bytes, lang$1.KB, lang$1.MB, lang$1.GB, lang$1.TB, lang$1.PB];\nvar fileSize = {\n prefix: \"IEC\",\n precision: 2,\n\n formatter(number) {\n switch (number) {\n case 0:\n return \"0 \".concat(lang$1.bytes);\n\n case 1:\n return \"1 \".concat(lang$1.byte);\n\n default:\n let base;\n\n if (this.prefix === \"SI\") {\n base = 1000;\n } else if (this.prefix === \"IEC\") {\n base = 1024;\n }\n\n const exp = Math.floor(Math.log(number) / Math.log(base));\n const humanSize = number / Math.pow(base, exp);\n const string = humanSize.toFixed(this.precision);\n const withoutInsignificantZeros = string.replace(/0*$/, \"\").replace(/\\.$/, \"\");\n return \"\".concat(withoutInsignificantZeros, \" \").concat(sizes[exp]);\n }\n }\n\n};\n\nconst ZERO_WIDTH_SPACE = \"\\uFEFF\";\nconst NON_BREAKING_SPACE = \"\\u00A0\";\nconst OBJECT_REPLACEMENT_CHARACTER = \"\\uFFFC\";\n\nconst extend = function (properties) {\n for (const key in properties) {\n const value = properties[key];\n this[key] = value;\n }\n\n return this;\n};\n\nconst html = document.documentElement;\nconst match = html.matches;\nconst handleEvent = function (eventName) {\n let {\n onElement,\n matchingSelector,\n withCallback,\n inPhase,\n preventDefault,\n times\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const element = onElement ? onElement : html;\n const selector = matchingSelector;\n const useCapture = inPhase === \"capturing\";\n\n const handler = function (event) {\n if (times != null && --times === 0) {\n handler.destroy();\n }\n\n const target = findClosestElementFromNode(event.target, {\n matchingSelector: selector\n });\n\n if (target != null) {\n withCallback === null || withCallback === void 0 ? void 0 : withCallback.call(target, event, target);\n\n if (preventDefault) {\n event.preventDefault();\n }\n }\n };\n\n handler.destroy = () => element.removeEventListener(eventName, handler, useCapture);\n\n element.addEventListener(eventName, handler, useCapture);\n return handler;\n};\nconst handleEventOnce = function (eventName) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n options.times = 1;\n return handleEvent(eventName, options);\n};\nconst triggerEvent = function (eventName) {\n let {\n onElement,\n bubbles,\n cancelable,\n attributes\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const element = onElement != null ? onElement : html;\n bubbles = bubbles !== false;\n cancelable = cancelable !== false;\n const event = document.createEvent(\"Events\");\n event.initEvent(eventName, bubbles, cancelable);\n\n if (attributes != null) {\n extend.call(event, attributes);\n }\n\n return element.dispatchEvent(event);\n};\nconst elementMatchesSelector = function (element, selector) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) === 1) {\n return match.call(element, selector);\n }\n};\nconst findClosestElementFromNode = function (node) {\n let {\n matchingSelector,\n untilNode\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n while (node && node.nodeType !== Node.ELEMENT_NODE) {\n node = node.parentNode;\n }\n\n if (node == null) {\n return;\n }\n\n if (matchingSelector != null) {\n if (node.closest && untilNode == null) {\n return node.closest(matchingSelector);\n } else {\n while (node && node !== untilNode) {\n if (elementMatchesSelector(node, matchingSelector)) {\n return node;\n }\n\n node = node.parentNode;\n }\n }\n } else {\n return node;\n }\n};\nconst findInnerElement = function (element) {\n while ((_element = element) !== null && _element !== void 0 && _element.firstElementChild) {\n var _element;\n\n element = element.firstElementChild;\n }\n\n return element;\n};\nconst innerElementIsActive = element => document.activeElement !== element && elementContainsNode(element, document.activeElement);\nconst elementContainsNode = function (element, node) {\n if (!element || !node) {\n return;\n }\n\n while (node) {\n if (node === element) {\n return true;\n }\n\n node = node.parentNode;\n }\n};\nconst findNodeFromContainerAndOffset = function (container, offset) {\n if (!container) {\n return;\n }\n\n if (container.nodeType === Node.TEXT_NODE) {\n return container;\n } else if (offset === 0) {\n return container.firstChild != null ? container.firstChild : container;\n } else {\n return container.childNodes.item(offset - 1);\n }\n};\nconst findElementFromContainerAndOffset = function (container, offset) {\n const node = findNodeFromContainerAndOffset(container, offset);\n return findClosestElementFromNode(node);\n};\nconst findChildIndexOfNode = function (node) {\n var _node;\n\n if (!((_node = node) !== null && _node !== void 0 && _node.parentNode)) {\n return;\n }\n\n let childIndex = 0;\n node = node.previousSibling;\n\n while (node) {\n childIndex++;\n node = node.previousSibling;\n }\n\n return childIndex;\n};\nconst removeNode = node => {\n var _node$parentNode;\n\n return node === null || node === void 0 ? void 0 : (_node$parentNode = node.parentNode) === null || _node$parentNode === void 0 ? void 0 : _node$parentNode.removeChild(node);\n};\nconst walkTree = function (tree) {\n let {\n onlyNodesOfType,\n usingFilter,\n expandEntityReferences\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n const whatToShow = (() => {\n switch (onlyNodesOfType) {\n case \"element\":\n return NodeFilter.SHOW_ELEMENT;\n\n case \"text\":\n return NodeFilter.SHOW_TEXT;\n\n case \"comment\":\n return NodeFilter.SHOW_COMMENT;\n\n default:\n return NodeFilter.SHOW_ALL;\n }\n })();\n\n return document.createTreeWalker(tree, whatToShow, usingFilter != null ? usingFilter : null, expandEntityReferences === true);\n};\nconst tagName = element => {\n var _element$tagName;\n\n return element === null || element === void 0 ? void 0 : (_element$tagName = element.tagName) === null || _element$tagName === void 0 ? void 0 : _element$tagName.toLowerCase();\n};\nconst makeElement = function (tag) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let key, value;\n\n if (typeof tag === \"object\") {\n options = tag;\n tag = options.tagName;\n } else {\n options = {\n attributes: options\n };\n }\n\n const element = document.createElement(tag);\n\n if (options.editable != null) {\n if (options.attributes == null) {\n options.attributes = {};\n }\n\n options.attributes.contenteditable = options.editable;\n }\n\n if (options.attributes) {\n for (key in options.attributes) {\n value = options.attributes[key];\n element.setAttribute(key, value);\n }\n }\n\n if (options.style) {\n for (key in options.style) {\n value = options.style[key];\n element.style[key] = value;\n }\n }\n\n if (options.data) {\n for (key in options.data) {\n value = options.data[key];\n element.dataset[key] = value;\n }\n }\n\n if (options.className) {\n options.className.split(\" \").forEach(className => {\n element.classList.add(className);\n });\n }\n\n if (options.textContent) {\n element.textContent = options.textContent;\n }\n\n if (options.childNodes) {\n [].concat(options.childNodes).forEach(childNode => {\n element.appendChild(childNode);\n });\n }\n\n return element;\n};\nlet blockTagNames = undefined;\nconst getBlockTagNames = function () {\n if (blockTagNames != null) {\n return blockTagNames;\n }\n\n blockTagNames = [];\n\n for (const key in attributes) {\n const attributes$1 = attributes[key];\n\n if (attributes$1.tagName) {\n blockTagNames.push(attributes$1.tagName);\n }\n }\n\n return blockTagNames;\n};\nconst nodeIsBlockContainer = node => nodeIsBlockStartComment(node === null || node === void 0 ? void 0 : node.firstChild);\nconst nodeProbablyIsBlockContainer = function (node) {\n return getBlockTagNames().includes(tagName(node)) && !getBlockTagNames().includes(tagName(node.firstChild));\n};\nconst nodeIsBlockStart = function (node) {\n let {\n strict\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n strict: true\n };\n\n if (strict) {\n return nodeIsBlockStartComment(node);\n } else {\n return nodeIsBlockStartComment(node) || !nodeIsBlockStartComment(node.firstChild) && nodeProbablyIsBlockContainer(node);\n }\n};\nconst nodeIsBlockStartComment = node => nodeIsCommentNode(node) && (node === null || node === void 0 ? void 0 : node.data) === \"block\";\nconst nodeIsCommentNode = node => (node === null || node === void 0 ? void 0 : node.nodeType) === Node.COMMENT_NODE;\nconst nodeIsCursorTarget = function (node) {\n let {\n name\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (!node) {\n return;\n }\n\n if (nodeIsTextNode(node)) {\n if (node.data === ZERO_WIDTH_SPACE) {\n if (name) {\n return node.parentNode.dataset.trixCursorTarget === name;\n } else {\n return true;\n }\n }\n } else {\n return nodeIsCursorTarget(node.firstChild);\n }\n};\nconst nodeIsAttachmentElement = node => elementMatchesSelector(node, attachmentSelector);\nconst nodeIsEmptyTextNode = node => nodeIsTextNode(node) && (node === null || node === void 0 ? void 0 : node.data) === \"\";\nconst nodeIsTextNode = node => (node === null || node === void 0 ? void 0 : node.nodeType) === Node.TEXT_NODE;\n\nconst input = {\n level2Enabled: true,\n\n getLevel() {\n if (this.level2Enabled && browser$1.supportsInputEvents) {\n return 2;\n } else {\n return 0;\n }\n },\n\n pickFiles(callback) {\n const input = makeElement(\"input\", {\n type: \"file\",\n multiple: true,\n hidden: true,\n id: this.fileInputId\n });\n input.addEventListener(\"change\", () => {\n callback(input.files);\n removeNode(input);\n });\n removeNode(document.getElementById(this.fileInputId));\n document.body.appendChild(input);\n input.click();\n }\n\n};\n\nvar keyNames$2 = {\n 8: \"backspace\",\n 9: \"tab\",\n 13: \"return\",\n 27: \"escape\",\n 37: \"left\",\n 39: \"right\",\n 46: \"delete\",\n 68: \"d\",\n 72: \"h\",\n 79: \"o\"\n};\n\nvar textAttributes = {\n bold: {\n tagName: \"strong\",\n inheritable: true,\n\n parser(element) {\n const style = window.getComputedStyle(element);\n return style.fontWeight === \"bold\" || style.fontWeight >= 600;\n }\n\n },\n italic: {\n tagName: \"em\",\n inheritable: true,\n\n parser(element) {\n const style = window.getComputedStyle(element);\n return style.fontStyle === \"italic\";\n }\n\n },\n href: {\n groupTagName: \"a\",\n\n parser(element) {\n const matchingSelector = \"a:not(\".concat(attachmentSelector, \")\");\n const link = element.closest(matchingSelector);\n\n if (link) {\n return link.getAttribute(\"href\");\n }\n }\n\n },\n strike: {\n tagName: \"del\",\n inheritable: true\n },\n frozen: {\n style: {\n backgroundColor: \"highlight\"\n }\n }\n};\n\nvar toolbar = {\n getDefaultHTML() {\n return \"
\\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
\\n
\");\n }\n\n};\n\nconst undoInterval = 5000;\n\nconst config = {\n attachments,\n blockAttributes: attributes,\n browser: browser$1,\n css: css$3,\n fileSize,\n input,\n keyNames: keyNames$2,\n lang: lang$1,\n textAttributes,\n toolbar,\n undoInterval\n};\n\nfunction createMetadataMethodsForProperty(metadataMap, kind, property, decoratorFinishedRef) {\n return {\n getMetadata: function (key) {\n assertNotFinished(decoratorFinishedRef, \"getMetadata\"), assertMetadataKey(key);\n var metadataForKey = metadataMap[key];\n if (void 0 !== metadataForKey) if (1 === kind) {\n var pub = metadataForKey.public;\n if (void 0 !== pub) return pub[property];\n } else if (2 === kind) {\n var priv = metadataForKey.private;\n if (void 0 !== priv) return priv.get(property);\n } else if (Object.hasOwnProperty.call(metadataForKey, \"constructor\")) return metadataForKey.constructor;\n },\n setMetadata: function (key, value) {\n assertNotFinished(decoratorFinishedRef, \"setMetadata\"), assertMetadataKey(key);\n var metadataForKey = metadataMap[key];\n\n if (void 0 === metadataForKey && (metadataForKey = metadataMap[key] = {}), 1 === kind) {\n var pub = metadataForKey.public;\n void 0 === pub && (pub = metadataForKey.public = {}), pub[property] = value;\n } else if (2 === kind) {\n var priv = metadataForKey.priv;\n void 0 === priv && (priv = metadataForKey.private = new Map()), priv.set(property, value);\n } else metadataForKey.constructor = value;\n }\n };\n}\n\nfunction convertMetadataMapToFinal(obj, metadataMap) {\n var parentMetadataMap = obj[Symbol.metadata || Symbol.for(\"Symbol.metadata\")],\n metadataKeys = Object.getOwnPropertySymbols(metadataMap);\n\n if (0 !== metadataKeys.length) {\n for (var i = 0; i < metadataKeys.length; i++) {\n var key = metadataKeys[i],\n metaForKey = metadataMap[key],\n parentMetaForKey = parentMetadataMap ? parentMetadataMap[key] : null,\n pub = metaForKey.public,\n parentPub = parentMetaForKey ? parentMetaForKey.public : null;\n pub && parentPub && Object.setPrototypeOf(pub, parentPub);\n var priv = metaForKey.private;\n\n if (priv) {\n var privArr = Array.from(priv.values()),\n parentPriv = parentMetaForKey ? parentMetaForKey.private : null;\n parentPriv && (privArr = privArr.concat(parentPriv)), metaForKey.private = privArr;\n }\n\n parentMetaForKey && Object.setPrototypeOf(metaForKey, parentMetaForKey);\n }\n\n parentMetadataMap && Object.setPrototypeOf(metadataMap, parentMetadataMap), obj[Symbol.metadata || Symbol.for(\"Symbol.metadata\")] = metadataMap;\n }\n}\n\nfunction createAddInitializerMethod(initializers, decoratorFinishedRef) {\n return function (initializer) {\n assertNotFinished(decoratorFinishedRef, \"addInitializer\"), assertCallable(initializer, \"An initializer\"), initializers.push(initializer);\n };\n}\n\nfunction memberDec(dec, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value) {\n var kindStr;\n\n switch (kind) {\n case 1:\n kindStr = \"accessor\";\n break;\n\n case 2:\n kindStr = \"method\";\n break;\n\n case 3:\n kindStr = \"getter\";\n break;\n\n case 4:\n kindStr = \"setter\";\n break;\n\n default:\n kindStr = \"field\";\n }\n\n var metadataKind,\n metadataName,\n ctx = {\n kind: kindStr,\n name: isPrivate ? \"#\" + name : name,\n isStatic: isStatic,\n isPrivate: isPrivate\n },\n decoratorFinishedRef = {\n v: !1\n };\n\n if (0 !== kind && (ctx.addInitializer = createAddInitializerMethod(initializers, decoratorFinishedRef)), isPrivate) {\n metadataKind = 2, metadataName = Symbol(name);\n var access = {};\n 0 === kind ? (access.get = desc.get, access.set = desc.set) : 2 === kind ? access.get = function () {\n return desc.value;\n } : (1 !== kind && 3 !== kind || (access.get = function () {\n return desc.get.call(this);\n }), 1 !== kind && 4 !== kind || (access.set = function (v) {\n desc.set.call(this, v);\n })), ctx.access = access;\n } else metadataKind = 1, metadataName = name;\n\n try {\n return dec(value, Object.assign(ctx, createMetadataMethodsForProperty(metadataMap, metadataKind, metadataName, decoratorFinishedRef)));\n } finally {\n decoratorFinishedRef.v = !0;\n }\n}\n\nfunction assertNotFinished(decoratorFinishedRef, fnName) {\n if (decoratorFinishedRef.v) throw new Error(\"attempted to call \" + fnName + \" after decoration was finished\");\n}\n\nfunction assertMetadataKey(key) {\n if (\"symbol\" != typeof key) throw new TypeError(\"Metadata keys must be symbols, received: \" + key);\n}\n\nfunction assertCallable(fn, hint) {\n if (\"function\" != typeof fn) throw new TypeError(hint + \" must be a function\");\n}\n\nfunction assertValidReturnValue(kind, value) {\n var type = typeof value;\n\n if (1 === kind) {\n if (\"object\" !== type || null === value) throw new TypeError(\"accessor decorators must return an object with get, set, or init properties or void 0\");\n void 0 !== value.get && assertCallable(value.get, \"accessor.get\"), void 0 !== value.set && assertCallable(value.set, \"accessor.set\"), void 0 !== value.init && assertCallable(value.init, \"accessor.init\"), void 0 !== value.initializer && assertCallable(value.initializer, \"accessor.initializer\");\n } else if (\"function\" !== type) {\n var hint;\n throw hint = 0 === kind ? \"field\" : 10 === kind ? \"class\" : \"method\", new TypeError(hint + \" decorators must return a function or void 0\");\n }\n}\n\nfunction getInit(desc) {\n var initializer;\n return null == (initializer = desc.init) && (initializer = desc.initializer) && \"undefined\" != typeof console && console.warn(\".initializer has been renamed to .init as of March 2022\"), initializer;\n}\n\nfunction applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers) {\n var desc,\n initializer,\n value,\n newValue,\n get,\n set,\n decs = decInfo[0];\n if (isPrivate ? desc = 0 === kind || 1 === kind ? {\n get: decInfo[3],\n set: decInfo[4]\n } : 3 === kind ? {\n get: decInfo[3]\n } : 4 === kind ? {\n set: decInfo[3]\n } : {\n value: decInfo[3]\n } : 0 !== kind && (desc = Object.getOwnPropertyDescriptor(base, name)), 1 === kind ? value = {\n get: desc.get,\n set: desc.set\n } : 2 === kind ? value = desc.value : 3 === kind ? value = desc.get : 4 === kind && (value = desc.set), \"function\" == typeof decs) void 0 !== (newValue = memberDec(decs, name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value)) && (assertValidReturnValue(kind, newValue), 0 === kind ? initializer = newValue : 1 === kind ? (initializer = getInit(newValue), get = newValue.get || value.get, set = newValue.set || value.set, value = {\n get: get,\n set: set\n }) : value = newValue);else for (var i = decs.length - 1; i >= 0; i--) {\n var newInit;\n if (void 0 !== (newValue = memberDec(decs[i], name, desc, metadataMap, initializers, kind, isStatic, isPrivate, value))) assertValidReturnValue(kind, newValue), 0 === kind ? newInit = newValue : 1 === kind ? (newInit = getInit(newValue), get = newValue.get || value.get, set = newValue.set || value.set, value = {\n get: get,\n set: set\n }) : value = newValue, void 0 !== newInit && (void 0 === initializer ? initializer = newInit : \"function\" == typeof initializer ? initializer = [initializer, newInit] : initializer.push(newInit));\n }\n\n if (0 === kind || 1 === kind) {\n if (void 0 === initializer) initializer = function (instance, init) {\n return init;\n };else if (\"function\" != typeof initializer) {\n var ownInitializers = initializer;\n\n initializer = function (instance, init) {\n for (var value = init, i = 0; i < ownInitializers.length; i++) value = ownInitializers[i].call(instance, value);\n\n return value;\n };\n } else {\n var originalInitializer = initializer;\n\n initializer = function (instance, init) {\n return originalInitializer.call(instance, init);\n };\n }\n ret.push(initializer);\n }\n\n 0 !== kind && (1 === kind ? (desc.get = value.get, desc.set = value.set) : 2 === kind ? desc.value = value : 3 === kind ? desc.get = value : 4 === kind && (desc.set = value), isPrivate ? 1 === kind ? (ret.push(function (instance, args) {\n return value.get.call(instance, args);\n }), ret.push(function (instance, args) {\n return value.set.call(instance, args);\n })) : 2 === kind ? ret.push(value) : ret.push(function (instance, args) {\n return value.call(instance, args);\n }) : Object.defineProperty(base, name, desc));\n}\n\nfunction applyMemberDecs(ret, Class, protoMetadataMap, staticMetadataMap, decInfos) {\n for (var protoInitializers, staticInitializers, existingProtoNonFields = new Map(), existingStaticNonFields = new Map(), i = 0; i < decInfos.length; i++) {\n var decInfo = decInfos[i];\n\n if (Array.isArray(decInfo)) {\n var base,\n metadataMap,\n initializers,\n kind = decInfo[1],\n name = decInfo[2],\n isPrivate = decInfo.length > 3,\n isStatic = kind >= 5;\n\n if (isStatic ? (base = Class, metadataMap = staticMetadataMap, 0 !== (kind -= 5) && (initializers = staticInitializers = staticInitializers || [])) : (base = Class.prototype, metadataMap = protoMetadataMap, 0 !== kind && (initializers = protoInitializers = protoInitializers || [])), 0 !== kind && !isPrivate) {\n var existingNonFields = isStatic ? existingStaticNonFields : existingProtoNonFields,\n existingKind = existingNonFields.get(name) || 0;\n if (!0 === existingKind || 3 === existingKind && 4 !== kind || 4 === existingKind && 3 !== kind) throw new Error(\"Attempted to decorate a public method/accessor that has the same name as a previously decorated public method/accessor. This is not currently supported by the decorators plugin. Property name was: \" + name);\n !existingKind && kind > 2 ? existingNonFields.set(name, kind) : existingNonFields.set(name, !0);\n }\n\n applyMemberDec(ret, base, decInfo, name, kind, isStatic, isPrivate, metadataMap, initializers);\n }\n }\n\n pushInitializers(ret, protoInitializers), pushInitializers(ret, staticInitializers);\n}\n\nfunction pushInitializers(ret, initializers) {\n initializers && ret.push(function (instance) {\n for (var i = 0; i < initializers.length; i++) initializers[i].call(instance);\n\n return instance;\n });\n}\n\nfunction applyClassDecs(ret, targetClass, metadataMap, classDecs) {\n if (classDecs.length > 0) {\n for (var initializers = [], newClass = targetClass, name = targetClass.name, i = classDecs.length - 1; i >= 0; i--) {\n var decoratorFinishedRef = {\n v: !1\n };\n\n try {\n var ctx = Object.assign({\n kind: \"class\",\n name: name,\n addInitializer: createAddInitializerMethod(initializers, decoratorFinishedRef)\n }, createMetadataMethodsForProperty(metadataMap, 0, name, decoratorFinishedRef)),\n nextNewClass = classDecs[i](newClass, ctx);\n } finally {\n decoratorFinishedRef.v = !0;\n }\n\n void 0 !== nextNewClass && (assertValidReturnValue(10, nextNewClass), newClass = nextNewClass);\n }\n\n ret.push(newClass, function () {\n for (var i = 0; i < initializers.length; i++) initializers[i].call(newClass);\n });\n }\n}\n\nfunction _applyDecs(targetClass, memberDecs, classDecs) {\n var ret = [],\n staticMetadataMap = {},\n protoMetadataMap = {};\n return applyMemberDecs(ret, targetClass, protoMetadataMap, staticMetadataMap, memberDecs), convertMetadataMapToFinal(targetClass.prototype, protoMetadataMap), applyClassDecs(ret, targetClass, staticMetadataMap, classDecs), convertMetadataMapToFinal(targetClass, staticMetadataMap), ret;\n}\n\nfunction _asyncIterator(iterable) {\n var method,\n async,\n sync,\n retry = 2;\n\n for (\"undefined\" != typeof Symbol && (async = Symbol.asyncIterator, sync = Symbol.iterator); retry--;) {\n if (async && null != (method = iterable[async])) return method.call(iterable);\n if (sync && null != (method = iterable[sync])) return new AsyncFromSyncIterator(method.call(iterable));\n async = \"@@asyncIterator\", sync = \"@@iterator\";\n }\n\n throw new TypeError(\"Object is not async iterable\");\n}\n\nfunction AsyncFromSyncIterator(s) {\n function AsyncFromSyncIteratorContinuation(r) {\n if (Object(r) !== r) return Promise.reject(new TypeError(r + \" is not an object.\"));\n var done = r.done;\n return Promise.resolve(r.value).then(function (value) {\n return {\n value: value,\n done: done\n };\n });\n }\n\n return AsyncFromSyncIterator = function (s) {\n this.s = s, this.n = s.next;\n }, AsyncFromSyncIterator.prototype = {\n s: null,\n n: null,\n next: function () {\n return AsyncFromSyncIteratorContinuation(this.n.apply(this.s, arguments));\n },\n return: function (value) {\n var ret = this.s.return;\n return void 0 === ret ? Promise.resolve({\n value: value,\n done: !0\n }) : AsyncFromSyncIteratorContinuation(ret.apply(this.s, arguments));\n },\n throw: function (value) {\n var thr = this.s.return;\n return void 0 === thr ? Promise.reject(value) : AsyncFromSyncIteratorContinuation(thr.apply(this.s, arguments));\n }\n }, new AsyncFromSyncIterator(s);\n}\n\nvar REACT_ELEMENT_TYPE;\n\nfunction _jsx(type, props, key, children) {\n REACT_ELEMENT_TYPE || (REACT_ELEMENT_TYPE = \"function\" == typeof Symbol && Symbol.for && Symbol.for(\"react.element\") || 60103);\n var defaultProps = type && type.defaultProps,\n childrenLength = arguments.length - 3;\n if (props || 0 === childrenLength || (props = {\n children: void 0\n }), 1 === childrenLength) props.children = children;else if (childrenLength > 1) {\n for (var childArray = new Array(childrenLength), i = 0; i < childrenLength; i++) childArray[i] = arguments[i + 3];\n\n props.children = childArray;\n }\n if (props && defaultProps) for (var propName in defaultProps) void 0 === props[propName] && (props[propName] = defaultProps[propName]);else props || (props = defaultProps || {});\n return {\n $$typeof: REACT_ELEMENT_TYPE,\n type: type,\n key: void 0 === key ? null : \"\" + key,\n ref: null,\n props: props,\n _owner: null\n };\n}\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n _defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nfunction _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}\n\nfunction _wrapRegExp() {\n _wrapRegExp = function (re, groups) {\n return new BabelRegExp(re, void 0, groups);\n };\n\n var _super = RegExp.prototype,\n _groups = new WeakMap();\n\n function BabelRegExp(re, flags, groups) {\n var _this = new RegExp(re, flags);\n\n return _groups.set(_this, groups || _groups.get(re)), _setPrototypeOf(_this, BabelRegExp.prototype);\n }\n\n function buildGroups(result, re) {\n var g = _groups.get(re);\n\n return Object.keys(g).reduce(function (groups, name) {\n return groups[name] = result[g[name]], groups;\n }, Object.create(null));\n }\n\n return _inherits(BabelRegExp, RegExp), BabelRegExp.prototype.exec = function (str) {\n var result = _super.exec.call(this, str);\n\n return result && (result.groups = buildGroups(result, this)), result;\n }, BabelRegExp.prototype[Symbol.replace] = function (str, substitution) {\n if (\"string\" == typeof substitution) {\n var groups = _groups.get(this);\n\n return _super[Symbol.replace].call(this, str, substitution.replace(/\\$<([^>]+)>/g, function (_, name) {\n return \"$\" + groups[name];\n }));\n }\n\n if (\"function\" == typeof substitution) {\n var _this = this;\n\n return _super[Symbol.replace].call(this, str, function () {\n var args = arguments;\n return \"object\" != typeof args[args.length - 1] && (args = [].slice.call(args)).push(buildGroups(args, _this)), substitution.apply(this, args);\n });\n }\n\n return _super[Symbol.replace].call(this, str, substitution);\n }, _wrapRegExp.apply(this, arguments);\n}\n\nfunction _AwaitValue(value) {\n this.wrapped = value;\n}\n\nfunction _AsyncGenerator(gen) {\n var front, back;\n\n function send(key, arg) {\n return new Promise(function (resolve, reject) {\n var request = {\n key: key,\n arg: arg,\n resolve: resolve,\n reject: reject,\n next: null\n };\n\n if (back) {\n back = back.next = request;\n } else {\n front = back = request;\n resume(key, arg);\n }\n });\n }\n\n function resume(key, arg) {\n try {\n var result = gen[key](arg);\n var value = result.value;\n var wrappedAwait = value instanceof _AwaitValue;\n Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {\n if (wrappedAwait) {\n resume(key === \"return\" ? \"return\" : \"next\", arg);\n return;\n }\n\n settle(result.done ? \"return\" : \"normal\", arg);\n }, function (err) {\n resume(\"throw\", err);\n });\n } catch (err) {\n settle(\"throw\", err);\n }\n }\n\n function settle(type, value) {\n switch (type) {\n case \"return\":\n front.resolve({\n value: value,\n done: true\n });\n break;\n\n case \"throw\":\n front.reject(value);\n break;\n\n default:\n front.resolve({\n value: value,\n done: false\n });\n break;\n }\n\n front = front.next;\n\n if (front) {\n resume(front.key, front.arg);\n } else {\n back = null;\n }\n }\n\n this._invoke = send;\n\n if (typeof gen.return !== \"function\") {\n this.return = undefined;\n }\n}\n\n_AsyncGenerator.prototype[typeof Symbol === \"function\" && Symbol.asyncIterator || \"@@asyncIterator\"] = function () {\n return this;\n};\n\n_AsyncGenerator.prototype.next = function (arg) {\n return this._invoke(\"next\", arg);\n};\n\n_AsyncGenerator.prototype.throw = function (arg) {\n return this._invoke(\"throw\", arg);\n};\n\n_AsyncGenerator.prototype.return = function (arg) {\n return this._invoke(\"return\", arg);\n};\n\nfunction _wrapAsyncGenerator(fn) {\n return function () {\n return new _AsyncGenerator(fn.apply(this, arguments));\n };\n}\n\nfunction _awaitAsyncGenerator(value) {\n return new _AwaitValue(value);\n}\n\nfunction _asyncGeneratorDelegate(inner, awaitWrap) {\n var iter = {},\n waiting = false;\n\n function pump(key, value) {\n waiting = true;\n value = new Promise(function (resolve) {\n resolve(inner[key](value));\n });\n return {\n done: false,\n value: awaitWrap(value)\n };\n }\n\n ;\n\n iter[typeof Symbol !== \"undefined\" && Symbol.iterator || \"@@iterator\"] = function () {\n return this;\n };\n\n iter.next = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump(\"next\", value);\n };\n\n if (typeof inner.throw === \"function\") {\n iter.throw = function (value) {\n if (waiting) {\n waiting = false;\n throw value;\n }\n\n return pump(\"throw\", value);\n };\n }\n\n if (typeof inner.return === \"function\") {\n iter.return = function (value) {\n if (waiting) {\n waiting = false;\n return value;\n }\n\n return pump(\"return\", value);\n };\n }\n\n return iter;\n}\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\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 _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\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _defineEnumerableProperties(obj, descs) {\n for (var key in descs) {\n var desc = descs[key];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, key, desc);\n }\n\n if (Object.getOwnPropertySymbols) {\n var objectSymbols = Object.getOwnPropertySymbols(descs);\n\n for (var i = 0; i < objectSymbols.length; i++) {\n var sym = objectSymbols[i];\n var desc = descs[sym];\n desc.configurable = desc.enumerable = true;\n if (\"value\" in desc) desc.writable = true;\n Object.defineProperty(obj, sym, desc);\n }\n }\n\n return obj;\n}\n\nfunction _defaults(obj, defaults) {\n var keys = Object.getOwnPropertyNames(defaults);\n\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = Object.getOwnPropertyDescriptor(defaults, key);\n\n if (value && value.configurable && obj[key] === undefined) {\n Object.defineProperty(obj, key, value);\n }\n }\n\n return obj;\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 ? Object(arguments[i]) : {};\n var ownKeys = Object.keys(source);\n\n if (typeof Object.getOwnPropertySymbols === 'function') {\n ownKeys.push.apply(ownKeys, 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 _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) _setPrototypeOf(subClass, superClass);\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n\n _setPrototypeOf(subClass, superClass);\n}\n\nfunction _getPrototypeOf(o) {\n _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n };\n return _getPrototypeOf(o);\n}\n\nfunction _setPrototypeOf(o, p) {\n _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n };\n\n return _setPrototypeOf(o, p);\n}\n\nfunction _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nfunction _construct(Parent, args, Class) {\n if (_isNativeReflectConstruct()) {\n _construct = Reflect.construct;\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) _setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n\n return _construct.apply(null, arguments);\n}\n\nfunction _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !_isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return _construct(Class, arguments, _getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return _setPrototypeOf(Wrapper, Class);\n };\n\n return _wrapNativeSuper(Class);\n}\n\nfunction _instanceof(left, right) {\n if (right != null && typeof Symbol !== \"undefined\" && right[Symbol.hasInstance]) {\n return !!right[Symbol.hasInstance](left);\n } else {\n return left instanceof right;\n }\n}\n\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function (nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\n\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n\n newObj.default = obj;\n\n if (cache) {\n cache.set(obj, newObj);\n }\n\n return newObj;\n}\n\nfunction _newArrowCheck(innerThis, boundThis) {\n if (innerThis !== boundThis) {\n throw new TypeError(\"Cannot instantiate an arrow function\");\n }\n}\n\nfunction _objectDestructuringEmpty(obj) {\n if (obj == null) throw new TypeError(\"Cannot destructure undefined\");\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\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 _possibleConstructorReturn(self, call) {\n if (call && (typeof call === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return _assertThisInitialized(self);\n}\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = _isNativeReflectConstruct();\n\n return function _createSuperInternal() {\n var Super = _getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = _getPrototypeOf(this).constructor;\n\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return _possibleConstructorReturn(this, result);\n };\n}\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = _getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = _superPropBase(target, property);\n\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}\n\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = _superPropBase(target, property);\n\n var desc;\n\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n _defineProperty(receiver, property, value);\n }\n\n return true;\n };\n }\n\n return set(target, property, value, receiver);\n}\n\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n\n if (!s && isStrict) {\n throw new Error('failed to set property');\n }\n\n return value;\n}\n\nfunction _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}\n\nfunction _taggedTemplateLiteralLoose(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n\n strings.raw = raw;\n return strings;\n}\n\nfunction _readOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is read-only\");\n}\n\nfunction _writeOnlyError(name) {\n throw new TypeError(\"\\\"\" + name + \"\\\" is write-only\");\n}\n\nfunction _classNameTDZError(name) {\n throw new Error(\"Class \\\"\" + name + \"\\\" cannot be referenced in computed property keys.\");\n}\n\nfunction _temporalUndefined() {}\n\nfunction _tdz(name) {\n throw new ReferenceError(name + \" is not defined - temporal dead zone\");\n}\n\nfunction _temporalRef(val, name) {\n return val === _temporalUndefined ? _tdz(name) : val;\n}\n\nfunction _slicedToArray(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _slicedToArrayLoose(arr, i) {\n return _arrayWithHoles(arr) || _iterableToArrayLimitLoose(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest();\n}\n\nfunction _toArray(arr) {\n return _arrayWithHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableRest();\n}\n\nfunction _toConsumableArray(arr) {\n return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread();\n}\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return _arrayLikeToArray(arr);\n}\n\nfunction _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nfunction _maybeArrayLike(next, arr, i) {\n if (arr && !Array.isArray(arr) && typeof arr.length === \"number\") {\n var len = arr.length;\n return _arrayLikeToArray(arr, i !== void 0 && i < len ? i : len);\n }\n\n return next(arr, i);\n}\n\nfunction _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nfunction _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_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 _iterableToArrayLimitLoose(arr, i) {\n var _i = arr && (typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"]);\n\n if (_i == null) return;\n var _arr = [];\n\n for (_i = _i.call(arr), _step; !(_step = _i.next()).done;) {\n _arr.push(_step.value);\n\n if (i && _arr.length === i) break;\n }\n\n return _arr;\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function () {};\n\n return {\n s: F,\n n: function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function (e) {\n throw e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function () {\n it = it.call(o);\n },\n n: function () {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function (e) {\n didErr = true;\n err = e;\n },\n f: function () {\n try {\n if (!normalCompletion && it.return != null) it.return();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nfunction _skipFirstGeneratorNext(fn) {\n return function () {\n var it = fn.apply(this, arguments);\n it.next();\n return it;\n };\n}\n\nfunction _toPrimitive(input, hint) {\n if (typeof input !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (typeof res !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n\n return (hint === \"string\" ? String : Number)(input);\n}\n\nfunction _toPropertyKey(arg) {\n var key = _toPrimitive(arg, \"string\");\n\n return typeof key === \"symbol\" ? key : String(key);\n}\n\nfunction _initializerWarningHelper(descriptor, context) {\n throw new Error('Decorating class property failed. Please ensure that ' + 'proposal-class-properties is enabled and runs after the decorators transform.');\n}\n\nfunction _initializerDefineProperty(target, property, descriptor, context) {\n if (!descriptor) return;\n Object.defineProperty(target, property, {\n enumerable: descriptor.enumerable,\n configurable: descriptor.configurable,\n writable: descriptor.writable,\n value: descriptor.initializer ? descriptor.initializer.call(context) : void 0\n });\n}\n\nfunction _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {\n var desc = {};\n Object.keys(descriptor).forEach(function (key) {\n desc[key] = descriptor[key];\n });\n desc.enumerable = !!desc.enumerable;\n desc.configurable = !!desc.configurable;\n\n if ('value' in desc || desc.initializer) {\n desc.writable = true;\n }\n\n desc = decorators.slice().reverse().reduce(function (desc, decorator) {\n return decorator(target, property, desc) || desc;\n }, desc);\n\n if (context && desc.initializer !== void 0) {\n desc.value = desc.initializer ? desc.initializer.call(context) : void 0;\n desc.initializer = undefined;\n }\n\n if (desc.initializer === void 0) {\n Object.defineProperty(target, property, desc);\n desc = null;\n }\n\n return desc;\n}\n\nvar id$2 = 0;\n\nfunction _classPrivateFieldLooseKey(name) {\n return \"__private_\" + id$2++ + \"_\" + name;\n}\n\nfunction _classPrivateFieldLooseBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n\n return receiver;\n}\n\nfunction _classPrivateFieldGet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"get\");\n\n return _classApplyDescriptorGet(receiver, descriptor);\n}\n\nfunction _classPrivateFieldSet(receiver, privateMap, value) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n\n _classApplyDescriptorSet(receiver, descriptor, value);\n\n return value;\n}\n\nfunction _classPrivateFieldDestructureSet(receiver, privateMap) {\n var descriptor = _classExtractFieldDescriptor(receiver, privateMap, \"set\");\n\n return _classApplyDescriptorDestructureSet(receiver, descriptor);\n}\n\nfunction _classExtractFieldDescriptor(receiver, privateMap, action) {\n if (!privateMap.has(receiver)) {\n throw new TypeError(\"attempted to \" + action + \" private field on non-instance\");\n }\n\n return privateMap.get(receiver);\n}\n\nfunction _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"get\");\n\n return _classApplyDescriptorGet(receiver, descriptor);\n}\n\nfunction _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n\n _classApplyDescriptorSet(receiver, descriptor, value);\n\n return value;\n}\n\nfunction _classStaticPrivateMethodGet(receiver, classConstructor, method) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n return method;\n}\n\nfunction _classStaticPrivateMethodSet() {\n throw new TypeError(\"attempted to set read only static private field\");\n}\n\nfunction _classApplyDescriptorGet(receiver, descriptor) {\n if (descriptor.get) {\n return descriptor.get.call(receiver);\n }\n\n return descriptor.value;\n}\n\nfunction _classApplyDescriptorSet(receiver, descriptor, value) {\n if (descriptor.set) {\n descriptor.set.call(receiver, value);\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n descriptor.value = value;\n }\n}\n\nfunction _classApplyDescriptorDestructureSet(receiver, descriptor) {\n if (descriptor.set) {\n if (!(\"__destrObj\" in descriptor)) {\n descriptor.__destrObj = {\n set value(v) {\n descriptor.set.call(receiver, v);\n }\n\n };\n }\n\n return descriptor.__destrObj;\n } else {\n if (!descriptor.writable) {\n throw new TypeError(\"attempted to set read only private field\");\n }\n\n return descriptor;\n }\n}\n\nfunction _classStaticPrivateFieldDestructureSet(receiver, classConstructor, descriptor) {\n _classCheckPrivateStaticAccess(receiver, classConstructor);\n\n _classCheckPrivateStaticFieldDescriptor(descriptor, \"set\");\n\n return _classApplyDescriptorDestructureSet(receiver, descriptor);\n}\n\nfunction _classCheckPrivateStaticAccess(receiver, classConstructor) {\n if (receiver !== classConstructor) {\n throw new TypeError(\"Private static access of wrong provenance\");\n }\n}\n\nfunction _classCheckPrivateStaticFieldDescriptor(descriptor, action) {\n if (descriptor === undefined) {\n throw new TypeError(\"attempted to \" + action + \" private static field before its declaration\");\n }\n}\n\nfunction _decorate(decorators, factory, superClass, mixins) {\n var api = _getDecoratorsApi();\n\n if (mixins) {\n for (var i = 0; i < mixins.length; i++) {\n api = mixins[i](api);\n }\n }\n\n var r = factory(function initialize(O) {\n api.initializeInstanceElements(O, decorated.elements);\n }, superClass);\n var decorated = api.decorateClass(_coalesceClassElements(r.d.map(_createElementDescriptor)), decorators);\n api.initializeClassElements(r.F, decorated.elements);\n return api.runClassFinishers(r.F, decorated.finishers);\n}\n\nfunction _getDecoratorsApi() {\n _getDecoratorsApi = function () {\n return api;\n };\n\n var api = {\n elementsDefinitionOrder: [[\"method\"], [\"field\"]],\n initializeInstanceElements: function (O, elements) {\n [\"method\", \"field\"].forEach(function (kind) {\n elements.forEach(function (element) {\n if (element.kind === kind && element.placement === \"own\") {\n this.defineClassElement(O, element);\n }\n }, this);\n }, this);\n },\n initializeClassElements: function (F, elements) {\n var proto = F.prototype;\n [\"method\", \"field\"].forEach(function (kind) {\n elements.forEach(function (element) {\n var placement = element.placement;\n\n if (element.kind === kind && (placement === \"static\" || placement === \"prototype\")) {\n var receiver = placement === \"static\" ? F : proto;\n this.defineClassElement(receiver, element);\n }\n }, this);\n }, this);\n },\n defineClassElement: function (receiver, element) {\n var descriptor = element.descriptor;\n\n if (element.kind === \"field\") {\n var initializer = element.initializer;\n descriptor = {\n enumerable: descriptor.enumerable,\n writable: descriptor.writable,\n configurable: descriptor.configurable,\n value: initializer === void 0 ? void 0 : initializer.call(receiver)\n };\n }\n\n Object.defineProperty(receiver, element.key, descriptor);\n },\n decorateClass: function (elements, decorators) {\n var newElements = [];\n var finishers = [];\n var placements = {\n static: [],\n prototype: [],\n own: []\n };\n elements.forEach(function (element) {\n this.addElementPlacement(element, placements);\n }, this);\n elements.forEach(function (element) {\n if (!_hasDecorators(element)) return newElements.push(element);\n var elementFinishersExtras = this.decorateElement(element, placements);\n newElements.push(elementFinishersExtras.element);\n newElements.push.apply(newElements, elementFinishersExtras.extras);\n finishers.push.apply(finishers, elementFinishersExtras.finishers);\n }, this);\n\n if (!decorators) {\n return {\n elements: newElements,\n finishers: finishers\n };\n }\n\n var result = this.decorateConstructor(newElements, decorators);\n finishers.push.apply(finishers, result.finishers);\n result.finishers = finishers;\n return result;\n },\n addElementPlacement: function (element, placements, silent) {\n var keys = placements[element.placement];\n\n if (!silent && keys.indexOf(element.key) !== -1) {\n throw new TypeError(\"Duplicated element (\" + element.key + \")\");\n }\n\n keys.push(element.key);\n },\n decorateElement: function (element, placements) {\n var extras = [];\n var finishers = [];\n\n for (var decorators = element.decorators, i = decorators.length - 1; i >= 0; i--) {\n var keys = placements[element.placement];\n keys.splice(keys.indexOf(element.key), 1);\n var elementObject = this.fromElementDescriptor(element);\n var elementFinisherExtras = this.toElementFinisherExtras((0, decorators[i])(elementObject) || elementObject);\n element = elementFinisherExtras.element;\n this.addElementPlacement(element, placements);\n\n if (elementFinisherExtras.finisher) {\n finishers.push(elementFinisherExtras.finisher);\n }\n\n var newExtras = elementFinisherExtras.extras;\n\n if (newExtras) {\n for (var j = 0; j < newExtras.length; j++) {\n this.addElementPlacement(newExtras[j], placements);\n }\n\n extras.push.apply(extras, newExtras);\n }\n }\n\n return {\n element: element,\n finishers: finishers,\n extras: extras\n };\n },\n decorateConstructor: function (elements, decorators) {\n var finishers = [];\n\n for (var i = decorators.length - 1; i >= 0; i--) {\n var obj = this.fromClassDescriptor(elements);\n var elementsAndFinisher = this.toClassDescriptor((0, decorators[i])(obj) || obj);\n\n if (elementsAndFinisher.finisher !== undefined) {\n finishers.push(elementsAndFinisher.finisher);\n }\n\n if (elementsAndFinisher.elements !== undefined) {\n elements = elementsAndFinisher.elements;\n\n for (var j = 0; j < elements.length - 1; j++) {\n for (var k = j + 1; k < elements.length; k++) {\n if (elements[j].key === elements[k].key && elements[j].placement === elements[k].placement) {\n throw new TypeError(\"Duplicated element (\" + elements[j].key + \")\");\n }\n }\n }\n }\n }\n\n return {\n elements: elements,\n finishers: finishers\n };\n },\n fromElementDescriptor: function (element) {\n var obj = {\n kind: element.kind,\n key: element.key,\n placement: element.placement,\n descriptor: element.descriptor\n };\n var desc = {\n value: \"Descriptor\",\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n if (element.kind === \"field\") obj.initializer = element.initializer;\n return obj;\n },\n toElementDescriptors: function (elementObjects) {\n if (elementObjects === undefined) return;\n return _toArray(elementObjects).map(function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n this.disallowProperty(elementObject, \"finisher\", \"An element descriptor\");\n this.disallowProperty(elementObject, \"extras\", \"An element descriptor\");\n return element;\n }, this);\n },\n toElementDescriptor: function (elementObject) {\n var kind = String(elementObject.kind);\n\n if (kind !== \"method\" && kind !== \"field\") {\n throw new TypeError('An element descriptor\\'s .kind property must be either \"method\" or' + ' \"field\", but a decorator created an element descriptor with' + ' .kind \"' + kind + '\"');\n }\n\n var key = _toPropertyKey(elementObject.key);\n\n var placement = String(elementObject.placement);\n\n if (placement !== \"static\" && placement !== \"prototype\" && placement !== \"own\") {\n throw new TypeError('An element descriptor\\'s .placement property must be one of \"static\",' + ' \"prototype\" or \"own\", but a decorator created an element descriptor' + ' with .placement \"' + placement + '\"');\n }\n\n var descriptor = elementObject.descriptor;\n this.disallowProperty(elementObject, \"elements\", \"An element descriptor\");\n var element = {\n kind: kind,\n key: key,\n placement: placement,\n descriptor: Object.assign({}, descriptor)\n };\n\n if (kind !== \"field\") {\n this.disallowProperty(elementObject, \"initializer\", \"A method descriptor\");\n } else {\n this.disallowProperty(descriptor, \"get\", \"The property descriptor of a field descriptor\");\n this.disallowProperty(descriptor, \"set\", \"The property descriptor of a field descriptor\");\n this.disallowProperty(descriptor, \"value\", \"The property descriptor of a field descriptor\");\n element.initializer = elementObject.initializer;\n }\n\n return element;\n },\n toElementFinisherExtras: function (elementObject) {\n var element = this.toElementDescriptor(elementObject);\n\n var finisher = _optionalCallableProperty(elementObject, \"finisher\");\n\n var extras = this.toElementDescriptors(elementObject.extras);\n return {\n element: element,\n finisher: finisher,\n extras: extras\n };\n },\n fromClassDescriptor: function (elements) {\n var obj = {\n kind: \"class\",\n elements: elements.map(this.fromElementDescriptor, this)\n };\n var desc = {\n value: \"Descriptor\",\n configurable: true\n };\n Object.defineProperty(obj, Symbol.toStringTag, desc);\n return obj;\n },\n toClassDescriptor: function (obj) {\n var kind = String(obj.kind);\n\n if (kind !== \"class\") {\n throw new TypeError('A class descriptor\\'s .kind property must be \"class\", but a decorator' + ' created a class descriptor with .kind \"' + kind + '\"');\n }\n\n this.disallowProperty(obj, \"key\", \"A class descriptor\");\n this.disallowProperty(obj, \"placement\", \"A class descriptor\");\n this.disallowProperty(obj, \"descriptor\", \"A class descriptor\");\n this.disallowProperty(obj, \"initializer\", \"A class descriptor\");\n this.disallowProperty(obj, \"extras\", \"A class descriptor\");\n\n var finisher = _optionalCallableProperty(obj, \"finisher\");\n\n var elements = this.toElementDescriptors(obj.elements);\n return {\n elements: elements,\n finisher: finisher\n };\n },\n runClassFinishers: function (constructor, finishers) {\n for (var i = 0; i < finishers.length; i++) {\n var newConstructor = (0, finishers[i])(constructor);\n\n if (newConstructor !== undefined) {\n if (typeof newConstructor !== \"function\") {\n throw new TypeError(\"Finishers must return a constructor.\");\n }\n\n constructor = newConstructor;\n }\n }\n\n return constructor;\n },\n disallowProperty: function (obj, name, objectType) {\n if (obj[name] !== undefined) {\n throw new TypeError(objectType + \" can't have a .\" + name + \" property.\");\n }\n }\n };\n return api;\n}\n\nfunction _createElementDescriptor(def) {\n var key = _toPropertyKey(def.key);\n\n var descriptor;\n\n if (def.kind === \"method\") {\n descriptor = {\n value: def.value,\n writable: true,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"get\") {\n descriptor = {\n get: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"set\") {\n descriptor = {\n set: def.value,\n configurable: true,\n enumerable: false\n };\n } else if (def.kind === \"field\") {\n descriptor = {\n configurable: true,\n writable: true,\n enumerable: true\n };\n }\n\n var element = {\n kind: def.kind === \"field\" ? \"field\" : \"method\",\n key: key,\n placement: def.static ? \"static\" : def.kind === \"field\" ? \"own\" : \"prototype\",\n descriptor: descriptor\n };\n if (def.decorators) element.decorators = def.decorators;\n if (def.kind === \"field\") element.initializer = def.value;\n return element;\n}\n\nfunction _coalesceGetterSetter(element, other) {\n if (element.descriptor.get !== undefined) {\n other.descriptor.get = element.descriptor.get;\n } else {\n other.descriptor.set = element.descriptor.set;\n }\n}\n\nfunction _coalesceClassElements(elements) {\n var newElements = [];\n\n var isSameElement = function (other) {\n return other.kind === \"method\" && other.key === element.key && other.placement === element.placement;\n };\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var other;\n\n if (element.kind === \"method\" && (other = newElements.find(isSameElement))) {\n if (_isDataDescriptor(element.descriptor) || _isDataDescriptor(other.descriptor)) {\n if (_hasDecorators(element) || _hasDecorators(other)) {\n throw new ReferenceError(\"Duplicated methods (\" + element.key + \") can't be decorated.\");\n }\n\n other.descriptor = element.descriptor;\n } else {\n if (_hasDecorators(element)) {\n if (_hasDecorators(other)) {\n throw new ReferenceError(\"Decorators can't be placed on different accessors with for \" + \"the same property (\" + element.key + \").\");\n }\n\n other.decorators = element.decorators;\n }\n\n _coalesceGetterSetter(element, other);\n }\n } else {\n newElements.push(element);\n }\n }\n\n return newElements;\n}\n\nfunction _hasDecorators(element) {\n return element.decorators && element.decorators.length;\n}\n\nfunction _isDataDescriptor(desc) {\n return desc !== undefined && !(desc.value === undefined && desc.writable === undefined);\n}\n\nfunction _optionalCallableProperty(obj, name) {\n var value = obj[name];\n\n if (value !== undefined && typeof value !== \"function\") {\n throw new TypeError(\"Expected '\" + name + \"' to be a function\");\n }\n\n return value;\n}\n\nfunction _classPrivateMethodGet(receiver, privateSet, fn) {\n if (!privateSet.has(receiver)) {\n throw new TypeError(\"attempted to get private field on non-instance\");\n }\n\n return fn;\n}\n\nfunction _checkPrivateRedeclaration(obj, privateCollection) {\n if (privateCollection.has(obj)) {\n throw new TypeError(\"Cannot initialize the same private elements twice on an object\");\n }\n}\n\nfunction _classPrivateFieldInitSpec(obj, privateMap, value) {\n _checkPrivateRedeclaration(obj, privateMap);\n\n privateMap.set(obj, value);\n}\n\nfunction _classPrivateMethodInitSpec(obj, privateSet) {\n _checkPrivateRedeclaration(obj, privateSet);\n\n privateSet.add(obj);\n}\n\nfunction _classPrivateMethodSet() {\n throw new TypeError(\"attempted to reassign private method\");\n}\n\nfunction _identity(x) {\n return x;\n}\n\nclass BasicObject {\n static proxyMethod(expression) {\n const {\n name,\n toMethod,\n toProperty,\n optional\n } = parseProxyMethodExpression(expression);\n\n this.prototype[name] = function () {\n let subject;\n let object;\n\n if (toMethod) {\n if (optional) {\n var _this$toMethod;\n\n object = (_this$toMethod = this[toMethod]) === null || _this$toMethod === void 0 ? void 0 : _this$toMethod.call(this);\n } else {\n object = this[toMethod]();\n }\n } else if (toProperty) {\n object = this[toProperty];\n }\n\n if (optional) {\n var _object;\n\n subject = (_object = object) === null || _object === void 0 ? void 0 : _object[name];\n\n if (subject) {\n return apply.call(subject, object, arguments);\n }\n } else {\n subject = object[name];\n return apply.call(subject, object, arguments);\n }\n };\n }\n\n}\n\nconst parseProxyMethodExpression = function (expression) {\n const match = expression.match(proxyMethodExpressionPattern);\n\n if (!match) {\n throw new Error(\"can't parse @proxyMethod expression: \".concat(expression));\n }\n\n const args = {\n name: match[4]\n };\n\n if (match[2] != null) {\n args.toMethod = match[1];\n } else {\n args.toProperty = match[1];\n }\n\n if (match[3] != null) {\n args.optional = true;\n }\n\n return args;\n};\n\nconst {\n apply\n} = Function.prototype;\nconst proxyMethodExpressionPattern = new RegExp(\"\\\n^\\\n(.+?)\\\n(\\\\(\\\\))?\\\n(\\\\?)?\\\n\\\\.\\\n(.+?)\\\n$\\\n\");\n\nvar _Array$from, _$codePointAt$1, _$1, _String$fromCodePoint;\nclass UTF16String extends BasicObject {\n static box() {\n let value = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n\n if (value instanceof this) {\n return value;\n } else {\n return this.fromUCS2String(value === null || value === void 0 ? void 0 : value.toString());\n }\n }\n\n static fromUCS2String(ucs2String) {\n return new this(ucs2String, ucs2decode(ucs2String));\n }\n\n static fromCodepoints(codepoints) {\n return new this(ucs2encode(codepoints), codepoints);\n }\n\n constructor(ucs2String, codepoints) {\n super(...arguments);\n this.ucs2String = ucs2String;\n this.codepoints = codepoints;\n this.length = this.codepoints.length;\n this.ucs2Length = this.ucs2String.length;\n }\n\n offsetToUCS2Offset(offset) {\n return ucs2encode(this.codepoints.slice(0, Math.max(0, offset))).length;\n }\n\n offsetFromUCS2Offset(ucs2Offset) {\n return ucs2decode(this.ucs2String.slice(0, Math.max(0, ucs2Offset))).length;\n }\n\n slice() {\n return this.constructor.fromCodepoints(this.codepoints.slice(...arguments));\n }\n\n charAt(offset) {\n return this.slice(offset, offset + 1);\n }\n\n isEqualTo(value) {\n return this.constructor.box(value).ucs2String === this.ucs2String;\n }\n\n toJSON() {\n return this.ucs2String;\n }\n\n getCacheKey() {\n return this.ucs2String;\n }\n\n toString() {\n return this.ucs2String;\n }\n\n}\nconst hasArrayFrom = ((_Array$from = Array.from) === null || _Array$from === void 0 ? void 0 : _Array$from.call(Array, \"\\ud83d\\udc7c\").length) === 1;\nconst hasStringCodePointAt$1 = ((_$codePointAt$1 = (_$1 = \" \").codePointAt) === null || _$codePointAt$1 === void 0 ? void 0 : _$codePointAt$1.call(_$1, 0)) != null;\nconst hasStringFromCodePoint = ((_String$fromCodePoint = String.fromCodePoint) === null || _String$fromCodePoint === void 0 ? void 0 : _String$fromCodePoint.call(String, 32, 128124)) === \" \\ud83d\\udc7c\"; // UCS-2 conversion helpers ported from Mathias Bynens' Punycode.js:\n// https://github.com/bestiejs/punycode.js#punycodeucs2\n\nlet ucs2decode, ucs2encode; // Creates an array containing the numeric code points of each Unicode\n// character in the string. While JavaScript uses UCS-2 internally,\n// this function will convert a pair of surrogate halves (each of which\n// UCS-2 exposes as separate characters) into a single code point,\n// matching UTF-16.\n\nif (hasArrayFrom && hasStringCodePointAt$1) {\n ucs2decode = string => Array.from(string).map(char => char.codePointAt(0));\n} else {\n ucs2decode = function (string) {\n const output = [];\n let counter = 0;\n const {\n length\n } = string;\n\n while (counter < length) {\n let value = string.charCodeAt(counter++);\n\n if (0xd800 <= value && value <= 0xdbff && counter < length) {\n // high surrogate, and there is a next character\n const extra = string.charCodeAt(counter++);\n\n if ((extra & 0xfc00) === 0xdc00) {\n // low surrogate\n value = ((value & 0x3ff) << 10) + (extra & 0x3ff) + 0x10000;\n } else {\n // unmatched surrogate; only append this code unit, in case the\n // next code unit is the high surrogate of a surrogate pair\n counter--;\n }\n }\n\n output.push(value);\n }\n\n return output;\n };\n} // Creates a string based on an array of numeric code points.\n\n\nif (hasStringFromCodePoint) {\n ucs2encode = array => String.fromCodePoint(...Array.from(array || []));\n} else {\n ucs2encode = function (array) {\n const characters = (() => {\n const result = [];\n Array.from(array).forEach(value => {\n let output = \"\";\n\n if (value > 0xffff) {\n value -= 0x10000;\n output += String.fromCharCode(value >>> 10 & 0x3ff | 0xd800);\n value = 0xdc00 | value & 0x3ff;\n }\n\n result.push(output + String.fromCharCode(value));\n });\n return result;\n })();\n\n return characters.join(\"\");\n };\n}\n\nlet id$1 = 0;\nclass TrixObject extends BasicObject {\n static fromJSONString(jsonString) {\n return this.fromJSON(JSON.parse(jsonString));\n }\n\n constructor() {\n super(...arguments);\n this.id = ++id$1;\n }\n\n hasSameConstructorAs(object) {\n return this.constructor === (object === null || object === void 0 ? void 0 : object.constructor);\n }\n\n isEqualTo(object) {\n return this === object;\n }\n\n inspect() {\n const parts = [];\n const contents = this.contentsForInspection() || {};\n\n for (const key in contents) {\n const value = contents[key];\n parts.push(\"\".concat(key, \"=\").concat(value));\n }\n\n return \"#<\".concat(this.constructor.name, \":\").concat(this.id).concat(parts.length ? \" \".concat(parts.join(\", \")) : \"\", \">\");\n }\n\n contentsForInspection() {}\n\n toJSONString() {\n return JSON.stringify(this);\n }\n\n toUTF16String() {\n return UTF16String.box(this);\n }\n\n getCacheKey() {\n return this.id.toString();\n }\n\n}\n\n/* eslint-disable\n id-length,\n*/\nconst arraysAreEqual = function () {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (a.length !== b.length) {\n return false;\n }\n\n for (let index = 0; index < a.length; index++) {\n const value = a[index];\n\n if (value !== b[index]) {\n return false;\n }\n }\n\n return true;\n};\nconst arrayStartsWith = function () {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n return arraysAreEqual(a.slice(0, b.length), b);\n};\nconst spliceArray = function (array) {\n const result = array.slice(0);\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n result.splice(...args);\n return result;\n};\nconst summarizeArrayChange = function () {\n let oldArray = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let newArray = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n const added = [];\n const removed = [];\n const existingValues = new Set();\n oldArray.forEach(value => {\n existingValues.add(value);\n });\n const currentValues = new Set();\n newArray.forEach(value => {\n currentValues.add(value);\n\n if (!existingValues.has(value)) {\n added.push(value);\n }\n });\n oldArray.forEach(value => {\n if (!currentValues.has(value)) {\n removed.push(value);\n }\n });\n return {\n added,\n removed\n };\n};\n\nconst RTL_PATTERN = /[\\u05BE\\u05C0\\u05C3\\u05D0-\\u05EA\\u05F0-\\u05F4\\u061B\\u061F\\u0621-\\u063A\\u0640-\\u064A\\u066D\\u0671-\\u06B7\\u06BA-\\u06BE\\u06C0-\\u06CE\\u06D0-\\u06D5\\u06E5\\u06E6\\u200F\\u202B\\u202E\\uFB1F-\\uFB28\\uFB2A-\\uFB36\\uFB38-\\uFB3C\\uFB3E\\uFB40\\uFB41\\uFB43\\uFB44\\uFB46-\\uFBB1\\uFBD3-\\uFD3D\\uFD50-\\uFD8F\\uFD92-\\uFDC7\\uFDF0-\\uFDFB\\uFE70-\\uFE72\\uFE74\\uFE76-\\uFEFC]/;\nconst getDirection = function () {\n const input = makeElement(\"input\", {\n dir: \"auto\",\n name: \"x\",\n dirName: \"x.dir\"\n });\n const form = makeElement(\"form\");\n form.appendChild(input);\n\n const supportsDirName = function () {\n try {\n return new FormData(form).has(input.dirName);\n } catch (error) {\n return false;\n }\n }();\n\n const supportsDirSelector = function () {\n try {\n return input.matches(\":dir(ltr),:dir(rtl)\");\n } catch (error) {\n return false;\n }\n }();\n\n if (supportsDirName) {\n return function (string) {\n input.value = string;\n return new FormData(form).get(input.dirName);\n };\n } else if (supportsDirSelector) {\n return function (string) {\n input.value = string;\n\n if (input.matches(\":dir(rtl)\")) {\n return \"rtl\";\n } else {\n return \"ltr\";\n }\n };\n } else {\n return function (string) {\n const char = string.trim().charAt(0);\n\n if (RTL_PATTERN.test(char)) {\n return \"rtl\";\n } else {\n return \"ltr\";\n }\n };\n }\n}();\n\nlet allAttributeNames = null;\nlet blockAttributeNames = null;\nlet textAttributeNames = null;\nlet listAttributeNames = null;\nconst getAllAttributeNames = () => {\n if (!allAttributeNames) {\n allAttributeNames = getTextAttributeNames().concat(getBlockAttributeNames());\n }\n\n return allAttributeNames;\n};\nconst getBlockConfig = attributeName => config.blockAttributes[attributeName];\nconst getBlockAttributeNames = () => {\n if (!blockAttributeNames) {\n blockAttributeNames = Object.keys(config.blockAttributes);\n }\n\n return blockAttributeNames;\n};\nconst getTextConfig = attributeName => config.textAttributes[attributeName];\nconst getTextAttributeNames = () => {\n if (!textAttributeNames) {\n textAttributeNames = Object.keys(config.textAttributes);\n }\n\n return textAttributeNames;\n};\nconst getListAttributeNames = () => {\n if (!listAttributeNames) {\n listAttributeNames = [];\n\n for (const key in config.blockAttributes) {\n const {\n listAttribute\n } = config.blockAttributes[key];\n\n if (listAttribute != null) {\n listAttributeNames.push(listAttribute);\n }\n }\n }\n\n return listAttributeNames;\n};\n\n/* eslint-disable\n*/\nconst installDefaultCSSForTagName = function (tagName, defaultCSS) {\n const styleElement = insertStyleElementForTagName(tagName);\n styleElement.textContent = defaultCSS.replace(/%t/g, tagName);\n};\n\nconst insertStyleElementForTagName = function (tagName) {\n const element = document.createElement(\"style\");\n element.setAttribute(\"type\", \"text/css\");\n element.setAttribute(\"data-tag-name\", tagName.toLowerCase());\n const nonce = getCSPNonce();\n\n if (nonce) {\n element.setAttribute(\"nonce\", nonce);\n }\n\n document.head.insertBefore(element, document.head.firstChild);\n return element;\n};\n\nconst getCSPNonce = function () {\n const element = getMetaElement(\"trix-csp-nonce\") || getMetaElement(\"csp-nonce\");\n\n if (element) {\n return element.getAttribute(\"content\");\n }\n};\n\nconst getMetaElement = name => document.head.querySelector(\"meta[name=\".concat(name, \"]\"));\n\nconst testTransferData = {\n \"application/x-trix-feature-detection\": \"test\"\n};\nconst dataTransferIsPlainText = function (dataTransfer) {\n const text = dataTransfer.getData(\"text/plain\");\n const html = dataTransfer.getData(\"text/html\");\n\n if (text && html) {\n const {\n body\n } = new DOMParser().parseFromString(html, \"text/html\");\n\n if (body.textContent === text) {\n return !body.querySelector(\"*\");\n }\n } else {\n return text === null || text === void 0 ? void 0 : text.length;\n }\n};\nconst dataTransferIsWritable = function (dataTransfer) {\n if (!(dataTransfer !== null && dataTransfer !== void 0 && dataTransfer.setData)) return false;\n\n for (const key in testTransferData) {\n const value = testTransferData[key];\n\n try {\n dataTransfer.setData(key, value);\n if (!dataTransfer.getData(key) === value) return false;\n } catch (error) {\n return false;\n }\n }\n\n return true;\n};\nconst keyEventIsKeyboardCommand = function () {\n if (/Mac|^iP/.test(navigator.platform)) {\n return event => event.metaKey;\n } else {\n return event => event.ctrlKey;\n }\n}();\n\nconst defer = fn => setTimeout(fn, 1);\n\n/* eslint-disable\n id-length,\n*/\nconst copyObject = function () {\n let object = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const result = {};\n\n for (const key in object) {\n const value = object[key];\n result[key] = value;\n }\n\n return result;\n};\nconst objectsAreEqual = function () {\n let a = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n let b = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (Object.keys(a).length !== Object.keys(b).length) {\n return false;\n }\n\n for (const key in a) {\n const value = a[key];\n\n if (value !== b[key]) {\n return false;\n }\n }\n\n return true;\n};\n\nconst normalizeRange = function (range) {\n if (range == null) return;\n\n if (!Array.isArray(range)) {\n range = [range, range];\n }\n\n return [copyValue(range[0]), copyValue(range[1] != null ? range[1] : range[0])];\n};\nconst rangeIsCollapsed = function (range) {\n if (range == null) return;\n const [start, end] = normalizeRange(range);\n return rangeValuesAreEqual(start, end);\n};\nconst rangesAreEqual = function (leftRange, rightRange) {\n if (leftRange == null || rightRange == null) return;\n const [leftStart, leftEnd] = normalizeRange(leftRange);\n const [rightStart, rightEnd] = normalizeRange(rightRange);\n return rangeValuesAreEqual(leftStart, rightStart) && rangeValuesAreEqual(leftEnd, rightEnd);\n};\n\nconst copyValue = function (value) {\n if (typeof value === \"number\") {\n return value;\n } else {\n return copyObject(value);\n }\n};\n\nconst rangeValuesAreEqual = function (left, right) {\n if (typeof left === \"number\") {\n return left === right;\n } else {\n return objectsAreEqual(left, right);\n }\n};\n\n/* eslint-disable\n id-length,\n*/\nclass SelectionChangeObserver extends BasicObject {\n constructor() {\n super(...arguments);\n this.update = this.update.bind(this);\n this.run = this.run.bind(this);\n this.selectionManagers = [];\n }\n\n start() {\n if (!this.started) {\n this.started = true;\n\n if (\"onselectionchange\" in document) {\n return document.addEventListener(\"selectionchange\", this.update, true);\n } else {\n return this.run();\n }\n }\n }\n\n stop() {\n if (this.started) {\n this.started = false;\n return document.removeEventListener(\"selectionchange\", this.update, true);\n }\n }\n\n registerSelectionManager(selectionManager) {\n if (!this.selectionManagers.includes(selectionManager)) {\n this.selectionManagers.push(selectionManager);\n return this.start();\n }\n }\n\n unregisterSelectionManager(selectionManager) {\n this.selectionManagers = this.selectionManagers.filter(s => s !== selectionManager);\n\n if (this.selectionManagers.length === 0) {\n return this.stop();\n }\n }\n\n notifySelectionManagersOfSelectionChange() {\n return this.selectionManagers.map(selectionManager => selectionManager.selectionDidChange());\n }\n\n update() {\n const domRange = getDOMRange();\n\n if (!domRangesAreEqual(domRange, this.domRange)) {\n this.domRange = domRange;\n return this.notifySelectionManagersOfSelectionChange();\n }\n }\n\n reset() {\n this.domRange = null;\n return this.update();\n } // Private\n\n\n run() {\n if (this.started) {\n this.update();\n return requestAnimationFrame(this.run);\n }\n }\n\n}\n\nconst domRangesAreEqual = (left, right) => (left === null || left === void 0 ? void 0 : left.startContainer) === (right === null || right === void 0 ? void 0 : right.startContainer) && (left === null || left === void 0 ? void 0 : left.startOffset) === (right === null || right === void 0 ? void 0 : right.startOffset) && (left === null || left === void 0 ? void 0 : left.endContainer) === (right === null || right === void 0 ? void 0 : right.endContainer) && (left === null || left === void 0 ? void 0 : left.endOffset) === (right === null || right === void 0 ? void 0 : right.endOffset);\n\nconst selectionChangeObserver = new SelectionChangeObserver();\nconst getDOMSelection = function () {\n const selection = window.getSelection();\n\n if (selection.rangeCount > 0) {\n return selection;\n }\n};\nconst getDOMRange = function () {\n var _getDOMSelection;\n\n const domRange = (_getDOMSelection = getDOMSelection()) === null || _getDOMSelection === void 0 ? void 0 : _getDOMSelection.getRangeAt(0);\n\n if (domRange) {\n if (!domRangeIsPrivate(domRange)) {\n return domRange;\n }\n }\n};\nconst setDOMRange = function (domRange) {\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(domRange);\n return selectionChangeObserver.update();\n}; // In Firefox, clicking certain elements changes the selection to a\n// private element used to draw its UI. Attempting to access properties of those\n// elements throws an error.\n// https://bugzilla.mozilla.org/show_bug.cgi?id=208427\n\nconst domRangeIsPrivate = domRange => nodeIsPrivate(domRange.startContainer) || nodeIsPrivate(domRange.endContainer);\n\nconst nodeIsPrivate = node => !Object.getPrototypeOf(node);\n\n/* eslint-disable\n id-length,\n no-useless-escape,\n*/\nconst normalizeSpaces = string => string.replace(new RegExp(\"\".concat(ZERO_WIDTH_SPACE), \"g\"), \"\").replace(new RegExp(\"\".concat(NON_BREAKING_SPACE), \"g\"), \" \");\nconst normalizeNewlines = string => string.replace(/\\r\\n/g, \"\\n\");\nconst breakableWhitespacePattern = new RegExp(\"[^\\\\S\".concat(NON_BREAKING_SPACE, \"]\"));\nconst squishBreakableWhitespace = string => string // Replace all breakable whitespace characters with a space\n.replace(new RegExp(\"\".concat(breakableWhitespacePattern.source), \"g\"), \" \") // Replace two or more spaces with a single space\n.replace(/\\ {2,}/g, \" \");\nconst summarizeStringChange = function (oldString, newString) {\n let added, removed;\n oldString = UTF16String.box(oldString);\n newString = UTF16String.box(newString);\n\n if (newString.length < oldString.length) {\n [removed, added] = utf16StringDifferences(oldString, newString);\n } else {\n [added, removed] = utf16StringDifferences(newString, oldString);\n }\n\n return {\n added,\n removed\n };\n};\n\nconst utf16StringDifferences = function (a, b) {\n if (a.isEqualTo(b)) {\n return [\"\", \"\"];\n }\n\n const diffA = utf16StringDifference(a, b);\n const {\n length\n } = diffA.utf16String;\n let diffB;\n\n if (length) {\n const {\n offset\n } = diffA;\n const codepoints = a.codepoints.slice(0, offset).concat(a.codepoints.slice(offset + length));\n diffB = utf16StringDifference(b, UTF16String.fromCodepoints(codepoints));\n } else {\n diffB = utf16StringDifference(b, a);\n }\n\n return [diffA.utf16String.toString(), diffB.utf16String.toString()];\n};\n\nconst utf16StringDifference = function (a, b) {\n let leftIndex = 0;\n let rightIndexA = a.length;\n let rightIndexB = b.length;\n\n while (leftIndex < rightIndexA && a.charAt(leftIndex).isEqualTo(b.charAt(leftIndex))) {\n leftIndex++;\n }\n\n while (rightIndexA > leftIndex + 1 && a.charAt(rightIndexA - 1).isEqualTo(b.charAt(rightIndexB - 1))) {\n rightIndexA--;\n rightIndexB--;\n }\n\n return {\n utf16String: a.slice(leftIndex, rightIndexA),\n offset: leftIndex\n };\n};\n\nclass Hash extends TrixObject {\n static fromCommonAttributesOfObjects() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\n if (!objects.length) {\n return new this();\n }\n\n let hash = box(objects[0]);\n let keys = hash.getKeys();\n objects.slice(1).forEach(object => {\n keys = hash.getKeysCommonToHash(box(object));\n hash = hash.slice(keys);\n });\n return hash;\n }\n\n static box(values) {\n return box(values);\n }\n\n constructor() {\n let values = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super(...arguments);\n this.values = copy(values);\n }\n\n add(key, value) {\n return this.merge(object(key, value));\n }\n\n remove(key) {\n return new Hash(copy(this.values, key));\n }\n\n get(key) {\n return this.values[key];\n }\n\n has(key) {\n return key in this.values;\n }\n\n merge(values) {\n return new Hash(merge(this.values, unbox(values)));\n }\n\n slice(keys) {\n const values = {};\n keys.forEach(key => {\n if (this.has(key)) {\n values[key] = this.values[key];\n }\n });\n return new Hash(values);\n }\n\n getKeys() {\n return Object.keys(this.values);\n }\n\n getKeysCommonToHash(hash) {\n hash = box(hash);\n return this.getKeys().filter(key => this.values[key] === hash.values[key]);\n }\n\n isEqualTo(values) {\n return arraysAreEqual(this.toArray(), box(values).toArray());\n }\n\n isEmpty() {\n return this.getKeys().length === 0;\n }\n\n toArray() {\n if (!this.array) {\n const result = [];\n\n for (const key in this.values) {\n const value = this.values[key];\n result.push(result.push(key, value));\n }\n\n this.array = result.slice(0);\n }\n\n return this.array;\n }\n\n toObject() {\n return copy(this.values);\n }\n\n toJSON() {\n return this.toObject();\n }\n\n contentsForInspection() {\n return {\n values: JSON.stringify(this.values)\n };\n }\n\n}\n\nconst object = function (key, value) {\n const result = {};\n result[key] = value;\n return result;\n};\n\nconst merge = function (object, values) {\n const result = copy(object);\n\n for (const key in values) {\n const value = values[key];\n result[key] = value;\n }\n\n return result;\n};\n\nconst copy = function (object, keyToRemove) {\n const result = {};\n const sortedKeys = Object.keys(object).sort();\n sortedKeys.forEach(key => {\n if (key !== keyToRemove) {\n result[key] = object[key];\n }\n });\n return result;\n};\n\nconst box = function (object) {\n if (object instanceof Hash) {\n return object;\n } else {\n return new Hash(object);\n }\n};\n\nconst unbox = function (object) {\n if (object instanceof Hash) {\n return object.values;\n } else {\n return object;\n }\n};\n\nclass Operation extends BasicObject {\n isPerforming() {\n return this.performing === true;\n }\n\n hasPerformed() {\n return this.performed === true;\n }\n\n hasSucceeded() {\n return this.performed && this.succeeded;\n }\n\n hasFailed() {\n return this.performed && !this.succeeded;\n }\n\n getPromise() {\n if (!this.promise) {\n this.promise = new Promise((resolve, reject) => {\n this.performing = true;\n return this.perform((succeeded, result) => {\n this.succeeded = succeeded;\n this.performing = false;\n this.performed = true;\n\n if (this.succeeded) {\n resolve(result);\n } else {\n reject(result);\n }\n });\n });\n }\n\n return this.promise;\n }\n\n perform(callback) {\n return callback(false);\n }\n\n release() {\n var _this$promise, _this$promise$cancel;\n\n (_this$promise = this.promise) === null || _this$promise === void 0 ? void 0 : (_this$promise$cancel = _this$promise.cancel) === null || _this$promise$cancel === void 0 ? void 0 : _this$promise$cancel.call(_this$promise);\n this.promise = null;\n this.performing = null;\n this.performed = null;\n this.succeeded = null;\n }\n\n}\nOperation.proxyMethod(\"getPromise().then\");\nOperation.proxyMethod(\"getPromise().catch\");\n\nclass ImagePreloadOperation extends Operation {\n constructor(url) {\n super(...arguments);\n this.url = url;\n }\n\n perform(callback) {\n const image = new Image();\n\n image.onload = () => {\n image.width = this.width = image.naturalWidth;\n image.height = this.height = image.naturalHeight;\n return callback(true, image);\n };\n\n image.onerror = () => callback(false);\n\n image.src = this.url;\n }\n\n}\n\nclass Attachment extends TrixObject {\n static attachmentForFile(file) {\n const attributes = this.attributesForFile(file);\n const attachment = new this(attributes);\n attachment.setFile(file);\n return attachment;\n }\n\n static attributesForFile(file) {\n return new Hash({\n filename: file.name,\n filesize: file.size,\n contentType: file.type\n });\n }\n\n static fromJSON(attachmentJSON) {\n return new this(attachmentJSON);\n }\n\n constructor() {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n super(attributes);\n this.releaseFile = this.releaseFile.bind(this);\n this.attributes = Hash.box(attributes);\n this.didChangeAttributes();\n }\n\n getAttribute(attribute) {\n return this.attributes.get(attribute);\n }\n\n hasAttribute(attribute) {\n return this.attributes.has(attribute);\n }\n\n getAttributes() {\n return this.attributes.toObject();\n }\n\n setAttributes() {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const newAttributes = this.attributes.merge(attributes);\n\n if (!this.attributes.isEqualTo(newAttributes)) {\n var _this$previewDelegate, _this$previewDelegate2, _this$delegate, _this$delegate$attach;\n\n this.attributes = newAttributes;\n this.didChangeAttributes();\n (_this$previewDelegate = this.previewDelegate) === null || _this$previewDelegate === void 0 ? void 0 : (_this$previewDelegate2 = _this$previewDelegate.attachmentDidChangeAttributes) === null || _this$previewDelegate2 === void 0 ? void 0 : _this$previewDelegate2.call(_this$previewDelegate, this);\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$attach = _this$delegate.attachmentDidChangeAttributes) === null || _this$delegate$attach === void 0 ? void 0 : _this$delegate$attach.call(_this$delegate, this);\n }\n }\n\n didChangeAttributes() {\n if (this.isPreviewable()) {\n return this.preloadURL();\n }\n }\n\n isPending() {\n return this.file != null && !(this.getURL() || this.getHref());\n }\n\n isPreviewable() {\n if (this.attributes.has(\"previewable\")) {\n return this.attributes.get(\"previewable\");\n } else {\n return Attachment.previewablePattern.test(this.getContentType());\n }\n }\n\n getType() {\n if (this.hasContent()) {\n return \"content\";\n } else if (this.isPreviewable()) {\n return \"preview\";\n } else {\n return \"file\";\n }\n }\n\n getURL() {\n return this.attributes.get(\"url\");\n }\n\n getHref() {\n return this.attributes.get(\"href\");\n }\n\n getFilename() {\n return this.attributes.get(\"filename\") || \"\";\n }\n\n getFilesize() {\n return this.attributes.get(\"filesize\");\n }\n\n getFormattedFilesize() {\n const filesize = this.attributes.get(\"filesize\");\n\n if (typeof filesize === \"number\") {\n return config.fileSize.formatter(filesize);\n } else {\n return \"\";\n }\n }\n\n getExtension() {\n var _this$getFilename$mat;\n\n return (_this$getFilename$mat = this.getFilename().match(/\\.(\\w+)$/)) === null || _this$getFilename$mat === void 0 ? void 0 : _this$getFilename$mat[1].toLowerCase();\n }\n\n getContentType() {\n return this.attributes.get(\"contentType\");\n }\n\n hasContent() {\n return this.attributes.has(\"content\");\n }\n\n getContent() {\n return this.attributes.get(\"content\");\n }\n\n getWidth() {\n return this.attributes.get(\"width\");\n }\n\n getHeight() {\n return this.attributes.get(\"height\");\n }\n\n getFile() {\n return this.file;\n }\n\n setFile(file) {\n this.file = file;\n\n if (this.isPreviewable()) {\n return this.preloadFile();\n }\n }\n\n releaseFile() {\n this.releasePreloadedFile();\n this.file = null;\n }\n\n getUploadProgress() {\n return this.uploadProgress != null ? this.uploadProgress : 0;\n }\n\n setUploadProgress(value) {\n if (this.uploadProgress !== value) {\n var _this$uploadProgressD, _this$uploadProgressD2;\n\n this.uploadProgress = value;\n return (_this$uploadProgressD = this.uploadProgressDelegate) === null || _this$uploadProgressD === void 0 ? void 0 : (_this$uploadProgressD2 = _this$uploadProgressD.attachmentDidChangeUploadProgress) === null || _this$uploadProgressD2 === void 0 ? void 0 : _this$uploadProgressD2.call(_this$uploadProgressD, this);\n }\n }\n\n toJSON() {\n return this.getAttributes();\n }\n\n getCacheKey() {\n return [super.getCacheKey(...arguments), this.attributes.getCacheKey(), this.getPreviewURL()].join(\"/\");\n } // Previewable\n\n\n getPreviewURL() {\n return this.previewURL || this.preloadingURL;\n }\n\n setPreviewURL(url) {\n if (url !== this.getPreviewURL()) {\n var _this$previewDelegate3, _this$previewDelegate4, _this$delegate2, _this$delegate2$attac;\n\n this.previewURL = url;\n (_this$previewDelegate3 = this.previewDelegate) === null || _this$previewDelegate3 === void 0 ? void 0 : (_this$previewDelegate4 = _this$previewDelegate3.attachmentDidChangeAttributes) === null || _this$previewDelegate4 === void 0 ? void 0 : _this$previewDelegate4.call(_this$previewDelegate3, this);\n return (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$attac = _this$delegate2.attachmentDidChangePreviewURL) === null || _this$delegate2$attac === void 0 ? void 0 : _this$delegate2$attac.call(_this$delegate2, this);\n }\n }\n\n preloadURL() {\n return this.preload(this.getURL(), this.releaseFile);\n }\n\n preloadFile() {\n if (this.file) {\n this.fileObjectURL = URL.createObjectURL(this.file);\n return this.preload(this.fileObjectURL);\n }\n }\n\n releasePreloadedFile() {\n if (this.fileObjectURL) {\n URL.revokeObjectURL(this.fileObjectURL);\n this.fileObjectURL = null;\n }\n }\n\n preload(url, callback) {\n if (url && url !== this.getPreviewURL()) {\n this.preloadingURL = url;\n const operation = new ImagePreloadOperation(url);\n return operation.then(_ref => {\n let {\n width,\n height\n } = _ref;\n\n if (!this.getWidth() || !this.getHeight()) {\n this.setAttributes({\n width,\n height\n });\n }\n\n this.preloadingURL = null;\n this.setPreviewURL(url);\n return callback === null || callback === void 0 ? void 0 : callback();\n }).catch(() => {\n this.preloadingURL = null;\n return callback === null || callback === void 0 ? void 0 : callback();\n });\n }\n }\n\n}\n\n_defineProperty(Attachment, \"previewablePattern\", /^image(\\/(gif|png|jpe?g)|$)/);\n\nclass ManagedAttachment extends BasicObject {\n constructor(attachmentManager, attachment) {\n super(...arguments);\n this.attachmentManager = attachmentManager;\n this.attachment = attachment;\n this.id = this.attachment.id;\n this.file = this.attachment.file;\n }\n\n remove() {\n return this.attachmentManager.requestRemovalOfAttachment(this.attachment);\n }\n\n}\nManagedAttachment.proxyMethod(\"attachment.getAttribute\");\nManagedAttachment.proxyMethod(\"attachment.hasAttribute\");\nManagedAttachment.proxyMethod(\"attachment.setAttribute\");\nManagedAttachment.proxyMethod(\"attachment.getAttributes\");\nManagedAttachment.proxyMethod(\"attachment.setAttributes\");\nManagedAttachment.proxyMethod(\"attachment.isPending\");\nManagedAttachment.proxyMethod(\"attachment.isPreviewable\");\nManagedAttachment.proxyMethod(\"attachment.getURL\");\nManagedAttachment.proxyMethod(\"attachment.getHref\");\nManagedAttachment.proxyMethod(\"attachment.getFilename\");\nManagedAttachment.proxyMethod(\"attachment.getFilesize\");\nManagedAttachment.proxyMethod(\"attachment.getFormattedFilesize\");\nManagedAttachment.proxyMethod(\"attachment.getExtension\");\nManagedAttachment.proxyMethod(\"attachment.getContentType\");\nManagedAttachment.proxyMethod(\"attachment.getFile\");\nManagedAttachment.proxyMethod(\"attachment.setFile\");\nManagedAttachment.proxyMethod(\"attachment.releaseFile\");\nManagedAttachment.proxyMethod(\"attachment.getUploadProgress\");\nManagedAttachment.proxyMethod(\"attachment.setUploadProgress\");\n\nclass AttachmentManager extends BasicObject {\n constructor() {\n let attachments = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n this.managedAttachments = {};\n Array.from(attachments).forEach(attachment => {\n this.manageAttachment(attachment);\n });\n }\n\n getAttachments() {\n const result = [];\n\n for (const id in this.managedAttachments) {\n const attachment = this.managedAttachments[id];\n result.push(attachment);\n }\n\n return result;\n }\n\n manageAttachment(attachment) {\n if (!this.managedAttachments[attachment.id]) {\n this.managedAttachments[attachment.id] = new ManagedAttachment(this, attachment);\n }\n\n return this.managedAttachments[attachment.id];\n }\n\n attachmentIsManaged(attachment) {\n return attachment.id in this.managedAttachments;\n }\n\n requestRemovalOfAttachment(attachment) {\n if (this.attachmentIsManaged(attachment)) {\n var _this$delegate, _this$delegate$attach;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$attach = _this$delegate.attachmentManagerDidRequestRemovalOfAttachment) === null || _this$delegate$attach === void 0 ? void 0 : _this$delegate$attach.call(_this$delegate, attachment);\n }\n }\n\n unmanageAttachment(attachment) {\n const managedAttachment = this.managedAttachments[attachment.id];\n delete this.managedAttachments[attachment.id];\n return managedAttachment;\n }\n\n}\n\nclass Piece extends TrixObject {\n static registerType(type, constructor) {\n constructor.type = type;\n this.types[type] = constructor;\n }\n\n static fromJSON(pieceJSON) {\n const constructor = this.types[pieceJSON.type];\n\n if (constructor) {\n return constructor.fromJSON(pieceJSON);\n }\n }\n\n constructor(value) {\n let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.attributes = Hash.box(attributes);\n }\n\n copyWithAttributes(attributes) {\n return new this.constructor(this.getValue(), attributes);\n }\n\n copyWithAdditionalAttributes(attributes) {\n return this.copyWithAttributes(this.attributes.merge(attributes));\n }\n\n copyWithoutAttribute(attribute) {\n return this.copyWithAttributes(this.attributes.remove(attribute));\n }\n\n copy() {\n return this.copyWithAttributes(this.attributes);\n }\n\n getAttribute(attribute) {\n return this.attributes.get(attribute);\n }\n\n getAttributesHash() {\n return this.attributes;\n }\n\n getAttributes() {\n return this.attributes.toObject();\n }\n\n hasAttribute(attribute) {\n return this.attributes.has(attribute);\n }\n\n hasSameStringValueAsPiece(piece) {\n return piece && this.toString() === piece.toString();\n }\n\n hasSameAttributesAsPiece(piece) {\n return piece && (this.attributes === piece.attributes || this.attributes.isEqualTo(piece.attributes));\n }\n\n isBlockBreak() {\n return false;\n }\n\n isEqualTo(piece) {\n return super.isEqualTo(...arguments) || this.hasSameConstructorAs(piece) && this.hasSameStringValueAsPiece(piece) && this.hasSameAttributesAsPiece(piece);\n }\n\n isEmpty() {\n return this.length === 0;\n }\n\n isSerializable() {\n return true;\n }\n\n toJSON() {\n return {\n type: this.constructor.type,\n attributes: this.getAttributes()\n };\n }\n\n contentsForInspection() {\n return {\n type: this.constructor.type,\n attributes: this.attributes.inspect()\n };\n } // Grouping\n\n\n canBeGrouped() {\n return this.hasAttribute(\"href\");\n }\n\n canBeGroupedWith(piece) {\n return this.getAttribute(\"href\") === piece.getAttribute(\"href\");\n } // Splittable\n\n\n getLength() {\n return this.length;\n }\n\n canBeConsolidatedWith(piece) {\n return false;\n }\n\n}\n\n_defineProperty(Piece, \"types\", {});\n\nclass AttachmentPiece extends Piece {\n static fromJSON(pieceJSON) {\n return new this(Attachment.fromJSON(pieceJSON.attachment), pieceJSON.attributes);\n }\n\n constructor(attachment) {\n super(...arguments);\n this.attachment = attachment;\n this.length = 1;\n this.ensureAttachmentExclusivelyHasAttribute(\"href\");\n\n if (!this.attachment.hasContent()) {\n this.removeProhibitedAttributes();\n }\n }\n\n ensureAttachmentExclusivelyHasAttribute(attribute) {\n if (this.hasAttribute(attribute)) {\n if (!this.attachment.hasAttribute(attribute)) {\n this.attachment.setAttributes(this.attributes.slice(attribute));\n }\n\n this.attributes = this.attributes.remove(attribute);\n }\n }\n\n removeProhibitedAttributes() {\n const attributes = this.attributes.slice(AttachmentPiece.permittedAttributes);\n\n if (!attributes.isEqualTo(this.attributes)) {\n this.attributes = attributes;\n }\n }\n\n getValue() {\n return this.attachment;\n }\n\n isSerializable() {\n return !this.attachment.isPending();\n }\n\n getCaption() {\n return this.attributes.get(\"caption\") || \"\";\n }\n\n isEqualTo(piece) {\n var _piece$attachment;\n\n return super.isEqualTo(piece) && this.attachment.id === (piece === null || piece === void 0 ? void 0 : (_piece$attachment = piece.attachment) === null || _piece$attachment === void 0 ? void 0 : _piece$attachment.id);\n }\n\n toString() {\n return OBJECT_REPLACEMENT_CHARACTER;\n }\n\n toJSON() {\n const json = super.toJSON(...arguments);\n json.attachment = this.attachment;\n return json;\n }\n\n getCacheKey() {\n return [super.getCacheKey(...arguments), this.attachment.getCacheKey()].join(\"/\");\n }\n\n toConsole() {\n return JSON.stringify(this.toString());\n }\n\n}\n\n_defineProperty(AttachmentPiece, \"permittedAttributes\", [\"caption\", \"presentation\"]);\n\nPiece.registerType(\"attachment\", AttachmentPiece);\n\nclass StringPiece extends Piece {\n static fromJSON(pieceJSON) {\n return new this(pieceJSON.string, pieceJSON.attributes);\n }\n\n constructor(string) {\n super(...arguments);\n this.string = normalizeNewlines(string);\n this.length = this.string.length;\n }\n\n getValue() {\n return this.string;\n }\n\n toString() {\n return this.string.toString();\n }\n\n isBlockBreak() {\n return this.toString() === \"\\n\" && this.getAttribute(\"blockBreak\") === true;\n }\n\n toJSON() {\n const result = super.toJSON(...arguments);\n result.string = this.string;\n return result;\n } // Splittable\n\n\n canBeConsolidatedWith(piece) {\n return piece && this.hasSameConstructorAs(piece) && this.hasSameAttributesAsPiece(piece);\n }\n\n consolidateWith(piece) {\n return new this.constructor(this.toString() + piece.toString(), this.attributes);\n }\n\n splitAtOffset(offset) {\n let left, right;\n\n if (offset === 0) {\n left = null;\n right = this;\n } else if (offset === this.length) {\n left = this;\n right = null;\n } else {\n left = new this.constructor(this.string.slice(0, offset), this.attributes);\n right = new this.constructor(this.string.slice(offset), this.attributes);\n }\n\n return [left, right];\n }\n\n toConsole() {\n let {\n string\n } = this;\n\n if (string.length > 15) {\n string = string.slice(0, 14) + \"…\";\n }\n\n return JSON.stringify(string.toString());\n }\n\n}\nPiece.registerType(\"string\", StringPiece);\n\n/* eslint-disable\n prefer-const,\n*/\nclass SplittableList extends TrixObject {\n static box(objects) {\n if (objects instanceof this) {\n return objects;\n } else {\n return new this(objects);\n }\n }\n\n constructor() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n this.objects = objects.slice(0);\n this.length = this.objects.length;\n }\n\n indexOf(object) {\n return this.objects.indexOf(object);\n }\n\n splice() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return new this.constructor(spliceArray(this.objects, ...args));\n }\n\n eachObject(callback) {\n return this.objects.map((object, index) => callback(object, index));\n }\n\n insertObjectAtIndex(object, index) {\n return this.splice(index, 0, object);\n }\n\n insertSplittableListAtIndex(splittableList, index) {\n return this.splice(index, 0, ...splittableList.objects);\n }\n\n insertSplittableListAtPosition(splittableList, position) {\n const [objects, index] = this.splitObjectAtPosition(position);\n return new this.constructor(objects).insertSplittableListAtIndex(splittableList, index);\n }\n\n editObjectAtIndex(index, callback) {\n return this.replaceObjectAtIndex(callback(this.objects[index]), index);\n }\n\n replaceObjectAtIndex(object, index) {\n return this.splice(index, 1, object);\n }\n\n removeObjectAtIndex(index) {\n return this.splice(index, 1);\n }\n\n getObjectAtIndex(index) {\n return this.objects[index];\n }\n\n getSplittableListInRange(range) {\n const [objects, leftIndex, rightIndex] = this.splitObjectsAtRange(range);\n return new this.constructor(objects.slice(leftIndex, rightIndex + 1));\n }\n\n selectSplittableList(test) {\n const objects = this.objects.filter(object => test(object));\n return new this.constructor(objects);\n }\n\n removeObjectsInRange(range) {\n const [objects, leftIndex, rightIndex] = this.splitObjectsAtRange(range);\n return new this.constructor(objects).splice(leftIndex, rightIndex - leftIndex + 1);\n }\n\n transformObjectsInRange(range, transform) {\n const [objects, leftIndex, rightIndex] = this.splitObjectsAtRange(range);\n const transformedObjects = objects.map((object, index) => leftIndex <= index && index <= rightIndex ? transform(object) : object);\n return new this.constructor(transformedObjects);\n }\n\n splitObjectsAtRange(range) {\n let rightOuterIndex;\n let [objects, leftInnerIndex, offset] = this.splitObjectAtPosition(startOfRange(range));\n [objects, rightOuterIndex] = new this.constructor(objects).splitObjectAtPosition(endOfRange(range) + offset);\n return [objects, leftInnerIndex, rightOuterIndex - 1];\n }\n\n getObjectAtPosition(position) {\n const {\n index\n } = this.findIndexAndOffsetAtPosition(position);\n return this.objects[index];\n }\n\n splitObjectAtPosition(position) {\n let splitIndex, splitOffset;\n const {\n index,\n offset\n } = this.findIndexAndOffsetAtPosition(position);\n const objects = this.objects.slice(0);\n\n if (index != null) {\n if (offset === 0) {\n splitIndex = index;\n splitOffset = 0;\n } else {\n const object = this.getObjectAtIndex(index);\n const [leftObject, rightObject] = object.splitAtOffset(offset);\n objects.splice(index, 1, leftObject, rightObject);\n splitIndex = index + 1;\n splitOffset = leftObject.getLength() - offset;\n }\n } else {\n splitIndex = objects.length;\n splitOffset = 0;\n }\n\n return [objects, splitIndex, splitOffset];\n }\n\n consolidate() {\n const objects = [];\n let pendingObject = this.objects[0];\n this.objects.slice(1).forEach(object => {\n var _pendingObject$canBeC, _pendingObject;\n\n if ((_pendingObject$canBeC = (_pendingObject = pendingObject).canBeConsolidatedWith) !== null && _pendingObject$canBeC !== void 0 && _pendingObject$canBeC.call(_pendingObject, object)) {\n pendingObject = pendingObject.consolidateWith(object);\n } else {\n objects.push(pendingObject);\n pendingObject = object;\n }\n });\n\n if (pendingObject) {\n objects.push(pendingObject);\n }\n\n return new this.constructor(objects);\n }\n\n consolidateFromIndexToIndex(startIndex, endIndex) {\n const objects = this.objects.slice(0);\n const objectsInRange = objects.slice(startIndex, endIndex + 1);\n const consolidatedInRange = new this.constructor(objectsInRange).consolidate().toArray();\n return this.splice(startIndex, objectsInRange.length, ...consolidatedInRange);\n }\n\n findIndexAndOffsetAtPosition(position) {\n let index;\n let currentPosition = 0;\n\n for (index = 0; index < this.objects.length; index++) {\n const object = this.objects[index];\n const nextPosition = currentPosition + object.getLength();\n\n if (currentPosition <= position && position < nextPosition) {\n return {\n index,\n offset: position - currentPosition\n };\n }\n\n currentPosition = nextPosition;\n }\n\n return {\n index: null,\n offset: null\n };\n }\n\n findPositionAtIndexAndOffset(index, offset) {\n let position = 0;\n\n for (let currentIndex = 0; currentIndex < this.objects.length; currentIndex++) {\n const object = this.objects[currentIndex];\n\n if (currentIndex < index) {\n position += object.getLength();\n } else if (currentIndex === index) {\n position += offset;\n break;\n }\n }\n\n return position;\n }\n\n getEndPosition() {\n if (this.endPosition == null) {\n this.endPosition = 0;\n this.objects.forEach(object => this.endPosition += object.getLength());\n }\n\n return this.endPosition;\n }\n\n toString() {\n return this.objects.join(\"\");\n }\n\n toArray() {\n return this.objects.slice(0);\n }\n\n toJSON() {\n return this.toArray();\n }\n\n isEqualTo(splittableList) {\n return super.isEqualTo(...arguments) || objectArraysAreEqual(this.objects, splittableList === null || splittableList === void 0 ? void 0 : splittableList.objects);\n }\n\n contentsForInspection() {\n return {\n objects: \"[\".concat(this.objects.map(object => object.inspect()).join(\", \"), \"]\")\n };\n }\n\n}\n\nconst objectArraysAreEqual = function (left) {\n let right = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\n if (left.length !== right.length) {\n return false;\n }\n\n let result = true;\n\n for (let index = 0; index < left.length; index++) {\n const object = left[index];\n\n if (result && !object.isEqualTo(right[index])) {\n result = false;\n }\n }\n\n return result;\n};\n\nconst startOfRange = range => range[0];\n\nconst endOfRange = range => range[1];\n\nclass Text extends TrixObject {\n static textForAttachmentWithAttributes(attachment, attributes) {\n const piece = new AttachmentPiece(attachment, attributes);\n return new this([piece]);\n }\n\n static textForStringWithAttributes(string, attributes) {\n const piece = new StringPiece(string, attributes);\n return new this([piece]);\n }\n\n static fromJSON(textJSON) {\n const pieces = Array.from(textJSON).map(pieceJSON => Piece.fromJSON(pieceJSON));\n return new this(pieces);\n }\n\n constructor() {\n let pieces = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n const notEmpty = pieces.filter(piece => !piece.isEmpty());\n this.pieceList = new SplittableList(notEmpty);\n }\n\n copy() {\n return this.copyWithPieceList(this.pieceList);\n }\n\n copyWithPieceList(pieceList) {\n return new this.constructor(pieceList.consolidate().toArray());\n }\n\n copyUsingObjectMap(objectMap) {\n const pieces = this.getPieces().map(piece => objectMap.find(piece) || piece);\n return new this.constructor(pieces);\n }\n\n appendText(text) {\n return this.insertTextAtPosition(text, this.getLength());\n }\n\n insertTextAtPosition(text, position) {\n return this.copyWithPieceList(this.pieceList.insertSplittableListAtPosition(text.pieceList, position));\n }\n\n removeTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.removeObjectsInRange(range));\n }\n\n replaceTextAtRange(text, range) {\n return this.removeTextAtRange(range).insertTextAtPosition(text, range[0]);\n }\n\n moveTextFromRangeToPosition(range, position) {\n if (range[0] <= position && position <= range[1]) return;\n const text = this.getTextAtRange(range);\n const length = text.getLength();\n\n if (range[0] < position) {\n position -= length;\n }\n\n return this.removeTextAtRange(range).insertTextAtPosition(text, position);\n }\n\n addAttributeAtRange(attribute, value, range) {\n const attributes = {};\n attributes[attribute] = value;\n return this.addAttributesAtRange(attributes, range);\n }\n\n addAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, piece => piece.copyWithAdditionalAttributes(attributes)));\n }\n\n removeAttributeAtRange(attribute, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, piece => piece.copyWithoutAttribute(attribute)));\n }\n\n setAttributesAtRange(attributes, range) {\n return this.copyWithPieceList(this.pieceList.transformObjectsInRange(range, piece => piece.copyWithAttributes(attributes)));\n }\n\n getAttributesAtPosition(position) {\n var _this$pieceList$getOb;\n\n return ((_this$pieceList$getOb = this.pieceList.getObjectAtPosition(position)) === null || _this$pieceList$getOb === void 0 ? void 0 : _this$pieceList$getOb.getAttributes()) || {};\n }\n\n getCommonAttributes() {\n const objects = Array.from(this.pieceList.toArray()).map(piece => piece.getAttributes());\n return Hash.fromCommonAttributesOfObjects(objects).toObject();\n }\n\n getCommonAttributesAtRange(range) {\n return this.getTextAtRange(range).getCommonAttributes() || {};\n }\n\n getExpandedRangeForAttributeAtOffset(attributeName, offset) {\n let right;\n let left = right = offset;\n const length = this.getLength();\n\n while (left > 0 && this.getCommonAttributesAtRange([left - 1, right])[attributeName]) {\n left--;\n }\n\n while (right < length && this.getCommonAttributesAtRange([offset, right + 1])[attributeName]) {\n right++;\n }\n\n return [left, right];\n }\n\n getTextAtRange(range) {\n return this.copyWithPieceList(this.pieceList.getSplittableListInRange(range));\n }\n\n getStringAtRange(range) {\n return this.pieceList.getSplittableListInRange(range).toString();\n }\n\n getStringAtPosition(position) {\n return this.getStringAtRange([position, position + 1]);\n }\n\n startsWithString(string) {\n return this.getStringAtRange([0, string.length]) === string;\n }\n\n endsWithString(string) {\n const length = this.getLength();\n return this.getStringAtRange([length - string.length, length]) === string;\n }\n\n getAttachmentPieces() {\n return this.pieceList.toArray().filter(piece => !!piece.attachment);\n }\n\n getAttachments() {\n return this.getAttachmentPieces().map(piece => piece.attachment);\n }\n\n getAttachmentAndPositionById(attachmentId) {\n let position = 0;\n\n for (const piece of this.pieceList.toArray()) {\n var _piece$attachment;\n\n if (((_piece$attachment = piece.attachment) === null || _piece$attachment === void 0 ? void 0 : _piece$attachment.id) === attachmentId) {\n return {\n attachment: piece.attachment,\n position\n };\n }\n\n position += piece.length;\n }\n\n return {\n attachment: null,\n position: null\n };\n }\n\n getAttachmentById(attachmentId) {\n const {\n attachment\n } = this.getAttachmentAndPositionById(attachmentId);\n return attachment;\n }\n\n getRangeOfAttachment(attachment) {\n const attachmentAndPosition = this.getAttachmentAndPositionById(attachment.id);\n const position = attachmentAndPosition.position;\n attachment = attachmentAndPosition.attachment;\n\n if (attachment) {\n return [position, position + 1];\n }\n }\n\n updateAttributesForAttachment(attributes, attachment) {\n const range = this.getRangeOfAttachment(attachment);\n\n if (range) {\n return this.addAttributesAtRange(attributes, range);\n } else {\n return this;\n }\n }\n\n getLength() {\n return this.pieceList.getEndPosition();\n }\n\n isEmpty() {\n return this.getLength() === 0;\n }\n\n isEqualTo(text) {\n var _text$pieceList;\n\n return super.isEqualTo(text) || (text === null || text === void 0 ? void 0 : (_text$pieceList = text.pieceList) === null || _text$pieceList === void 0 ? void 0 : _text$pieceList.isEqualTo(this.pieceList));\n }\n\n isBlockBreak() {\n return this.getLength() === 1 && this.pieceList.getObjectAtIndex(0).isBlockBreak();\n }\n\n eachPiece(callback) {\n return this.pieceList.eachObject(callback);\n }\n\n getPieces() {\n return this.pieceList.toArray();\n }\n\n getPieceAtPosition(position) {\n return this.pieceList.getObjectAtPosition(position);\n }\n\n contentsForInspection() {\n return {\n pieceList: this.pieceList.inspect()\n };\n }\n\n toSerializableText() {\n const pieceList = this.pieceList.selectSplittableList(piece => piece.isSerializable());\n return this.copyWithPieceList(pieceList);\n }\n\n toString() {\n return this.pieceList.toString();\n }\n\n toJSON() {\n return this.pieceList.toJSON();\n }\n\n toConsole() {\n return JSON.stringify(this.pieceList.toArray().map(piece => JSON.parse(piece.toConsole())));\n } // BIDI\n\n\n getDirection() {\n return getDirection(this.toString());\n }\n\n isRTL() {\n return this.getDirection() === \"rtl\";\n }\n\n}\n\nclass Block extends TrixObject {\n static fromJSON(blockJSON) {\n const text = Text.fromJSON(blockJSON.text);\n return new this(text, blockJSON.attributes);\n }\n\n constructor(text, attributes) {\n super(...arguments);\n this.text = applyBlockBreakToText(text || new Text());\n this.attributes = attributes || [];\n }\n\n isEmpty() {\n return this.text.isBlockBreak();\n }\n\n isEqualTo(block) {\n if (super.isEqualTo(block)) return true;\n return this.text.isEqualTo(block === null || block === void 0 ? void 0 : block.text) && arraysAreEqual(this.attributes, block === null || block === void 0 ? void 0 : block.attributes);\n }\n\n copyWithText(text) {\n return new Block(text, this.attributes);\n }\n\n copyWithoutText() {\n return this.copyWithText(null);\n }\n\n copyWithAttributes(attributes) {\n return new Block(this.text, attributes);\n }\n\n copyWithoutAttributes() {\n return this.copyWithAttributes(null);\n }\n\n copyUsingObjectMap(objectMap) {\n const mappedText = objectMap.find(this.text);\n\n if (mappedText) {\n return this.copyWithText(mappedText);\n } else {\n return this.copyWithText(this.text.copyUsingObjectMap(objectMap));\n }\n }\n\n addAttribute(attribute) {\n const attributes = this.attributes.concat(expandAttribute(attribute));\n return this.copyWithAttributes(attributes);\n }\n\n removeAttribute(attribute) {\n const {\n listAttribute\n } = getBlockConfig(attribute);\n const attributes = removeLastValue(removeLastValue(this.attributes, attribute), listAttribute);\n return this.copyWithAttributes(attributes);\n }\n\n removeLastAttribute() {\n return this.removeAttribute(this.getLastAttribute());\n }\n\n getLastAttribute() {\n return getLastElement(this.attributes);\n }\n\n getAttributes() {\n return this.attributes.slice(0);\n }\n\n getAttributeLevel() {\n return this.attributes.length;\n }\n\n getAttributeAtLevel(level) {\n return this.attributes[level - 1];\n }\n\n hasAttribute(attributeName) {\n return this.attributes.includes(attributeName);\n }\n\n hasAttributes() {\n return this.getAttributeLevel() > 0;\n }\n\n getLastNestableAttribute() {\n return getLastElement(this.getNestableAttributes());\n }\n\n getNestableAttributes() {\n return this.attributes.filter(attribute => getBlockConfig(attribute).nestable);\n }\n\n getNestingLevel() {\n return this.getNestableAttributes().length;\n }\n\n decreaseNestingLevel() {\n const attribute = this.getLastNestableAttribute();\n\n if (attribute) {\n return this.removeAttribute(attribute);\n } else {\n return this;\n }\n }\n\n increaseNestingLevel() {\n const attribute = this.getLastNestableAttribute();\n\n if (attribute) {\n const index = this.attributes.lastIndexOf(attribute);\n const attributes = spliceArray(this.attributes, index + 1, 0, ...expandAttribute(attribute));\n return this.copyWithAttributes(attributes);\n } else {\n return this;\n }\n }\n\n getListItemAttributes() {\n return this.attributes.filter(attribute => getBlockConfig(attribute).listAttribute);\n }\n\n isListItem() {\n var _getBlockConfig;\n\n return (_getBlockConfig = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.listAttribute;\n }\n\n isTerminalBlock() {\n var _getBlockConfig2;\n\n return (_getBlockConfig2 = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig2 === void 0 ? void 0 : _getBlockConfig2.terminal;\n }\n\n breaksOnReturn() {\n var _getBlockConfig3;\n\n return (_getBlockConfig3 = getBlockConfig(this.getLastAttribute())) === null || _getBlockConfig3 === void 0 ? void 0 : _getBlockConfig3.breakOnReturn;\n }\n\n findLineBreakInDirectionFromPosition(direction, position) {\n const string = this.toString();\n let result;\n\n switch (direction) {\n case \"forward\":\n result = string.indexOf(\"\\n\", position);\n break;\n\n case \"backward\":\n result = string.slice(0, position).lastIndexOf(\"\\n\");\n }\n\n if (result !== -1) {\n return result;\n }\n }\n\n contentsForInspection() {\n return {\n text: this.text.inspect(),\n attributes: this.attributes\n };\n }\n\n toString() {\n return this.text.toString();\n }\n\n toJSON() {\n return {\n text: this.text,\n attributes: this.attributes\n };\n } // BIDI\n\n\n getDirection() {\n return this.text.getDirection();\n }\n\n isRTL() {\n return this.text.isRTL();\n } // Splittable\n\n\n getLength() {\n return this.text.getLength();\n }\n\n canBeConsolidatedWith(block) {\n return !this.hasAttributes() && !block.hasAttributes() && this.getDirection() === block.getDirection();\n }\n\n consolidateWith(block) {\n const newlineText = Text.textForStringWithAttributes(\"\\n\");\n const text = this.getTextWithoutBlockBreak().appendText(newlineText);\n return this.copyWithText(text.appendText(block.text));\n }\n\n splitAtOffset(offset) {\n let left, right;\n\n if (offset === 0) {\n left = null;\n right = this;\n } else if (offset === this.getLength()) {\n left = this;\n right = null;\n } else {\n left = this.copyWithText(this.text.getTextAtRange([0, offset]));\n right = this.copyWithText(this.text.getTextAtRange([offset, this.getLength()]));\n }\n\n return [left, right];\n }\n\n getBlockBreakPosition() {\n return this.text.getLength() - 1;\n }\n\n getTextWithoutBlockBreak() {\n if (textEndsInBlockBreak(this.text)) {\n return this.text.getTextAtRange([0, this.getBlockBreakPosition()]);\n } else {\n return this.text.copy();\n }\n } // Grouping\n\n\n canBeGrouped(depth) {\n return this.attributes[depth];\n }\n\n canBeGroupedWith(otherBlock, depth) {\n const otherAttributes = otherBlock.getAttributes();\n const otherAttribute = otherAttributes[depth];\n const attribute = this.attributes[depth];\n return attribute === otherAttribute && !(getBlockConfig(attribute).group === false && !getListAttributeNames().includes(otherAttributes[depth + 1])) && (this.getDirection() === otherBlock.getDirection() || otherBlock.isEmpty());\n }\n\n} // Block breaks\n\nconst applyBlockBreakToText = function (text) {\n text = unmarkExistingInnerBlockBreaksInText(text);\n text = addBlockBreakToText(text);\n return text;\n};\n\nconst unmarkExistingInnerBlockBreaksInText = function (text) {\n let modified = false;\n const pieces = text.getPieces();\n let innerPieces = pieces.slice(0, pieces.length - 1);\n const lastPiece = pieces[pieces.length - 1];\n if (!lastPiece) return text;\n innerPieces = innerPieces.map(piece => {\n if (piece.isBlockBreak()) {\n modified = true;\n return unmarkBlockBreakPiece(piece);\n } else {\n return piece;\n }\n });\n\n if (modified) {\n return new Text([...innerPieces, lastPiece]);\n } else {\n return text;\n }\n};\n\nconst blockBreakText = Text.textForStringWithAttributes(\"\\n\", {\n blockBreak: true\n});\n\nconst addBlockBreakToText = function (text) {\n if (textEndsInBlockBreak(text)) {\n return text;\n } else {\n return text.appendText(blockBreakText);\n }\n};\n\nconst textEndsInBlockBreak = function (text) {\n const length = text.getLength();\n\n if (length === 0) {\n return false;\n }\n\n const endText = text.getTextAtRange([length - 1, length]);\n return endText.isBlockBreak();\n};\n\nconst unmarkBlockBreakPiece = piece => piece.copyWithoutAttribute(\"blockBreak\"); // Attributes\n\n\nconst expandAttribute = function (attribute) {\n const {\n listAttribute\n } = getBlockConfig(attribute);\n\n if (listAttribute) {\n return [listAttribute, attribute];\n } else {\n return [attribute];\n }\n}; // Array helpers\n\n\nconst getLastElement = array => array.slice(-1)[0];\n\nconst removeLastValue = function (array, value) {\n const index = array.lastIndexOf(value);\n\n if (index === -1) {\n return array;\n } else {\n return spliceArray(array, index, 1);\n }\n};\n\nclass ObjectMap extends BasicObject {\n constructor() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n this.objects = {};\n Array.from(objects).forEach(object => {\n const hash = JSON.stringify(object);\n\n if (this.objects[hash] == null) {\n this.objects[hash] = object;\n }\n });\n }\n\n find(object) {\n const hash = JSON.stringify(object);\n return this.objects[hash];\n }\n\n}\n\nclass Document extends TrixObject {\n static fromJSON(documentJSON) {\n const blocks = Array.from(documentJSON).map(blockJSON => Block.fromJSON(blockJSON));\n return new this(blocks);\n }\n\n static fromString(string, textAttributes) {\n const text = Text.textForStringWithAttributes(string, textAttributes);\n return new this([new Block(text)]);\n }\n\n constructor() {\n let blocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n super(...arguments);\n\n if (blocks.length === 0) {\n blocks = [new Block()];\n }\n\n this.blockList = SplittableList.box(blocks);\n }\n\n isEmpty() {\n const block = this.getBlockAtIndex(0);\n return this.blockList.length === 1 && block.isEmpty() && !block.hasAttributes();\n }\n\n copy() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const blocks = options.consolidateBlocks ? this.blockList.consolidate().toArray() : this.blockList.toArray();\n return new this.constructor(blocks);\n }\n\n copyUsingObjectsFromDocument(sourceDocument) {\n const objectMap = new ObjectMap(sourceDocument.getObjects());\n return this.copyUsingObjectMap(objectMap);\n }\n\n copyUsingObjectMap(objectMap) {\n const blocks = this.getBlocks().map(block => {\n const mappedBlock = objectMap.find(block);\n return mappedBlock || block.copyUsingObjectMap(objectMap);\n });\n return new this.constructor(blocks);\n }\n\n copyWithBaseBlockAttributes() {\n let blockAttributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const blocks = this.getBlocks().map(block => {\n const attributes = blockAttributes.concat(block.getAttributes());\n return block.copyWithAttributes(attributes);\n });\n return new this.constructor(blocks);\n }\n\n replaceBlock(oldBlock, newBlock) {\n const index = this.blockList.indexOf(oldBlock);\n\n if (index === -1) {\n return this;\n }\n\n return new this.constructor(this.blockList.replaceObjectAtIndex(newBlock, index));\n }\n\n insertDocumentAtRange(document, range) {\n const {\n blockList\n } = document;\n range = normalizeRange(range);\n let [position] = range;\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n let result = this;\n const block = this.getBlockAtPosition(position);\n\n if (rangeIsCollapsed(range) && block.isEmpty() && !block.hasAttributes()) {\n result = new this.constructor(result.blockList.removeObjectAtIndex(index));\n } else if (block.getBlockBreakPosition() === offset) {\n position++;\n }\n\n result = result.removeTextAtRange(range);\n return new this.constructor(result.blockList.insertSplittableListAtPosition(blockList, position));\n }\n\n mergeDocumentAtRange(document, range) {\n let formattedDocument, result;\n range = normalizeRange(range);\n const [startPosition] = range;\n const startLocation = this.locationFromPosition(startPosition);\n const blockAttributes = this.getBlockAtIndex(startLocation.index).getAttributes();\n const baseBlockAttributes = document.getBaseBlockAttributes();\n const trailingBlockAttributes = blockAttributes.slice(-baseBlockAttributes.length);\n\n if (arraysAreEqual(baseBlockAttributes, trailingBlockAttributes)) {\n const leadingBlockAttributes = blockAttributes.slice(0, -baseBlockAttributes.length);\n formattedDocument = document.copyWithBaseBlockAttributes(leadingBlockAttributes);\n } else {\n formattedDocument = document.copy({\n consolidateBlocks: true\n }).copyWithBaseBlockAttributes(blockAttributes);\n }\n\n const blockCount = formattedDocument.getBlockCount();\n const firstBlock = formattedDocument.getBlockAtIndex(0);\n\n if (arraysAreEqual(blockAttributes, firstBlock.getAttributes())) {\n const firstText = firstBlock.getTextWithoutBlockBreak();\n result = this.insertTextAtRange(firstText, range);\n\n if (blockCount > 1) {\n formattedDocument = new this.constructor(formattedDocument.getBlocks().slice(1));\n const position = startPosition + firstText.getLength();\n result = result.insertDocumentAtRange(formattedDocument, position);\n }\n } else {\n result = this.insertDocumentAtRange(formattedDocument, range);\n }\n\n return result;\n }\n\n insertTextAtRange(text, range) {\n range = normalizeRange(range);\n const [startPosition] = range;\n const {\n index,\n offset\n } = this.locationFromPosition(startPosition);\n const document = this.removeTextAtRange(range);\n return new this.constructor(document.blockList.editObjectAtIndex(index, block => block.copyWithText(block.text.insertTextAtPosition(text, offset))));\n }\n\n removeTextAtRange(range) {\n let blocks;\n range = normalizeRange(range);\n const [leftPosition, rightPosition] = range;\n\n if (rangeIsCollapsed(range)) {\n return this;\n }\n\n const [leftLocation, rightLocation] = Array.from(this.locationRangeFromRange(range));\n const leftIndex = leftLocation.index;\n const leftOffset = leftLocation.offset;\n const leftBlock = this.getBlockAtIndex(leftIndex);\n const rightIndex = rightLocation.index;\n const rightOffset = rightLocation.offset;\n const rightBlock = this.getBlockAtIndex(rightIndex);\n const removeRightNewline = rightPosition - leftPosition === 1 && leftBlock.getBlockBreakPosition() === leftOffset && rightBlock.getBlockBreakPosition() !== rightOffset && rightBlock.text.getStringAtPosition(rightOffset) === \"\\n\";\n\n if (removeRightNewline) {\n blocks = this.blockList.editObjectAtIndex(rightIndex, block => block.copyWithText(block.text.removeTextAtRange([rightOffset, rightOffset + 1])));\n } else {\n let block;\n const leftText = leftBlock.text.getTextAtRange([0, leftOffset]);\n const rightText = rightBlock.text.getTextAtRange([rightOffset, rightBlock.getLength()]);\n const text = leftText.appendText(rightText);\n const removingLeftBlock = leftIndex !== rightIndex && leftOffset === 0;\n const useRightBlock = removingLeftBlock && leftBlock.getAttributeLevel() >= rightBlock.getAttributeLevel();\n\n if (useRightBlock) {\n block = rightBlock.copyWithText(text);\n } else {\n block = leftBlock.copyWithText(text);\n }\n\n const affectedBlockCount = rightIndex + 1 - leftIndex;\n blocks = this.blockList.splice(leftIndex, affectedBlockCount, block);\n }\n\n return new this.constructor(blocks);\n }\n\n moveTextFromRangeToPosition(range, position) {\n let text;\n range = normalizeRange(range);\n const [startPosition, endPosition] = range;\n\n if (startPosition <= position && position <= endPosition) {\n return this;\n }\n\n let document = this.getDocumentAtRange(range);\n let result = this.removeTextAtRange(range);\n const movingRightward = startPosition < position;\n\n if (movingRightward) {\n position -= document.getLength();\n }\n\n const [firstBlock, ...blocks] = document.getBlocks();\n\n if (blocks.length === 0) {\n text = firstBlock.getTextWithoutBlockBreak();\n\n if (movingRightward) {\n position += 1;\n }\n } else {\n text = firstBlock.text;\n }\n\n result = result.insertTextAtRange(text, position);\n\n if (blocks.length === 0) {\n return result;\n }\n\n document = new this.constructor(blocks);\n position += text.getLength();\n return result.insertDocumentAtRange(document, position);\n }\n\n addAttributeAtRange(attribute, value, range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, (block, textRange, index) => blockList = blockList.editObjectAtIndex(index, function () {\n if (getBlockConfig(attribute)) {\n return block.addAttribute(attribute, value);\n } else {\n if (textRange[0] === textRange[1]) {\n return block;\n } else {\n return block.copyWithText(block.text.addAttributeAtRange(attribute, value, textRange));\n }\n }\n }));\n return new this.constructor(blockList);\n }\n\n addAttribute(attribute, value) {\n let {\n blockList\n } = this;\n this.eachBlock((block, index) => blockList = blockList.editObjectAtIndex(index, () => block.addAttribute(attribute, value)));\n return new this.constructor(blockList);\n }\n\n removeAttributeAtRange(attribute, range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n if (getBlockConfig(attribute)) {\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(attribute));\n } else if (textRange[0] !== textRange[1]) {\n blockList = blockList.editObjectAtIndex(index, () => block.copyWithText(block.text.removeAttributeAtRange(attribute, textRange)));\n }\n });\n return new this.constructor(blockList);\n }\n\n updateAttributesForAttachment(attributes, attachment) {\n const range = this.getRangeOfAttachment(attachment);\n const [startPosition] = Array.from(range);\n const {\n index\n } = this.locationFromPosition(startPosition);\n const text = this.getTextAtIndex(index);\n return new this.constructor(this.blockList.editObjectAtIndex(index, block => block.copyWithText(text.updateAttributesForAttachment(attributes, attachment))));\n }\n\n removeAttributeForAttachment(attribute, attachment) {\n const range = this.getRangeOfAttachment(attachment);\n return this.removeAttributeAtRange(attribute, range);\n }\n\n insertBlockBreakAtRange(range) {\n let blocks;\n range = normalizeRange(range);\n const [startPosition] = range;\n const {\n offset\n } = this.locationFromPosition(startPosition);\n const document = this.removeTextAtRange(range);\n\n if (offset === 0) {\n blocks = [new Block()];\n }\n\n return new this.constructor(document.blockList.insertSplittableListAtPosition(new SplittableList(blocks), startPosition));\n }\n\n applyBlockAttributeAtRange(attributeName, value, range) {\n const expanded = this.expandRangeToLineBreaksAndSplitBlocks(range);\n let document = expanded.document;\n range = expanded.range;\n const blockConfig = getBlockConfig(attributeName);\n\n if (blockConfig.listAttribute) {\n document = document.removeLastListAttributeAtRange(range, {\n exceptAttributeName: attributeName\n });\n const converted = document.convertLineBreaksToBlockBreaksInRange(range);\n document = converted.document;\n range = converted.range;\n } else if (blockConfig.exclusive) {\n document = document.removeBlockAttributesAtRange(range);\n } else if (blockConfig.terminal) {\n document = document.removeLastTerminalAttributeAtRange(range);\n } else {\n document = document.consolidateBlocksAtRange(range);\n }\n\n return document.addAttributeAtRange(attributeName, value, range);\n }\n\n removeLastListAttributeAtRange(range) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n const lastAttributeName = block.getLastAttribute();\n\n if (!lastAttributeName) {\n return;\n }\n\n if (!getBlockConfig(lastAttributeName).listAttribute) {\n return;\n }\n\n if (lastAttributeName === options.exceptAttributeName) {\n return;\n }\n\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName));\n });\n return new this.constructor(blockList);\n }\n\n removeLastTerminalAttributeAtRange(range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n const lastAttributeName = block.getLastAttribute();\n\n if (!lastAttributeName) {\n return;\n }\n\n if (!getBlockConfig(lastAttributeName).terminal) {\n return;\n }\n\n blockList = blockList.editObjectAtIndex(index, () => block.removeAttribute(lastAttributeName));\n });\n return new this.constructor(blockList);\n }\n\n removeBlockAttributesAtRange(range) {\n let {\n blockList\n } = this;\n this.eachBlockAtRange(range, function (block, textRange, index) {\n if (block.hasAttributes()) {\n blockList = blockList.editObjectAtIndex(index, () => block.copyWithoutAttributes());\n }\n });\n return new this.constructor(blockList);\n }\n\n expandRangeToLineBreaksAndSplitBlocks(range) {\n let position;\n range = normalizeRange(range);\n let [startPosition, endPosition] = range;\n const startLocation = this.locationFromPosition(startPosition);\n const endLocation = this.locationFromPosition(endPosition);\n let document = this;\n const startBlock = document.getBlockAtIndex(startLocation.index);\n startLocation.offset = startBlock.findLineBreakInDirectionFromPosition(\"backward\", startLocation.offset);\n\n if (startLocation.offset != null) {\n position = document.positionFromLocation(startLocation);\n document = document.insertBlockBreakAtRange([position, position + 1]);\n endLocation.index += 1;\n endLocation.offset -= document.getBlockAtIndex(startLocation.index).getLength();\n startLocation.index += 1;\n }\n\n startLocation.offset = 0;\n\n if (endLocation.offset === 0 && endLocation.index > startLocation.index) {\n endLocation.index -= 1;\n endLocation.offset = document.getBlockAtIndex(endLocation.index).getBlockBreakPosition();\n } else {\n const endBlock = document.getBlockAtIndex(endLocation.index);\n\n if (endBlock.text.getStringAtRange([endLocation.offset - 1, endLocation.offset]) === \"\\n\") {\n endLocation.offset -= 1;\n } else {\n endLocation.offset = endBlock.findLineBreakInDirectionFromPosition(\"forward\", endLocation.offset);\n }\n\n if (endLocation.offset !== endBlock.getBlockBreakPosition()) {\n position = document.positionFromLocation(endLocation);\n document = document.insertBlockBreakAtRange([position, position + 1]);\n }\n }\n\n startPosition = document.positionFromLocation(startLocation);\n endPosition = document.positionFromLocation(endLocation);\n range = normalizeRange([startPosition, endPosition]);\n return {\n document,\n range\n };\n }\n\n convertLineBreaksToBlockBreaksInRange(range) {\n range = normalizeRange(range);\n let [position] = range;\n const string = this.getStringAtRange(range).slice(0, -1);\n let document = this;\n string.replace(/.*?\\n/g, function (match) {\n position += match.length;\n document = document.insertBlockBreakAtRange([position - 1, position]);\n });\n return {\n document,\n range\n };\n }\n\n consolidateBlocksAtRange(range) {\n range = normalizeRange(range);\n const [startPosition, endPosition] = range;\n const startIndex = this.locationFromPosition(startPosition).index;\n const endIndex = this.locationFromPosition(endPosition).index;\n return new this.constructor(this.blockList.consolidateFromIndexToIndex(startIndex, endIndex));\n }\n\n getDocumentAtRange(range) {\n range = normalizeRange(range);\n const blocks = this.blockList.getSplittableListInRange(range).toArray();\n return new this.constructor(blocks);\n }\n\n getStringAtRange(range) {\n let endIndex;\n const array = range = normalizeRange(range),\n endPosition = array[array.length - 1];\n\n if (endPosition !== this.getLength()) {\n endIndex = -1;\n }\n\n return this.getDocumentAtRange(range).toString().slice(0, endIndex);\n }\n\n getBlockAtIndex(index) {\n return this.blockList.getObjectAtIndex(index);\n }\n\n getBlockAtPosition(position) {\n const {\n index\n } = this.locationFromPosition(position);\n return this.getBlockAtIndex(index);\n }\n\n getTextAtIndex(index) {\n var _this$getBlockAtIndex;\n\n return (_this$getBlockAtIndex = this.getBlockAtIndex(index)) === null || _this$getBlockAtIndex === void 0 ? void 0 : _this$getBlockAtIndex.text;\n }\n\n getTextAtPosition(position) {\n const {\n index\n } = this.locationFromPosition(position);\n return this.getTextAtIndex(index);\n }\n\n getPieceAtPosition(position) {\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n return this.getTextAtIndex(index).getPieceAtPosition(offset);\n }\n\n getCharacterAtPosition(position) {\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n return this.getTextAtIndex(index).getStringAtRange([offset, offset + 1]);\n }\n\n getLength() {\n return this.blockList.getEndPosition();\n }\n\n getBlocks() {\n return this.blockList.toArray();\n }\n\n getBlockCount() {\n return this.blockList.length;\n }\n\n getEditCount() {\n return this.editCount;\n }\n\n eachBlock(callback) {\n return this.blockList.eachObject(callback);\n }\n\n eachBlockAtRange(range, callback) {\n let block, textRange;\n range = normalizeRange(range);\n const [startPosition, endPosition] = range;\n const startLocation = this.locationFromPosition(startPosition);\n const endLocation = this.locationFromPosition(endPosition);\n\n if (startLocation.index === endLocation.index) {\n block = this.getBlockAtIndex(startLocation.index);\n textRange = [startLocation.offset, endLocation.offset];\n return callback(block, textRange, startLocation.index);\n } else {\n for (let index = startLocation.index; index <= endLocation.index; index++) {\n block = this.getBlockAtIndex(index);\n\n if (block) {\n switch (index) {\n case startLocation.index:\n textRange = [startLocation.offset, block.text.getLength()];\n break;\n\n case endLocation.index:\n textRange = [0, endLocation.offset];\n break;\n\n default:\n textRange = [0, block.text.getLength()];\n }\n\n callback(block, textRange, index);\n }\n }\n }\n }\n\n getCommonAttributesAtRange(range) {\n range = normalizeRange(range);\n const [startPosition] = range;\n\n if (rangeIsCollapsed(range)) {\n return this.getCommonAttributesAtPosition(startPosition);\n } else {\n const textAttributes = [];\n const blockAttributes = [];\n this.eachBlockAtRange(range, function (block, textRange) {\n if (textRange[0] !== textRange[1]) {\n textAttributes.push(block.text.getCommonAttributesAtRange(textRange));\n return blockAttributes.push(attributesForBlock(block));\n }\n });\n return Hash.fromCommonAttributesOfObjects(textAttributes).merge(Hash.fromCommonAttributesOfObjects(blockAttributes)).toObject();\n }\n }\n\n getCommonAttributesAtPosition(position) {\n let key, value;\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n const block = this.getBlockAtIndex(index);\n\n if (!block) {\n return {};\n }\n\n const commonAttributes = attributesForBlock(block);\n const attributes = block.text.getAttributesAtPosition(offset);\n const attributesLeft = block.text.getAttributesAtPosition(offset - 1);\n const inheritableAttributes = Object.keys(config.textAttributes).filter(key => {\n return config.textAttributes[key].inheritable;\n });\n\n for (key in attributesLeft) {\n value = attributesLeft[key];\n\n if (value === attributes[key] || inheritableAttributes.includes(key)) {\n commonAttributes[key] = value;\n }\n }\n\n return commonAttributes;\n }\n\n getRangeOfCommonAttributeAtPosition(attributeName, position) {\n const {\n index,\n offset\n } = this.locationFromPosition(position);\n const text = this.getTextAtIndex(index);\n const [startOffset, endOffset] = Array.from(text.getExpandedRangeForAttributeAtOffset(attributeName, offset));\n const start = this.positionFromLocation({\n index,\n offset: startOffset\n });\n const end = this.positionFromLocation({\n index,\n offset: endOffset\n });\n return normalizeRange([start, end]);\n }\n\n getBaseBlockAttributes() {\n let baseBlockAttributes = this.getBlockAtIndex(0).getAttributes();\n\n for (let blockIndex = 1; blockIndex < this.getBlockCount(); blockIndex++) {\n const blockAttributes = this.getBlockAtIndex(blockIndex).getAttributes();\n const lastAttributeIndex = Math.min(baseBlockAttributes.length, blockAttributes.length);\n\n baseBlockAttributes = (() => {\n const result = [];\n\n for (let index = 0; index < lastAttributeIndex; index++) {\n if (blockAttributes[index] !== baseBlockAttributes[index]) {\n break;\n }\n\n result.push(blockAttributes[index]);\n }\n\n return result;\n })();\n }\n\n return baseBlockAttributes;\n }\n\n getAttachmentById(attachmentId) {\n for (const attachment of this.getAttachments()) {\n if (attachment.id === attachmentId) {\n return attachment;\n }\n }\n }\n\n getAttachmentPieces() {\n let attachmentPieces = [];\n this.blockList.eachObject(_ref => {\n let {\n text\n } = _ref;\n return attachmentPieces = attachmentPieces.concat(text.getAttachmentPieces());\n });\n return attachmentPieces;\n }\n\n getAttachments() {\n return this.getAttachmentPieces().map(piece => piece.attachment);\n }\n\n getRangeOfAttachment(attachment) {\n let position = 0;\n const iterable = this.blockList.toArray();\n\n for (let index = 0; index < iterable.length; index++) {\n const {\n text\n } = iterable[index];\n const textRange = text.getRangeOfAttachment(attachment);\n\n if (textRange) {\n return normalizeRange([position + textRange[0], position + textRange[1]]);\n }\n\n position += text.getLength();\n }\n }\n\n getLocationRangeOfAttachment(attachment) {\n const range = this.getRangeOfAttachment(attachment);\n return this.locationRangeFromRange(range);\n }\n\n getAttachmentPieceForAttachment(attachment) {\n for (const piece of this.getAttachmentPieces()) {\n if (piece.attachment === attachment) {\n return piece;\n }\n }\n }\n\n findRangesForBlockAttribute(attributeName) {\n let position = 0;\n const ranges = [];\n this.getBlocks().forEach(block => {\n const length = block.getLength();\n\n if (block.hasAttribute(attributeName)) {\n ranges.push([position, position + length]);\n }\n\n position += length;\n });\n return ranges;\n }\n\n findRangesForTextAttribute(attributeName) {\n let {\n withValue\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let position = 0;\n let range = [];\n const ranges = [];\n\n const match = function (piece) {\n if (withValue) {\n return piece.getAttribute(attributeName) === withValue;\n } else {\n return piece.hasAttribute(attributeName);\n }\n };\n\n this.getPieces().forEach(piece => {\n const length = piece.getLength();\n\n if (match(piece)) {\n if (range[1] === position) {\n range[1] = position + length;\n } else {\n ranges.push(range = [position, position + length]);\n }\n }\n\n position += length;\n });\n return ranges;\n }\n\n locationFromPosition(position) {\n const location = this.blockList.findIndexAndOffsetAtPosition(Math.max(0, position));\n\n if (location.index != null) {\n return location;\n } else {\n const blocks = this.getBlocks();\n return {\n index: blocks.length - 1,\n offset: blocks[blocks.length - 1].getLength()\n };\n }\n }\n\n positionFromLocation(location) {\n return this.blockList.findPositionAtIndexAndOffset(location.index, location.offset);\n }\n\n locationRangeFromPosition(position) {\n return normalizeRange(this.locationFromPosition(position));\n }\n\n locationRangeFromRange(range) {\n range = normalizeRange(range);\n if (!range) return;\n const [startPosition, endPosition] = Array.from(range);\n const startLocation = this.locationFromPosition(startPosition);\n const endLocation = this.locationFromPosition(endPosition);\n return normalizeRange([startLocation, endLocation]);\n }\n\n rangeFromLocationRange(locationRange) {\n let rightPosition;\n locationRange = normalizeRange(locationRange);\n const leftPosition = this.positionFromLocation(locationRange[0]);\n\n if (!rangeIsCollapsed(locationRange)) {\n rightPosition = this.positionFromLocation(locationRange[1]);\n }\n\n return normalizeRange([leftPosition, rightPosition]);\n }\n\n isEqualTo(document) {\n return this.blockList.isEqualTo(document === null || document === void 0 ? void 0 : document.blockList);\n }\n\n getTexts() {\n return this.getBlocks().map(block => block.text);\n }\n\n getPieces() {\n const pieces = [];\n Array.from(this.getTexts()).forEach(text => {\n pieces.push(...Array.from(text.getPieces() || []));\n });\n return pieces;\n }\n\n getObjects() {\n return this.getBlocks().concat(this.getTexts()).concat(this.getPieces());\n }\n\n toSerializableDocument() {\n const blocks = [];\n this.blockList.eachObject(block => blocks.push(block.copyWithText(block.text.toSerializableText())));\n return new this.constructor(blocks);\n }\n\n toString() {\n return this.blockList.toString();\n }\n\n toJSON() {\n return this.blockList.toJSON();\n }\n\n toConsole() {\n return JSON.stringify(this.blockList.toArray()).map(block => JSON.parse(block.text.toConsole()));\n }\n\n}\n\nconst attributesForBlock = function (block) {\n const attributes = {};\n const attributeName = block.getLastAttribute();\n\n if (attributeName) {\n attributes[attributeName] = true;\n }\n\n return attributes;\n};\n\nconst DEFAULT_ALLOWED_ATTRIBUTES = \"style href src width height class\".split(\" \");\nconst DEFAULT_FORBIDDEN_PROTOCOLS = \"javascript:\".split(\" \");\nconst DEFAULT_FORBIDDEN_ELEMENTS = \"script iframe\".split(\" \");\nclass HTMLSanitizer extends BasicObject {\n static sanitize(html, options) {\n const sanitizer = new this(html, options);\n sanitizer.sanitize();\n return sanitizer;\n }\n\n constructor(html) {\n let {\n allowedAttributes,\n forbiddenProtocols,\n forbiddenElements\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.allowedAttributes = allowedAttributes || DEFAULT_ALLOWED_ATTRIBUTES;\n this.forbiddenProtocols = forbiddenProtocols || DEFAULT_FORBIDDEN_PROTOCOLS;\n this.forbiddenElements = forbiddenElements || DEFAULT_FORBIDDEN_ELEMENTS;\n this.body = createBodyElementForHTML(html);\n }\n\n sanitize() {\n this.sanitizeElements();\n return this.normalizeListElementNesting();\n }\n\n getHTML() {\n return this.body.innerHTML;\n }\n\n getBody() {\n return this.body;\n } // Private\n\n\n sanitizeElements() {\n const walker = walkTree(this.body);\n const nodesToRemove = [];\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n switch (node.nodeType) {\n case Node.ELEMENT_NODE:\n if (this.elementIsRemovable(node)) {\n nodesToRemove.push(node);\n } else {\n this.sanitizeElement(node);\n }\n\n break;\n\n case Node.COMMENT_NODE:\n nodesToRemove.push(node);\n break;\n }\n }\n\n nodesToRemove.forEach(node => removeNode(node));\n return this.body;\n }\n\n sanitizeElement(element) {\n if (element.hasAttribute(\"href\")) {\n if (this.forbiddenProtocols.includes(element.protocol)) {\n element.removeAttribute(\"href\");\n }\n }\n\n Array.from(element.attributes).forEach(_ref => {\n let {\n name\n } = _ref;\n\n if (!this.allowedAttributes.includes(name) && name.indexOf(\"data-trix\") !== 0) {\n element.removeAttribute(name);\n }\n });\n return element;\n }\n\n normalizeListElementNesting() {\n Array.from(this.body.querySelectorAll(\"ul,ol\")).forEach(listElement => {\n const previousElement = listElement.previousElementSibling;\n\n if (previousElement) {\n if (tagName(previousElement) === \"li\") {\n previousElement.appendChild(listElement);\n }\n }\n });\n return this.body;\n }\n\n elementIsRemovable(element) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) !== Node.ELEMENT_NODE) return;\n return this.elementIsForbidden(element) || this.elementIsntSerializable(element);\n }\n\n elementIsForbidden(element) {\n return this.forbiddenElements.includes(tagName(element));\n }\n\n elementIsntSerializable(element) {\n return element.getAttribute(\"data-trix-serialize\") === \"false\" && !nodeIsAttachmentElement(element);\n }\n\n}\n\nconst createBodyElementForHTML = function () {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n // Remove everything after \n html = html.replace(/<\\/html[^>]*>[^]*$/i, \"\");\n const doc = document.implementation.createHTMLDocument(\"\");\n doc.documentElement.innerHTML = html;\n Array.from(doc.head.querySelectorAll(\"style\")).forEach(element => {\n doc.body.appendChild(element);\n });\n return doc.body;\n};\n\n/* eslint-disable\n no-case-declarations,\n no-irregular-whitespace,\n*/\n\nconst pieceForString = function (string) {\n let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const type = \"string\";\n string = normalizeSpaces(string);\n return {\n string,\n attributes,\n type\n };\n};\n\nconst pieceForAttachment = function (attachment) {\n let attributes = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const type = \"attachment\";\n return {\n attachment,\n attributes,\n type\n };\n};\n\nconst blockForAttributes = function () {\n let attributes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n const text = [];\n return {\n text,\n attributes\n };\n};\n\nconst parseTrixDataAttribute = (element, name) => {\n try {\n return JSON.parse(element.getAttribute(\"data-trix-\".concat(name)));\n } catch (error) {\n return {};\n }\n};\n\nconst getImageDimensions = element => {\n const width = element.getAttribute(\"width\");\n const height = element.getAttribute(\"height\");\n const dimensions = {};\n\n if (width) {\n dimensions.width = parseInt(width, 10);\n }\n\n if (height) {\n dimensions.height = parseInt(height, 10);\n }\n\n return dimensions;\n};\n\nclass HTMLParser extends BasicObject {\n static parse(html, options) {\n const parser = new this(html, options);\n parser.parse();\n return parser;\n }\n\n constructor(html) {\n let {\n referenceElement\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.html = html;\n this.referenceElement = referenceElement;\n this.blocks = [];\n this.blockElements = [];\n this.processedElements = [];\n }\n\n getDocument() {\n return Document.fromJSON(this.blocks);\n } // HTML parsing\n\n\n parse() {\n try {\n this.createHiddenContainer();\n const html = HTMLSanitizer.sanitize(this.html).getHTML();\n this.containerElement.innerHTML = html;\n const walker = walkTree(this.containerElement, {\n usingFilter: nodeFilter\n });\n\n while (walker.nextNode()) {\n this.processNode(walker.currentNode);\n }\n\n return this.translateBlockElementMarginsToNewlines();\n } finally {\n this.removeHiddenContainer();\n }\n }\n\n createHiddenContainer() {\n if (this.referenceElement) {\n this.containerElement = this.referenceElement.cloneNode(false);\n this.containerElement.removeAttribute(\"id\");\n this.containerElement.setAttribute(\"data-trix-internal\", \"\");\n this.containerElement.style.display = \"none\";\n return this.referenceElement.parentNode.insertBefore(this.containerElement, this.referenceElement.nextSibling);\n } else {\n this.containerElement = makeElement({\n tagName: \"div\",\n style: {\n display: \"none\"\n }\n });\n return document.body.appendChild(this.containerElement);\n }\n }\n\n removeHiddenContainer() {\n return removeNode(this.containerElement);\n }\n\n processNode(node) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n if (!this.isInsignificantTextNode(node)) {\n this.appendBlockForTextNode(node);\n return this.processTextNode(node);\n }\n\n break;\n\n case Node.ELEMENT_NODE:\n this.appendBlockForElement(node);\n return this.processElement(node);\n }\n }\n\n appendBlockForTextNode(node) {\n const element = node.parentNode;\n\n if (element === this.currentBlockElement && this.isBlockElement(node.previousSibling)) {\n return this.appendStringWithAttributes(\"\\n\");\n } else if (element === this.containerElement || this.isBlockElement(element)) {\n var _this$currentBlock;\n\n const attributes = this.getBlockAttributes(element);\n\n if (!arraysAreEqual(attributes, (_this$currentBlock = this.currentBlock) === null || _this$currentBlock === void 0 ? void 0 : _this$currentBlock.attributes)) {\n this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element);\n this.currentBlockElement = element;\n }\n }\n }\n\n appendBlockForElement(element) {\n const elementIsBlockElement = this.isBlockElement(element);\n const currentBlockContainsElement = elementContainsNode(this.currentBlockElement, element);\n\n if (elementIsBlockElement && !this.isBlockElement(element.firstChild)) {\n if (!this.isInsignificantTextNode(element.firstChild) || !this.isBlockElement(element.firstElementChild)) {\n const attributes = this.getBlockAttributes(element);\n\n if (element.firstChild) {\n if (!(currentBlockContainsElement && arraysAreEqual(attributes, this.currentBlock.attributes))) {\n this.currentBlock = this.appendBlockForAttributesWithElement(attributes, element);\n this.currentBlockElement = element;\n } else {\n return this.appendStringWithAttributes(\"\\n\");\n }\n }\n }\n } else if (this.currentBlockElement && !currentBlockContainsElement && !elementIsBlockElement) {\n const parentBlockElement = this.findParentBlockElement(element);\n\n if (parentBlockElement) {\n return this.appendBlockForElement(parentBlockElement);\n } else {\n this.currentBlock = this.appendEmptyBlock();\n this.currentBlockElement = null;\n }\n }\n }\n\n findParentBlockElement(element) {\n let {\n parentElement\n } = element;\n\n while (parentElement && parentElement !== this.containerElement) {\n if (this.isBlockElement(parentElement) && this.blockElements.includes(parentElement)) {\n return parentElement;\n } else {\n parentElement = parentElement.parentElement;\n }\n }\n\n return null;\n }\n\n processTextNode(node) {\n let string = node.data;\n\n if (!elementCanDisplayPreformattedText(node.parentNode)) {\n var _node$previousSibling;\n\n string = squishBreakableWhitespace(string);\n\n if (stringEndsWithWhitespace((_node$previousSibling = node.previousSibling) === null || _node$previousSibling === void 0 ? void 0 : _node$previousSibling.textContent)) {\n string = leftTrimBreakableWhitespace(string);\n }\n }\n\n return this.appendStringWithAttributes(string, this.getTextAttributes(node.parentNode));\n }\n\n processElement(element) {\n let attributes;\n\n if (nodeIsAttachmentElement(element)) {\n attributes = parseTrixDataAttribute(element, \"attachment\");\n\n if (Object.keys(attributes).length) {\n const textAttributes = this.getTextAttributes(element);\n this.appendAttachmentWithAttributes(attributes, textAttributes); // We have everything we need so avoid processing inner nodes\n\n element.innerHTML = \"\";\n }\n\n return this.processedElements.push(element);\n } else {\n switch (tagName(element)) {\n case \"br\":\n if (!this.isExtraBR(element) && !this.isBlockElement(element.nextSibling)) {\n this.appendStringWithAttributes(\"\\n\", this.getTextAttributes(element));\n }\n\n return this.processedElements.push(element);\n\n case \"img\":\n attributes = {\n url: element.getAttribute(\"src\"),\n contentType: \"image\"\n };\n const object = getImageDimensions(element);\n\n for (const key in object) {\n const value = object[key];\n attributes[key] = value;\n }\n\n this.appendAttachmentWithAttributes(attributes, this.getTextAttributes(element));\n return this.processedElements.push(element);\n\n case \"tr\":\n if (element.parentNode.firstChild !== element) {\n return this.appendStringWithAttributes(\"\\n\");\n }\n\n break;\n\n case \"td\":\n if (element.parentNode.firstChild !== element) {\n return this.appendStringWithAttributes(\" | \");\n }\n\n break;\n }\n }\n } // Document construction\n\n\n appendBlockForAttributesWithElement(attributes, element) {\n this.blockElements.push(element);\n const block = blockForAttributes(attributes);\n this.blocks.push(block);\n return block;\n }\n\n appendEmptyBlock() {\n return this.appendBlockForAttributesWithElement([], null);\n }\n\n appendStringWithAttributes(string, attributes) {\n return this.appendPiece(pieceForString(string, attributes));\n }\n\n appendAttachmentWithAttributes(attachment, attributes) {\n return this.appendPiece(pieceForAttachment(attachment, attributes));\n }\n\n appendPiece(piece) {\n if (this.blocks.length === 0) {\n this.appendEmptyBlock();\n }\n\n return this.blocks[this.blocks.length - 1].text.push(piece);\n }\n\n appendStringToTextAtIndex(string, index) {\n const {\n text\n } = this.blocks[index];\n const piece = text[text.length - 1];\n\n if ((piece === null || piece === void 0 ? void 0 : piece.type) === \"string\") {\n piece.string += string;\n } else {\n return text.push(pieceForString(string));\n }\n }\n\n prependStringToTextAtIndex(string, index) {\n const {\n text\n } = this.blocks[index];\n const piece = text[0];\n\n if ((piece === null || piece === void 0 ? void 0 : piece.type) === \"string\") {\n piece.string = string + piece.string;\n } else {\n return text.unshift(pieceForString(string));\n }\n } // Attribute parsing\n\n\n getTextAttributes(element) {\n let value;\n const attributes = {};\n\n for (const attribute in config.textAttributes) {\n const configAttr = config.textAttributes[attribute];\n\n if (configAttr.tagName && findClosestElementFromNode(element, {\n matchingSelector: configAttr.tagName,\n untilNode: this.containerElement\n })) {\n attributes[attribute] = true;\n } else if (configAttr.parser) {\n value = configAttr.parser(element);\n\n if (value) {\n let attributeInheritedFromBlock = false;\n\n for (const blockElement of this.findBlockElementAncestors(element)) {\n if (configAttr.parser(blockElement) === value) {\n attributeInheritedFromBlock = true;\n break;\n }\n }\n\n if (!attributeInheritedFromBlock) {\n attributes[attribute] = value;\n }\n }\n } else if (configAttr.styleProperty) {\n value = element.style[configAttr.styleProperty];\n\n if (value) {\n attributes[attribute] = value;\n }\n }\n }\n\n if (nodeIsAttachmentElement(element)) {\n const object = parseTrixDataAttribute(element, \"attributes\");\n\n for (const key in object) {\n value = object[key];\n attributes[key] = value;\n }\n }\n\n return attributes;\n }\n\n getBlockAttributes(element) {\n const attributes = [];\n\n while (element && element !== this.containerElement) {\n for (const attribute in config.blockAttributes) {\n const attrConfig = config.blockAttributes[attribute];\n\n if (attrConfig.parse !== false) {\n if (tagName(element) === attrConfig.tagName) {\n var _attrConfig$test;\n\n if ((_attrConfig$test = attrConfig.test) !== null && _attrConfig$test !== void 0 && _attrConfig$test.call(attrConfig, element) || !attrConfig.test) {\n attributes.push(attribute);\n\n if (attrConfig.listAttribute) {\n attributes.push(attrConfig.listAttribute);\n }\n }\n }\n }\n }\n\n element = element.parentNode;\n }\n\n return attributes.reverse();\n }\n\n findBlockElementAncestors(element) {\n const ancestors = [];\n\n while (element && element !== this.containerElement) {\n const tag = tagName(element);\n\n if (getBlockTagNames().includes(tag)) {\n ancestors.push(element);\n }\n\n element = element.parentNode;\n }\n\n return ancestors;\n } // Element inspection\n\n\n isBlockElement(element) {\n if ((element === null || element === void 0 ? void 0 : element.nodeType) !== Node.ELEMENT_NODE) return;\n if (nodeIsAttachmentElement(element)) return;\n if (findClosestElementFromNode(element, {\n matchingSelector: \"td\",\n untilNode: this.containerElement\n })) return;\n return getBlockTagNames().includes(tagName(element)) || window.getComputedStyle(element).display === \"block\";\n }\n\n isInsignificantTextNode(node) {\n if ((node === null || node === void 0 ? void 0 : node.nodeType) !== Node.TEXT_NODE) return;\n if (!stringIsAllBreakableWhitespace(node.data)) return;\n const {\n parentNode,\n previousSibling,\n nextSibling\n } = node;\n if (nodeEndsWithNonWhitespace(parentNode.previousSibling) && !this.isBlockElement(parentNode.previousSibling)) return;\n if (elementCanDisplayPreformattedText(parentNode)) return;\n return !previousSibling || this.isBlockElement(previousSibling) || !nextSibling || this.isBlockElement(nextSibling);\n }\n\n isExtraBR(element) {\n return tagName(element) === \"br\" && this.isBlockElement(element.parentNode) && element.parentNode.lastChild === element;\n } // Margin translation\n\n\n translateBlockElementMarginsToNewlines() {\n const defaultMargin = this.getMarginOfDefaultBlockElement();\n\n for (let index = 0; index < this.blocks.length; index++) {\n const margin = this.getMarginOfBlockElementAtIndex(index);\n\n if (margin) {\n if (margin.top > defaultMargin.top * 2) {\n this.prependStringToTextAtIndex(\"\\n\", index);\n }\n\n if (margin.bottom > defaultMargin.bottom * 2) {\n this.appendStringToTextAtIndex(\"\\n\", index);\n }\n }\n }\n }\n\n getMarginOfBlockElementAtIndex(index) {\n const element = this.blockElements[index];\n\n if (element) {\n if (element.textContent) {\n if (!getBlockTagNames().includes(tagName(element)) && !this.processedElements.includes(element)) {\n return getBlockElementMargin(element);\n }\n }\n }\n }\n\n getMarginOfDefaultBlockElement() {\n const element = makeElement(config.blockAttributes.default.tagName);\n this.containerElement.appendChild(element);\n return getBlockElementMargin(element);\n }\n\n} // Helpers\n\nconst elementCanDisplayPreformattedText = function (element) {\n const {\n whiteSpace\n } = window.getComputedStyle(element);\n return [\"pre\", \"pre-wrap\", \"pre-line\"].includes(whiteSpace);\n};\n\nconst nodeEndsWithNonWhitespace = node => node && !stringEndsWithWhitespace(node.textContent);\n\nconst getBlockElementMargin = function (element) {\n const style = window.getComputedStyle(element);\n\n if (style.display === \"block\") {\n return {\n top: parseInt(style.marginTop),\n bottom: parseInt(style.marginBottom)\n };\n }\n};\n\nconst nodeFilter = function (node) {\n if (tagName(node) === \"style\") {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n}; // Whitespace\n\n\nconst leftTrimBreakableWhitespace = string => string.replace(new RegExp(\"^\".concat(breakableWhitespacePattern.source, \"+\")), \"\");\n\nconst stringIsAllBreakableWhitespace = string => new RegExp(\"^\".concat(breakableWhitespacePattern.source, \"*$\")).test(string);\n\nconst stringEndsWithWhitespace = string => /\\s$/.test(string);\n\nclass LineBreakInsertion {\n constructor(composition) {\n this.composition = composition;\n this.document = this.composition.document;\n const selectedRange = this.composition.getSelectedRange();\n this.startPosition = selectedRange[0];\n this.endPosition = selectedRange[1];\n this.startLocation = this.document.locationFromPosition(this.startPosition);\n this.endLocation = this.document.locationFromPosition(this.endPosition);\n this.block = this.document.getBlockAtIndex(this.endLocation.index);\n this.breaksOnReturn = this.block.breaksOnReturn();\n this.previousCharacter = this.block.text.getStringAtPosition(this.endLocation.offset - 1);\n this.nextCharacter = this.block.text.getStringAtPosition(this.endLocation.offset);\n }\n\n shouldInsertBlockBreak() {\n if (this.block.hasAttributes() && this.block.isListItem() && !this.block.isEmpty()) {\n return this.startLocation.offset !== 0;\n } else {\n return this.breaksOnReturn && this.nextCharacter !== \"\\n\";\n }\n }\n\n shouldBreakFormattedBlock() {\n return this.block.hasAttributes() && !this.block.isListItem() && (this.breaksOnReturn && this.nextCharacter === \"\\n\" || this.previousCharacter === \"\\n\");\n }\n\n shouldDecreaseListLevel() {\n return this.block.hasAttributes() && this.block.isListItem() && this.block.isEmpty();\n }\n\n shouldPrependListItem() {\n return this.block.isListItem() && this.startLocation.offset === 0 && !this.block.isEmpty();\n }\n\n shouldRemoveLastBlockAttribute() {\n return this.block.hasAttributes() && !this.block.isListItem() && this.block.isEmpty();\n }\n\n}\n\nconst PLACEHOLDER = \" \";\nclass Composition extends BasicObject {\n constructor() {\n super(...arguments);\n this.document = new Document();\n this.attachments = [];\n this.currentAttributes = {};\n this.revision = 0;\n }\n\n setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n var _this$delegate, _this$delegate$compos;\n\n this.document = document;\n this.refreshAttachments();\n this.revision++;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$compos = _this$delegate.compositionDidChangeDocument) === null || _this$delegate$compos === void 0 ? void 0 : _this$delegate$compos.call(_this$delegate, document);\n }\n } // Snapshots\n\n\n getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.getSelectedRange()\n };\n }\n\n loadSnapshot(_ref) {\n var _this$delegate2, _this$delegate2$compo, _this$delegate3, _this$delegate3$compo;\n\n let {\n document,\n selectedRange\n } = _ref;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$compo = _this$delegate2.compositionWillLoadSnapshot) === null || _this$delegate2$compo === void 0 ? void 0 : _this$delegate2$compo.call(_this$delegate2);\n this.setDocument(document != null ? document : new Document());\n this.setSelection(selectedRange != null ? selectedRange : [0, 0]);\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : (_this$delegate3$compo = _this$delegate3.compositionDidLoadSnapshot) === null || _this$delegate3$compo === void 0 ? void 0 : _this$delegate3$compo.call(_this$delegate3);\n } // Responder protocol\n\n\n insertText(text) {\n let {\n updatePosition\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n updatePosition: true\n };\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertTextAtRange(text, selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + text.getLength();\n\n if (updatePosition) {\n this.setSelection(endPosition);\n }\n\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n\n insertBlock() {\n let block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Block();\n const document = new Document([block]);\n return this.insertDocument(document);\n }\n\n insertDocument() {\n let document = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : new Document();\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertDocumentAtRange(document, selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + document.getLength();\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n\n insertString(string, options) {\n const attributes = this.getCurrentTextAttributes();\n const text = Text.textForStringWithAttributes(string, attributes);\n return this.insertText(text, options);\n }\n\n insertBlockBreak() {\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.insertBlockBreakAtRange(selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + 1;\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n\n insertLineBreak() {\n const insertion = new LineBreakInsertion(this);\n\n if (insertion.shouldDecreaseListLevel()) {\n this.decreaseListLevel();\n return this.setSelection(insertion.startPosition);\n } else if (insertion.shouldPrependListItem()) {\n const document = new Document([insertion.block.copyWithoutText()]);\n return this.insertDocument(document);\n } else if (insertion.shouldInsertBlockBreak()) {\n return this.insertBlockBreak();\n } else if (insertion.shouldRemoveLastBlockAttribute()) {\n return this.removeLastBlockAttribute();\n } else if (insertion.shouldBreakFormattedBlock()) {\n return this.breakFormattedBlock(insertion);\n } else {\n return this.insertString(\"\\n\");\n }\n }\n\n insertHTML(html) {\n const document = HTMLParser.parse(html).getDocument();\n const selectedRange = this.getSelectedRange();\n this.setDocument(this.document.mergeDocumentAtRange(document, selectedRange));\n const startPosition = selectedRange[0];\n const endPosition = startPosition + document.getLength() - 1;\n this.setSelection(endPosition);\n return this.notifyDelegateOfInsertionAtRange([startPosition, endPosition]);\n }\n\n replaceHTML(html) {\n const document = HTMLParser.parse(html).getDocument().copyUsingObjectsFromDocument(this.document);\n const locationRange = this.getLocationRange({\n strict: false\n });\n const selectedRange = this.document.rangeFromLocationRange(locationRange);\n this.setDocument(document);\n return this.setSelection(selectedRange);\n }\n\n insertFile(file) {\n return this.insertFiles([file]);\n }\n\n insertFiles(files) {\n const attachments = [];\n Array.from(files).forEach(file => {\n var _this$delegate4;\n\n if ((_this$delegate4 = this.delegate) !== null && _this$delegate4 !== void 0 && _this$delegate4.compositionShouldAcceptFile(file)) {\n const attachment = Attachment.attachmentForFile(file);\n attachments.push(attachment);\n }\n });\n return this.insertAttachments(attachments);\n }\n\n insertAttachment(attachment) {\n return this.insertAttachments([attachment]);\n }\n\n insertAttachments(attachments) {\n let text = new Text();\n Array.from(attachments).forEach(attachment => {\n var _config$attachments$t;\n\n const type = attachment.getType();\n const presentation = (_config$attachments$t = config.attachments[type]) === null || _config$attachments$t === void 0 ? void 0 : _config$attachments$t.presentation;\n const attributes = this.getCurrentTextAttributes();\n\n if (presentation) {\n attributes.presentation = presentation;\n }\n\n const attachmentText = Text.textForAttachmentWithAttributes(attachment, attributes);\n text = text.appendText(attachmentText);\n });\n return this.insertText(text);\n }\n\n shouldManageDeletingInDirection(direction) {\n const locationRange = this.getLocationRange();\n\n if (rangeIsCollapsed(locationRange)) {\n if (direction === \"backward\" && locationRange[0].offset === 0) {\n return true;\n }\n\n if (this.shouldManageMovingCursorInDirection(direction)) {\n return true;\n }\n } else {\n if (locationRange[0].index !== locationRange[1].index) {\n return true;\n }\n }\n\n return false;\n }\n\n deleteInDirection(direction) {\n let {\n length\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let attachment, deletingIntoPreviousBlock, selectionSpansBlocks;\n const locationRange = this.getLocationRange();\n let range = this.getSelectedRange();\n const selectionIsCollapsed = rangeIsCollapsed(range);\n\n if (selectionIsCollapsed) {\n deletingIntoPreviousBlock = direction === \"backward\" && locationRange[0].offset === 0;\n } else {\n selectionSpansBlocks = locationRange[0].index !== locationRange[1].index;\n }\n\n if (deletingIntoPreviousBlock) {\n if (this.canDecreaseBlockAttributeLevel()) {\n const block = this.getBlock();\n\n if (block.isListItem()) {\n this.decreaseListLevel();\n } else {\n this.decreaseBlockAttributeLevel();\n }\n\n this.setSelection(range[0]);\n\n if (block.isEmpty()) {\n return false;\n }\n }\n }\n\n if (selectionIsCollapsed) {\n range = this.getExpandedRangeInDirection(direction, {\n length\n });\n\n if (direction === \"backward\") {\n attachment = this.getAttachmentAtRange(range);\n }\n }\n\n if (attachment) {\n this.editAttachment(attachment);\n return false;\n } else {\n this.setDocument(this.document.removeTextAtRange(range));\n this.setSelection(range[0]);\n\n if (deletingIntoPreviousBlock || selectionSpansBlocks) {\n return false;\n }\n }\n }\n\n moveTextFromRange(range) {\n const [position] = Array.from(this.getSelectedRange());\n this.setDocument(this.document.moveTextFromRangeToPosition(range, position));\n return this.setSelection(position);\n }\n\n removeAttachment(attachment) {\n const range = this.document.getRangeOfAttachment(attachment);\n\n if (range) {\n this.stopEditingAttachment();\n this.setDocument(this.document.removeTextAtRange(range));\n return this.setSelection(range[0]);\n }\n }\n\n removeLastBlockAttribute() {\n const [startPosition, endPosition] = Array.from(this.getSelectedRange());\n const block = this.document.getBlockAtPosition(endPosition);\n this.removeCurrentAttribute(block.getLastAttribute());\n return this.setSelection(startPosition);\n }\n\n insertPlaceholder() {\n this.placeholderPosition = this.getPosition();\n return this.insertString(PLACEHOLDER);\n }\n\n selectPlaceholder() {\n if (this.placeholderPosition != null) {\n this.setSelectedRange([this.placeholderPosition, this.placeholderPosition + PLACEHOLDER.length]);\n return this.getSelectedRange();\n }\n }\n\n forgetPlaceholder() {\n this.placeholderPosition = null;\n } // Current attributes\n\n\n hasCurrentAttribute(attributeName) {\n const value = this.currentAttributes[attributeName];\n return value != null && value !== false;\n }\n\n toggleCurrentAttribute(attributeName) {\n const value = !this.currentAttributes[attributeName];\n\n if (value) {\n return this.setCurrentAttribute(attributeName, value);\n } else {\n return this.removeCurrentAttribute(attributeName);\n }\n }\n\n canSetCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n return this.canSetCurrentBlockAttribute(attributeName);\n } else {\n return this.canSetCurrentTextAttribute(attributeName);\n }\n }\n\n canSetCurrentTextAttribute(attributeName) {\n const document = this.getSelectedDocument();\n if (!document) return;\n\n for (const attachment of Array.from(document.getAttachments())) {\n if (!attachment.hasContent()) {\n return false;\n }\n }\n\n return true;\n }\n\n canSetCurrentBlockAttribute(attributeName) {\n const block = this.getBlock();\n if (!block) return;\n return !block.isTerminalBlock();\n }\n\n setCurrentAttribute(attributeName, value) {\n if (getBlockConfig(attributeName)) {\n return this.setBlockAttribute(attributeName, value);\n } else {\n this.setTextAttribute(attributeName, value);\n this.currentAttributes[attributeName] = value;\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n\n setTextAttribute(attributeName, value) {\n const selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n const [startPosition, endPosition] = Array.from(selectedRange);\n\n if (startPosition === endPosition) {\n if (attributeName === \"href\") {\n const text = Text.textForStringWithAttributes(value, {\n href: value\n });\n return this.insertText(text);\n }\n } else {\n return this.setDocument(this.document.addAttributeAtRange(attributeName, value, selectedRange));\n }\n }\n\n setBlockAttribute(attributeName, value) {\n const selectedRange = this.getSelectedRange();\n\n if (this.canSetCurrentAttribute(attributeName)) {\n this.setDocument(this.document.applyBlockAttributeAtRange(attributeName, value, selectedRange));\n return this.setSelection(selectedRange);\n }\n }\n\n removeCurrentAttribute(attributeName) {\n if (getBlockConfig(attributeName)) {\n this.removeBlockAttribute(attributeName);\n return this.updateCurrentAttributes();\n } else {\n this.removeTextAttribute(attributeName);\n delete this.currentAttributes[attributeName];\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n\n removeTextAttribute(attributeName) {\n const selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange));\n }\n\n removeBlockAttribute(attributeName) {\n const selectedRange = this.getSelectedRange();\n if (!selectedRange) return;\n return this.setDocument(this.document.removeAttributeAtRange(attributeName, selectedRange));\n }\n\n canDecreaseNestingLevel() {\n var _this$getBlock;\n\n return ((_this$getBlock = this.getBlock()) === null || _this$getBlock === void 0 ? void 0 : _this$getBlock.getNestingLevel()) > 0;\n }\n\n canIncreaseNestingLevel() {\n var _getBlockConfig;\n\n const block = this.getBlock();\n if (!block) return;\n\n if ((_getBlockConfig = getBlockConfig(block.getLastNestableAttribute())) !== null && _getBlockConfig !== void 0 && _getBlockConfig.listAttribute) {\n const previousBlock = this.getPreviousBlock();\n\n if (previousBlock) {\n return arrayStartsWith(previousBlock.getListItemAttributes(), block.getListItemAttributes());\n }\n } else {\n return block.getNestingLevel() > 0;\n }\n }\n\n decreaseNestingLevel() {\n const block = this.getBlock();\n if (!block) return;\n return this.setDocument(this.document.replaceBlock(block, block.decreaseNestingLevel()));\n }\n\n increaseNestingLevel() {\n const block = this.getBlock();\n if (!block) return;\n return this.setDocument(this.document.replaceBlock(block, block.increaseNestingLevel()));\n }\n\n canDecreaseBlockAttributeLevel() {\n var _this$getBlock2;\n\n return ((_this$getBlock2 = this.getBlock()) === null || _this$getBlock2 === void 0 ? void 0 : _this$getBlock2.getAttributeLevel()) > 0;\n }\n\n decreaseBlockAttributeLevel() {\n var _this$getBlock3;\n\n const attribute = (_this$getBlock3 = this.getBlock()) === null || _this$getBlock3 === void 0 ? void 0 : _this$getBlock3.getLastAttribute();\n\n if (attribute) {\n return this.removeCurrentAttribute(attribute);\n }\n }\n\n decreaseListLevel() {\n let [startPosition] = Array.from(this.getSelectedRange());\n const {\n index\n } = this.document.locationFromPosition(startPosition);\n let endIndex = index;\n const attributeLevel = this.getBlock().getAttributeLevel();\n let block = this.document.getBlockAtIndex(endIndex + 1);\n\n while (block) {\n if (!block.isListItem() || block.getAttributeLevel() <= attributeLevel) {\n break;\n }\n\n endIndex++;\n block = this.document.getBlockAtIndex(endIndex + 1);\n }\n\n startPosition = this.document.positionFromLocation({\n index,\n offset: 0\n });\n const endPosition = this.document.positionFromLocation({\n index: endIndex,\n offset: 0\n });\n return this.setDocument(this.document.removeLastListAttributeAtRange([startPosition, endPosition]));\n }\n\n updateCurrentAttributes() {\n const selectedRange = this.getSelectedRange({\n ignoreLock: true\n });\n\n if (selectedRange) {\n const currentAttributes = this.document.getCommonAttributesAtRange(selectedRange);\n Array.from(getAllAttributeNames()).forEach(attributeName => {\n if (!currentAttributes[attributeName]) {\n if (!this.canSetCurrentAttribute(attributeName)) {\n currentAttributes[attributeName] = false;\n }\n }\n });\n\n if (!objectsAreEqual(currentAttributes, this.currentAttributes)) {\n this.currentAttributes = currentAttributes;\n return this.notifyDelegateOfCurrentAttributesChange();\n }\n }\n }\n\n getCurrentAttributes() {\n return extend.call({}, this.currentAttributes);\n }\n\n getCurrentTextAttributes() {\n const attributes = {};\n\n for (const key in this.currentAttributes) {\n const value = this.currentAttributes[key];\n\n if (value !== false) {\n if (getTextConfig(key)) {\n attributes[key] = value;\n }\n }\n }\n\n return attributes;\n } // Selection freezing\n\n\n freezeSelection() {\n return this.setCurrentAttribute(\"frozen\", true);\n }\n\n thawSelection() {\n return this.removeCurrentAttribute(\"frozen\");\n }\n\n hasFrozenSelection() {\n return this.hasCurrentAttribute(\"frozen\");\n }\n\n setSelection(selectedRange) {\n var _this$delegate5;\n\n const locationRange = this.document.locationRangeFromRange(selectedRange);\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.compositionDidRequestChangingSelectionToLocationRange(locationRange);\n }\n\n getSelectedRange() {\n const locationRange = this.getLocationRange();\n\n if (locationRange) {\n return this.document.rangeFromLocationRange(locationRange);\n }\n }\n\n setSelectedRange(selectedRange) {\n const locationRange = this.document.locationRangeFromRange(selectedRange);\n return this.getSelectionManager().setLocationRange(locationRange);\n }\n\n getPosition() {\n const locationRange = this.getLocationRange();\n\n if (locationRange) {\n return this.document.positionFromLocation(locationRange[0]);\n }\n }\n\n getLocationRange(options) {\n if (this.targetLocationRange) {\n return this.targetLocationRange;\n } else {\n return this.getSelectionManager().getLocationRange(options) || normalizeRange({\n index: 0,\n offset: 0\n });\n }\n }\n\n withTargetLocationRange(locationRange, fn) {\n let result;\n this.targetLocationRange = locationRange;\n\n try {\n result = fn();\n } finally {\n this.targetLocationRange = null;\n }\n\n return result;\n }\n\n withTargetRange(range, fn) {\n const locationRange = this.document.locationRangeFromRange(range);\n return this.withTargetLocationRange(locationRange, fn);\n }\n\n withTargetDOMRange(domRange, fn) {\n const locationRange = this.createLocationRangeFromDOMRange(domRange, {\n strict: false\n });\n return this.withTargetLocationRange(locationRange, fn);\n }\n\n getExpandedRangeInDirection(direction) {\n let {\n length\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let [startPosition, endPosition] = Array.from(this.getSelectedRange());\n\n if (direction === \"backward\") {\n if (length) {\n startPosition -= length;\n } else {\n startPosition = this.translateUTF16PositionFromOffset(startPosition, -1);\n }\n } else {\n if (length) {\n endPosition += length;\n } else {\n endPosition = this.translateUTF16PositionFromOffset(endPosition, 1);\n }\n }\n\n return normalizeRange([startPosition, endPosition]);\n }\n\n shouldManageMovingCursorInDirection(direction) {\n if (this.editingAttachment) {\n return true;\n }\n\n const range = this.getExpandedRangeInDirection(direction);\n return this.getAttachmentAtRange(range) != null;\n }\n\n moveCursorInDirection(direction) {\n let canEditAttachment, range;\n\n if (this.editingAttachment) {\n range = this.document.getRangeOfAttachment(this.editingAttachment);\n } else {\n const selectedRange = this.getSelectedRange();\n range = this.getExpandedRangeInDirection(direction);\n canEditAttachment = !rangesAreEqual(selectedRange, range);\n }\n\n if (direction === \"backward\") {\n this.setSelectedRange(range[0]);\n } else {\n this.setSelectedRange(range[1]);\n }\n\n if (canEditAttachment) {\n const attachment = this.getAttachmentAtRange(range);\n\n if (attachment) {\n return this.editAttachment(attachment);\n }\n }\n }\n\n expandSelectionInDirection(direction) {\n let {\n length\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const range = this.getExpandedRangeInDirection(direction, {\n length\n });\n return this.setSelectedRange(range);\n }\n\n expandSelectionForEditing() {\n if (this.hasCurrentAttribute(\"href\")) {\n return this.expandSelectionAroundCommonAttribute(\"href\");\n }\n }\n\n expandSelectionAroundCommonAttribute(attributeName) {\n const position = this.getPosition();\n const range = this.document.getRangeOfCommonAttributeAtPosition(attributeName, position);\n return this.setSelectedRange(range);\n }\n\n selectionContainsAttachments() {\n var _this$getSelectedAtta;\n\n return ((_this$getSelectedAtta = this.getSelectedAttachments()) === null || _this$getSelectedAtta === void 0 ? void 0 : _this$getSelectedAtta.length) > 0;\n }\n\n selectionIsInCursorTarget() {\n return this.editingAttachment || this.positionIsCursorTarget(this.getPosition());\n }\n\n positionIsCursorTarget(position) {\n const location = this.document.locationFromPosition(position);\n\n if (location) {\n return this.locationIsCursorTarget(location);\n }\n }\n\n positionIsBlockBreak(position) {\n var _this$document$getPie;\n\n return (_this$document$getPie = this.document.getPieceAtPosition(position)) === null || _this$document$getPie === void 0 ? void 0 : _this$document$getPie.isBlockBreak();\n }\n\n getSelectedDocument() {\n const selectedRange = this.getSelectedRange();\n\n if (selectedRange) {\n return this.document.getDocumentAtRange(selectedRange);\n }\n }\n\n getSelectedAttachments() {\n var _this$getSelectedDocu;\n\n return (_this$getSelectedDocu = this.getSelectedDocument()) === null || _this$getSelectedDocu === void 0 ? void 0 : _this$getSelectedDocu.getAttachments();\n } // Attachments\n\n\n getAttachments() {\n return this.attachments.slice(0);\n }\n\n refreshAttachments() {\n const attachments = this.document.getAttachments();\n const {\n added,\n removed\n } = summarizeArrayChange(this.attachments, attachments);\n this.attachments = attachments;\n Array.from(removed).forEach(attachment => {\n var _this$delegate6, _this$delegate6$compo;\n\n attachment.delegate = null;\n (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : (_this$delegate6$compo = _this$delegate6.compositionDidRemoveAttachment) === null || _this$delegate6$compo === void 0 ? void 0 : _this$delegate6$compo.call(_this$delegate6, attachment);\n });\n return (() => {\n const result = [];\n Array.from(added).forEach(attachment => {\n var _this$delegate7, _this$delegate7$compo;\n\n attachment.delegate = this;\n result.push((_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : (_this$delegate7$compo = _this$delegate7.compositionDidAddAttachment) === null || _this$delegate7$compo === void 0 ? void 0 : _this$delegate7$compo.call(_this$delegate7, attachment));\n });\n return result;\n })();\n } // Attachment delegate\n\n\n attachmentDidChangeAttributes(attachment) {\n var _this$delegate8, _this$delegate8$compo;\n\n this.revision++;\n return (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : (_this$delegate8$compo = _this$delegate8.compositionDidEditAttachment) === null || _this$delegate8$compo === void 0 ? void 0 : _this$delegate8$compo.call(_this$delegate8, attachment);\n }\n\n attachmentDidChangePreviewURL(attachment) {\n var _this$delegate9, _this$delegate9$compo;\n\n this.revision++;\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : (_this$delegate9$compo = _this$delegate9.compositionDidChangeAttachmentPreviewURL) === null || _this$delegate9$compo === void 0 ? void 0 : _this$delegate9$compo.call(_this$delegate9, attachment);\n } // Attachment editing\n\n\n editAttachment(attachment, options) {\n var _this$delegate10, _this$delegate10$comp;\n\n if (attachment === this.editingAttachment) return;\n this.stopEditingAttachment();\n this.editingAttachment = attachment;\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : (_this$delegate10$comp = _this$delegate10.compositionDidStartEditingAttachment) === null || _this$delegate10$comp === void 0 ? void 0 : _this$delegate10$comp.call(_this$delegate10, this.editingAttachment, options);\n }\n\n stopEditingAttachment() {\n var _this$delegate11, _this$delegate11$comp;\n\n if (!this.editingAttachment) return;\n (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 ? void 0 : (_this$delegate11$comp = _this$delegate11.compositionDidStopEditingAttachment) === null || _this$delegate11$comp === void 0 ? void 0 : _this$delegate11$comp.call(_this$delegate11, this.editingAttachment);\n this.editingAttachment = null;\n }\n\n updateAttributesForAttachment(attributes, attachment) {\n return this.setDocument(this.document.updateAttributesForAttachment(attributes, attachment));\n }\n\n removeAttributeForAttachment(attribute, attachment) {\n return this.setDocument(this.document.removeAttributeForAttachment(attribute, attachment));\n } // Private\n\n\n breakFormattedBlock(insertion) {\n let {\n document\n } = insertion;\n const {\n block\n } = insertion;\n let position = insertion.startPosition;\n let range = [position - 1, position];\n\n if (block.getBlockBreakPosition() === insertion.startLocation.offset) {\n if (block.breaksOnReturn() && insertion.nextCharacter === \"\\n\") {\n position += 1;\n } else {\n document = document.removeTextAtRange(range);\n }\n\n range = [position, position];\n } else if (insertion.nextCharacter === \"\\n\") {\n if (insertion.previousCharacter === \"\\n\") {\n range = [position - 1, position + 1];\n } else {\n range = [position, position + 1];\n position += 1;\n }\n } else if (insertion.startLocation.offset - 1 !== 0) {\n position += 1;\n }\n\n const newDocument = new Document([block.removeLastAttribute().copyWithoutText()]);\n this.setDocument(document.insertDocumentAtRange(newDocument, range));\n return this.setSelection(position);\n }\n\n getPreviousBlock() {\n const locationRange = this.getLocationRange();\n\n if (locationRange) {\n const {\n index\n } = locationRange[0];\n\n if (index > 0) {\n return this.document.getBlockAtIndex(index - 1);\n }\n }\n }\n\n getBlock() {\n const locationRange = this.getLocationRange();\n\n if (locationRange) {\n return this.document.getBlockAtIndex(locationRange[0].index);\n }\n }\n\n getAttachmentAtRange(range) {\n const document = this.document.getDocumentAtRange(range);\n\n if (document.toString() === \"\".concat(OBJECT_REPLACEMENT_CHARACTER, \"\\n\")) {\n return document.getAttachments()[0];\n }\n }\n\n notifyDelegateOfCurrentAttributesChange() {\n var _this$delegate12, _this$delegate12$comp;\n\n return (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : (_this$delegate12$comp = _this$delegate12.compositionDidChangeCurrentAttributes) === null || _this$delegate12$comp === void 0 ? void 0 : _this$delegate12$comp.call(_this$delegate12, this.currentAttributes);\n }\n\n notifyDelegateOfInsertionAtRange(range) {\n var _this$delegate13, _this$delegate13$comp;\n\n return (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 ? void 0 : (_this$delegate13$comp = _this$delegate13.compositionDidPerformInsertionAtRange) === null || _this$delegate13$comp === void 0 ? void 0 : _this$delegate13$comp.call(_this$delegate13, range);\n }\n\n translateUTF16PositionFromOffset(position, offset) {\n const utf16string = this.document.toUTF16String();\n const utf16position = utf16string.offsetFromUCS2Offset(position);\n return utf16string.offsetToUCS2Offset(utf16position + offset);\n }\n\n}\nComposition.proxyMethod(\"getSelectionManager().getPointRange\");\nComposition.proxyMethod(\"getSelectionManager().setLocationRangeFromPointRange\");\nComposition.proxyMethod(\"getSelectionManager().createLocationRangeFromDOMRange\");\nComposition.proxyMethod(\"getSelectionManager().locationIsCursorTarget\");\nComposition.proxyMethod(\"getSelectionManager().selectionIsExpanded\");\nComposition.proxyMethod(\"delegate?.getSelectionManager\");\n\nclass UndoManager extends BasicObject {\n constructor(composition) {\n super(...arguments);\n this.composition = composition;\n this.undoEntries = [];\n this.redoEntries = [];\n }\n\n recordUndoEntry(description) {\n let {\n context,\n consolidatable\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n const previousEntry = this.undoEntries.slice(-1)[0];\n\n if (!consolidatable || !entryHasDescriptionAndContext(previousEntry, description, context)) {\n const undoEntry = this.createEntry({\n description,\n context\n });\n this.undoEntries.push(undoEntry);\n this.redoEntries = [];\n }\n }\n\n undo() {\n const undoEntry = this.undoEntries.pop();\n\n if (undoEntry) {\n const redoEntry = this.createEntry(undoEntry);\n this.redoEntries.push(redoEntry);\n return this.composition.loadSnapshot(undoEntry.snapshot);\n }\n }\n\n redo() {\n const redoEntry = this.redoEntries.pop();\n\n if (redoEntry) {\n const undoEntry = this.createEntry(redoEntry);\n this.undoEntries.push(undoEntry);\n return this.composition.loadSnapshot(redoEntry.snapshot);\n }\n }\n\n canUndo() {\n return this.undoEntries.length > 0;\n }\n\n canRedo() {\n return this.redoEntries.length > 0;\n } // Private\n\n\n createEntry() {\n let {\n description,\n context\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n return {\n description: description === null || description === void 0 ? void 0 : description.toString(),\n context: JSON.stringify(context),\n snapshot: this.composition.getSnapshot()\n };\n }\n\n}\n\nconst entryHasDescriptionAndContext = (entry, description, context) => (entry === null || entry === void 0 ? void 0 : entry.description) === (description === null || description === void 0 ? void 0 : description.toString()) && (entry === null || entry === void 0 ? void 0 : entry.context) === JSON.stringify(context);\n\nconst attachmentGalleryFilter = function (snapshot) {\n const filter = new Filter(snapshot);\n filter.perform();\n return filter.getSnapshot();\n};\nconst BLOCK_ATTRIBUTE_NAME = \"attachmentGallery\";\nconst TEXT_ATTRIBUTE_NAME = \"presentation\";\nconst TEXT_ATTRIBUTE_VALUE = \"gallery\";\n\nclass Filter {\n constructor(snapshot) {\n this.document = snapshot.document;\n this.selectedRange = snapshot.selectedRange;\n }\n\n perform() {\n this.removeBlockAttribute();\n return this.applyBlockAttribute();\n }\n\n getSnapshot() {\n return {\n document: this.document,\n selectedRange: this.selectedRange\n };\n } // Private\n\n\n removeBlockAttribute() {\n return this.findRangesOfBlocks().map(range => this.document = this.document.removeAttributeAtRange(BLOCK_ATTRIBUTE_NAME, range));\n }\n\n applyBlockAttribute() {\n let offset = 0;\n this.findRangesOfPieces().forEach(range => {\n if (range[1] - range[0] > 1) {\n range[0] += offset;\n range[1] += offset;\n\n if (this.document.getCharacterAtPosition(range[1]) !== \"\\n\") {\n this.document = this.document.insertBlockBreakAtRange(range[1]);\n\n if (range[1] < this.selectedRange[1]) {\n this.moveSelectedRangeForward();\n }\n\n range[1]++;\n offset++;\n }\n\n if (range[0] !== 0) {\n if (this.document.getCharacterAtPosition(range[0] - 1) !== \"\\n\") {\n this.document = this.document.insertBlockBreakAtRange(range[0]);\n\n if (range[0] < this.selectedRange[0]) {\n this.moveSelectedRangeForward();\n }\n\n range[0]++;\n offset++;\n }\n }\n\n this.document = this.document.applyBlockAttributeAtRange(BLOCK_ATTRIBUTE_NAME, true, range);\n }\n });\n }\n\n findRangesOfBlocks() {\n return this.document.findRangesForBlockAttribute(BLOCK_ATTRIBUTE_NAME);\n }\n\n findRangesOfPieces() {\n return this.document.findRangesForTextAttribute(TEXT_ATTRIBUTE_NAME, {\n withValue: TEXT_ATTRIBUTE_VALUE\n });\n }\n\n moveSelectedRangeForward() {\n this.selectedRange[0] += 1;\n this.selectedRange[1] += 1;\n }\n\n}\n\nconst DEFAULT_FILTERS = [attachmentGalleryFilter];\nclass Editor {\n constructor(composition, selectionManager, element) {\n this.insertFiles = this.insertFiles.bind(this);\n this.composition = composition;\n this.selectionManager = selectionManager;\n this.element = element;\n this.undoManager = new UndoManager(this.composition);\n this.filters = DEFAULT_FILTERS.slice(0);\n }\n\n loadDocument(document) {\n return this.loadSnapshot({\n document,\n selectedRange: [0, 0]\n });\n }\n\n loadHTML() {\n let html = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n const document = HTMLParser.parse(html, {\n referenceElement: this.element\n }).getDocument();\n return this.loadDocument(document);\n }\n\n loadJSON(_ref) {\n let {\n document,\n selectedRange\n } = _ref;\n document = Document.fromJSON(document);\n return this.loadSnapshot({\n document,\n selectedRange\n });\n }\n\n loadSnapshot(snapshot) {\n this.undoManager = new UndoManager(this.composition);\n return this.composition.loadSnapshot(snapshot);\n }\n\n getDocument() {\n return this.composition.document;\n }\n\n getSelectedDocument() {\n return this.composition.getSelectedDocument();\n }\n\n getSnapshot() {\n return this.composition.getSnapshot();\n }\n\n toJSON() {\n return this.getSnapshot();\n } // Document manipulation\n\n\n deleteInDirection(direction) {\n return this.composition.deleteInDirection(direction);\n }\n\n insertAttachment(attachment) {\n return this.composition.insertAttachment(attachment);\n }\n\n insertAttachments(attachments) {\n return this.composition.insertAttachments(attachments);\n }\n\n insertDocument(document) {\n return this.composition.insertDocument(document);\n }\n\n insertFile(file) {\n return this.composition.insertFile(file);\n }\n\n insertFiles(files) {\n return this.composition.insertFiles(files);\n }\n\n insertHTML(html) {\n return this.composition.insertHTML(html);\n }\n\n insertString(string) {\n return this.composition.insertString(string);\n }\n\n insertText(text) {\n return this.composition.insertText(text);\n }\n\n insertLineBreak() {\n return this.composition.insertLineBreak();\n } // Selection\n\n\n getSelectedRange() {\n return this.composition.getSelectedRange();\n }\n\n getPosition() {\n return this.composition.getPosition();\n }\n\n getClientRectAtPosition(position) {\n const locationRange = this.getDocument().locationRangeFromRange([position, position + 1]);\n return this.selectionManager.getClientRectAtLocationRange(locationRange);\n }\n\n expandSelectionInDirection(direction) {\n return this.composition.expandSelectionInDirection(direction);\n }\n\n moveCursorInDirection(direction) {\n return this.composition.moveCursorInDirection(direction);\n }\n\n setSelectedRange(selectedRange) {\n return this.composition.setSelectedRange(selectedRange);\n } // Attributes\n\n\n activateAttribute(name) {\n let value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;\n return this.composition.setCurrentAttribute(name, value);\n }\n\n attributeIsActive(name) {\n return this.composition.hasCurrentAttribute(name);\n }\n\n canActivateAttribute(name) {\n return this.composition.canSetCurrentAttribute(name);\n }\n\n deactivateAttribute(name) {\n return this.composition.removeCurrentAttribute(name);\n } // Nesting level\n\n\n canDecreaseNestingLevel() {\n return this.composition.canDecreaseNestingLevel();\n }\n\n canIncreaseNestingLevel() {\n return this.composition.canIncreaseNestingLevel();\n }\n\n decreaseNestingLevel() {\n if (this.canDecreaseNestingLevel()) {\n return this.composition.decreaseNestingLevel();\n }\n }\n\n increaseNestingLevel() {\n if (this.canIncreaseNestingLevel()) {\n return this.composition.increaseNestingLevel();\n }\n } // Undo/redo\n\n\n canRedo() {\n return this.undoManager.canRedo();\n }\n\n canUndo() {\n return this.undoManager.canUndo();\n }\n\n recordUndoEntry(description) {\n let {\n context,\n consolidatable\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return this.undoManager.recordUndoEntry(description, {\n context,\n consolidatable\n });\n }\n\n redo() {\n if (this.canRedo()) {\n return this.undoManager.redo();\n }\n }\n\n undo() {\n if (this.canUndo()) {\n return this.undoManager.undo();\n }\n }\n\n}\n\n/* eslint-disable\n no-var,\n prefer-const,\n*/\nclass LocationMapper {\n constructor(element) {\n this.element = element;\n }\n\n findLocationFromContainerAndOffset(container, offset) {\n let {\n strict\n } = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {\n strict: true\n };\n let childIndex = 0;\n let foundBlock = false;\n const location = {\n index: 0,\n offset: 0\n };\n const attachmentElement = this.findAttachmentElementParentForNode(container);\n\n if (attachmentElement) {\n container = attachmentElement.parentNode;\n offset = findChildIndexOfNode(attachmentElement);\n }\n\n const walker = walkTree(this.element, {\n usingFilter: rejectAttachmentContents\n });\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n if (node === container && nodeIsTextNode(container)) {\n if (!nodeIsCursorTarget(node)) {\n location.offset += offset;\n }\n\n break;\n } else {\n if (node.parentNode === container) {\n if (childIndex++ === offset) {\n break;\n }\n } else if (!elementContainsNode(container, node)) {\n if (childIndex > 0) {\n break;\n }\n }\n\n if (nodeIsBlockStart(node, {\n strict\n })) {\n if (foundBlock) {\n location.index++;\n }\n\n location.offset = 0;\n foundBlock = true;\n } else {\n location.offset += nodeLength(node);\n }\n }\n }\n\n return location;\n }\n\n findContainerAndOffsetFromLocation(location) {\n let container, offset;\n\n if (location.index === 0 && location.offset === 0) {\n container = this.element;\n offset = 0;\n\n while (container.firstChild) {\n container = container.firstChild;\n\n if (nodeIsBlockContainer(container)) {\n offset = 1;\n break;\n }\n }\n\n return [container, offset];\n }\n\n let [node, nodeOffset] = this.findNodeAndOffsetFromLocation(location);\n if (!node) return;\n\n if (nodeIsTextNode(node)) {\n if (nodeLength(node) === 0) {\n container = node.parentNode.parentNode;\n offset = findChildIndexOfNode(node.parentNode);\n\n if (nodeIsCursorTarget(node, {\n name: \"right\"\n })) {\n offset++;\n }\n } else {\n container = node;\n offset = location.offset - nodeOffset;\n }\n } else {\n container = node.parentNode;\n\n if (!nodeIsBlockStart(node.previousSibling)) {\n if (!nodeIsBlockContainer(container)) {\n while (node === container.lastChild) {\n node = container;\n container = container.parentNode;\n\n if (nodeIsBlockContainer(container)) {\n break;\n }\n }\n }\n }\n\n offset = findChildIndexOfNode(node);\n\n if (location.offset !== 0) {\n offset++;\n }\n }\n\n return [container, offset];\n }\n\n findNodeAndOffsetFromLocation(location) {\n let node, nodeOffset;\n let offset = 0;\n\n for (const currentNode of this.getSignificantNodesForIndex(location.index)) {\n const length = nodeLength(currentNode);\n\n if (location.offset <= offset + length) {\n if (nodeIsTextNode(currentNode)) {\n node = currentNode;\n nodeOffset = offset;\n\n if (location.offset === nodeOffset && nodeIsCursorTarget(node)) {\n break;\n }\n } else if (!node) {\n node = currentNode;\n nodeOffset = offset;\n }\n }\n\n offset += length;\n\n if (offset > location.offset) {\n break;\n }\n }\n\n return [node, nodeOffset];\n } // Private\n\n\n findAttachmentElementParentForNode(node) {\n while (node && node !== this.element) {\n if (nodeIsAttachmentElement(node)) {\n return node;\n }\n\n node = node.parentNode;\n }\n }\n\n getSignificantNodesForIndex(index) {\n const nodes = [];\n const walker = walkTree(this.element, {\n usingFilter: acceptSignificantNodes\n });\n let recordingNodes = false;\n\n while (walker.nextNode()) {\n const node = walker.currentNode;\n\n if (nodeIsBlockStartComment(node)) {\n var blockIndex;\n\n if (blockIndex != null) {\n blockIndex++;\n } else {\n blockIndex = 0;\n }\n\n if (blockIndex === index) {\n recordingNodes = true;\n } else if (recordingNodes) {\n break;\n }\n } else if (recordingNodes) {\n nodes.push(node);\n }\n }\n\n return nodes;\n }\n\n}\n\nconst nodeLength = function (node) {\n if (node.nodeType === Node.TEXT_NODE) {\n if (nodeIsCursorTarget(node)) {\n return 0;\n } else {\n const string = node.textContent;\n return string.length;\n }\n } else if (tagName(node) === \"br\" || nodeIsAttachmentElement(node)) {\n return 1;\n } else {\n return 0;\n }\n};\n\nconst acceptSignificantNodes = function (node) {\n if (rejectEmptyTextNodes(node) === NodeFilter.FILTER_ACCEPT) {\n return rejectAttachmentContents(node);\n } else {\n return NodeFilter.FILTER_REJECT;\n }\n};\n\nconst rejectEmptyTextNodes = function (node) {\n if (nodeIsEmptyTextNode(node)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\n\nconst rejectAttachmentContents = function (node) {\n if (nodeIsAttachmentElement(node.parentNode)) {\n return NodeFilter.FILTER_REJECT;\n } else {\n return NodeFilter.FILTER_ACCEPT;\n }\n};\n\n/* eslint-disable\n id-length,\n no-empty,\n*/\nclass PointMapper {\n createDOMRangeFromPoint(_ref) {\n let {\n x,\n y\n } = _ref;\n let domRange;\n\n if (document.caretPositionFromPoint) {\n const {\n offsetNode,\n offset\n } = document.caretPositionFromPoint(x, y);\n domRange = document.createRange();\n domRange.setStart(offsetNode, offset);\n return domRange;\n } else if (document.caretRangeFromPoint) {\n return document.caretRangeFromPoint(x, y);\n } else if (document.body.createTextRange) {\n const originalDOMRange = getDOMRange();\n\n try {\n // IE 11 throws \"Unspecified error\" when using moveToPoint\n // during a drag-and-drop operation.\n const textRange = document.body.createTextRange();\n textRange.moveToPoint(x, y);\n textRange.select();\n } catch (error) {}\n\n domRange = getDOMRange();\n setDOMRange(originalDOMRange);\n return domRange;\n }\n }\n\n getClientRectsForDOMRange(domRange) {\n const array = Array.from(domRange.getClientRects());\n const start = array[0];\n const end = array[array.length - 1];\n return [start, end];\n }\n\n}\n\n/* eslint-disable\n*/\nclass SelectionManager extends BasicObject {\n constructor(element) {\n super(...arguments);\n this.didMouseDown = this.didMouseDown.bind(this);\n this.selectionDidChange = this.selectionDidChange.bind(this);\n this.element = element;\n this.locationMapper = new LocationMapper(this.element);\n this.pointMapper = new PointMapper();\n this.lockCount = 0;\n handleEvent(\"mousedown\", {\n onElement: this.element,\n withCallback: this.didMouseDown\n });\n }\n\n getLocationRange() {\n let options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n\n if (options.strict === false) {\n return this.createLocationRangeFromDOMRange(getDOMRange());\n } else if (options.ignoreLock) {\n return this.currentLocationRange;\n } else if (this.lockedLocationRange) {\n return this.lockedLocationRange;\n } else {\n return this.currentLocationRange;\n }\n }\n\n setLocationRange(locationRange) {\n if (this.lockedLocationRange) return;\n locationRange = normalizeRange(locationRange);\n const domRange = this.createDOMRangeFromLocationRange(locationRange);\n\n if (domRange) {\n setDOMRange(domRange);\n this.updateCurrentLocationRange(locationRange);\n }\n }\n\n setLocationRangeFromPointRange(pointRange) {\n pointRange = normalizeRange(pointRange);\n const startLocation = this.getLocationAtPoint(pointRange[0]);\n const endLocation = this.getLocationAtPoint(pointRange[1]);\n this.setLocationRange([startLocation, endLocation]);\n }\n\n getClientRectAtLocationRange(locationRange) {\n const domRange = this.createDOMRangeFromLocationRange(locationRange);\n\n if (domRange) {\n return this.getClientRectsForDOMRange(domRange)[1];\n }\n }\n\n locationIsCursorTarget(location) {\n const node = Array.from(this.findNodeAndOffsetFromLocation(location))[0];\n return nodeIsCursorTarget(node);\n }\n\n lock() {\n if (this.lockCount++ === 0) {\n this.updateCurrentLocationRange();\n this.lockedLocationRange = this.getLocationRange();\n }\n }\n\n unlock() {\n if (--this.lockCount === 0) {\n const {\n lockedLocationRange\n } = this;\n this.lockedLocationRange = null;\n\n if (lockedLocationRange != null) {\n return this.setLocationRange(lockedLocationRange);\n }\n }\n }\n\n clearSelection() {\n var _getDOMSelection;\n\n return (_getDOMSelection = getDOMSelection()) === null || _getDOMSelection === void 0 ? void 0 : _getDOMSelection.removeAllRanges();\n }\n\n selectionIsCollapsed() {\n var _getDOMRange;\n\n return ((_getDOMRange = getDOMRange()) === null || _getDOMRange === void 0 ? void 0 : _getDOMRange.collapsed) === true;\n }\n\n selectionIsExpanded() {\n return !this.selectionIsCollapsed();\n }\n\n createLocationRangeFromDOMRange(domRange, options) {\n if (domRange == null || !this.domRangeWithinElement(domRange)) return;\n const start = this.findLocationFromContainerAndOffset(domRange.startContainer, domRange.startOffset, options);\n if (!start) return;\n const end = domRange.collapsed ? undefined : this.findLocationFromContainerAndOffset(domRange.endContainer, domRange.endOffset, options);\n return normalizeRange([start, end]);\n }\n\n didMouseDown() {\n return this.pauseTemporarily();\n }\n\n pauseTemporarily() {\n let resumeHandlers;\n this.paused = true;\n\n const resume = () => {\n this.paused = false;\n clearTimeout(resumeTimeout);\n Array.from(resumeHandlers).forEach(handler => {\n handler.destroy();\n });\n\n if (elementContainsNode(document, this.element)) {\n return this.selectionDidChange();\n }\n };\n\n const resumeTimeout = setTimeout(resume, 200);\n resumeHandlers = [\"mousemove\", \"keydown\"].map(eventName => handleEvent(eventName, {\n onElement: document,\n withCallback: resume\n }));\n }\n\n selectionDidChange() {\n if (!this.paused && !innerElementIsActive(this.element)) {\n return this.updateCurrentLocationRange();\n }\n }\n\n updateCurrentLocationRange(locationRange) {\n if (locationRange != null ? locationRange : locationRange = this.createLocationRangeFromDOMRange(getDOMRange())) {\n if (!rangesAreEqual(locationRange, this.currentLocationRange)) {\n var _this$delegate, _this$delegate$locati;\n\n this.currentLocationRange = locationRange;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$locati = _this$delegate.locationRangeDidChange) === null || _this$delegate$locati === void 0 ? void 0 : _this$delegate$locati.call(_this$delegate, this.currentLocationRange.slice(0));\n }\n }\n }\n\n createDOMRangeFromLocationRange(locationRange) {\n const rangeStart = this.findContainerAndOffsetFromLocation(locationRange[0]);\n const rangeEnd = rangeIsCollapsed(locationRange) ? rangeStart : this.findContainerAndOffsetFromLocation(locationRange[1]) || rangeStart;\n\n if (rangeStart != null && rangeEnd != null) {\n const domRange = document.createRange();\n domRange.setStart(...Array.from(rangeStart || []));\n domRange.setEnd(...Array.from(rangeEnd || []));\n return domRange;\n }\n }\n\n getLocationAtPoint(point) {\n const domRange = this.createDOMRangeFromPoint(point);\n\n if (domRange) {\n var _this$createLocationR;\n\n return (_this$createLocationR = this.createLocationRangeFromDOMRange(domRange)) === null || _this$createLocationR === void 0 ? void 0 : _this$createLocationR[0];\n }\n }\n\n domRangeWithinElement(domRange) {\n if (domRange.collapsed) {\n return elementContainsNode(this.element, domRange.startContainer);\n } else {\n return elementContainsNode(this.element, domRange.startContainer) && elementContainsNode(this.element, domRange.endContainer);\n }\n }\n\n}\nSelectionManager.proxyMethod(\"locationMapper.findLocationFromContainerAndOffset\");\nSelectionManager.proxyMethod(\"locationMapper.findContainerAndOffsetFromLocation\");\nSelectionManager.proxyMethod(\"locationMapper.findNodeAndOffsetFromLocation\");\nSelectionManager.proxyMethod(\"pointMapper.createDOMRangeFromPoint\");\nSelectionManager.proxyMethod(\"pointMapper.getClientRectsForDOMRange\");\n\nvar models = {\n Attachment,\n AttachmentManager,\n AttachmentPiece,\n Block,\n Composition,\n Cocument: Document,\n Editor,\n HTMLParser,\n HTMLSanitizer,\n LineBreakInsertion,\n LocationMapper,\n ManagedAttachment,\n Piece,\n PointMapper,\n SelectionManager,\n SplittableList,\n StringPiece,\n Text,\n UndoManager\n};\n\nconst Trix = {\n VERSION: version,\n config\n};\nObject.assign(Trix, models);\nwindow.Trix = Trix;\n\nclass ObjectGroup {\n static groupObjects() {\n let ungroupedObjects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let {\n depth,\n asTree\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n let group;\n\n if (asTree) {\n if (depth == null) {\n depth = 0;\n }\n }\n\n const objects = [];\n Array.from(ungroupedObjects).forEach(object => {\n var _object$canBeGrouped2;\n\n if (group) {\n var _object$canBeGrouped, _group$canBeGroupedWi, _group;\n\n if ((_object$canBeGrouped = object.canBeGrouped) !== null && _object$canBeGrouped !== void 0 && _object$canBeGrouped.call(object, depth) && (_group$canBeGroupedWi = (_group = group[group.length - 1]).canBeGroupedWith) !== null && _group$canBeGroupedWi !== void 0 && _group$canBeGroupedWi.call(_group, object, depth)) {\n group.push(object);\n return;\n } else {\n objects.push(new this(group, {\n depth,\n asTree\n }));\n group = null;\n }\n }\n\n if ((_object$canBeGrouped2 = object.canBeGrouped) !== null && _object$canBeGrouped2 !== void 0 && _object$canBeGrouped2.call(object, depth)) {\n group = [object];\n } else {\n objects.push(object);\n }\n });\n\n if (group) {\n objects.push(new this(group, {\n depth,\n asTree\n }));\n }\n\n return objects;\n }\n\n constructor() {\n let objects = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n let {\n depth,\n asTree\n } = arguments.length > 1 ? arguments[1] : undefined;\n this.objects = objects;\n\n if (asTree) {\n this.depth = depth;\n this.objects = this.constructor.groupObjects(this.objects, {\n asTree,\n depth: this.depth + 1\n });\n }\n }\n\n getObjects() {\n return this.objects;\n }\n\n getDepth() {\n return this.depth;\n }\n\n getCacheKey() {\n const keys = [\"objectGroup\"];\n Array.from(this.getObjects()).forEach(object => {\n keys.push(object.getCacheKey());\n });\n return keys.join(\"/\");\n }\n\n}\n\nclass ElementStore {\n constructor(elements) {\n this.reset(elements);\n }\n\n add(element) {\n const key = getKey(element);\n this.elements[key] = element;\n }\n\n remove(element) {\n const key = getKey(element);\n const value = this.elements[key];\n\n if (value) {\n delete this.elements[key];\n return value;\n }\n }\n\n reset() {\n let elements = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n this.elements = {};\n Array.from(elements).forEach(element => {\n this.add(element);\n });\n return elements;\n }\n\n}\n\nconst getKey = element => element.dataset.trixStoreKey;\n\nclass ObjectView extends BasicObject {\n constructor(object) {\n let options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n super(...arguments);\n this.object = object;\n this.options = options;\n this.childViews = [];\n this.rootView = this;\n }\n\n getNodes() {\n if (!this.nodes) {\n this.nodes = this.createNodes();\n }\n\n return this.nodes.map(node => node.cloneNode(true));\n }\n\n invalidate() {\n var _this$parentView;\n\n this.nodes = null;\n this.childViews = [];\n return (_this$parentView = this.parentView) === null || _this$parentView === void 0 ? void 0 : _this$parentView.invalidate();\n }\n\n invalidateViewForObject(object) {\n var _this$findViewForObje;\n\n return (_this$findViewForObje = this.findViewForObject(object)) === null || _this$findViewForObje === void 0 ? void 0 : _this$findViewForObje.invalidate();\n }\n\n findOrCreateCachedChildView(viewClass, object, options) {\n let view = this.getCachedViewForObject(object);\n\n if (view) {\n this.recordChildView(view);\n } else {\n view = this.createChildView(...arguments);\n this.cacheViewForObject(view, object);\n }\n\n return view;\n }\n\n createChildView(viewClass, object) {\n let options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n if (object instanceof ObjectGroup) {\n options.viewClass = viewClass;\n viewClass = ObjectGroupView;\n }\n\n const view = new viewClass(object, options);\n return this.recordChildView(view);\n }\n\n recordChildView(view) {\n view.parentView = this;\n view.rootView = this.rootView;\n this.childViews.push(view);\n return view;\n }\n\n getAllChildViews() {\n let views = [];\n this.childViews.forEach(childView => {\n views.push(childView);\n views = views.concat(childView.getAllChildViews());\n });\n return views;\n }\n\n findElement() {\n return this.findElementForObject(this.object);\n }\n\n findElementForObject(object) {\n const id = object === null || object === void 0 ? void 0 : object.id;\n\n if (id) {\n return this.rootView.element.querySelector(\"[data-trix-id='\".concat(id, \"']\"));\n }\n }\n\n findViewForObject(object) {\n for (const view of this.getAllChildViews()) {\n if (view.object === object) {\n return view;\n }\n }\n }\n\n getViewCache() {\n if (this.rootView === this) {\n if (this.isViewCachingEnabled()) {\n if (!this.viewCache) {\n this.viewCache = {};\n }\n\n return this.viewCache;\n }\n } else {\n return this.rootView.getViewCache();\n }\n }\n\n isViewCachingEnabled() {\n return this.shouldCacheViews !== false;\n }\n\n enableViewCaching() {\n this.shouldCacheViews = true;\n }\n\n disableViewCaching() {\n this.shouldCacheViews = false;\n }\n\n getCachedViewForObject(object) {\n var _this$getViewCache;\n\n return (_this$getViewCache = this.getViewCache()) === null || _this$getViewCache === void 0 ? void 0 : _this$getViewCache[object.getCacheKey()];\n }\n\n cacheViewForObject(view, object) {\n const cache = this.getViewCache();\n\n if (cache) {\n cache[object.getCacheKey()] = view;\n }\n }\n\n garbageCollectCachedViews() {\n const cache = this.getViewCache();\n\n if (cache) {\n const views = this.getAllChildViews().concat(this);\n const objectKeys = views.map(view => view.object.getCacheKey());\n\n for (const key in cache) {\n if (!objectKeys.includes(key)) {\n delete cache[key];\n }\n }\n }\n }\n\n}\nclass ObjectGroupView extends ObjectView {\n constructor() {\n super(...arguments);\n this.objectGroup = this.object;\n this.viewClass = this.options.viewClass;\n delete this.options.viewClass;\n }\n\n getChildViews() {\n if (!this.childViews.length) {\n Array.from(this.objectGroup.getObjects()).forEach(object => {\n this.findOrCreateCachedChildView(this.viewClass, object, this.options);\n });\n }\n\n return this.childViews;\n }\n\n createNodes() {\n const element = this.createContainerElement();\n this.getChildViews().forEach(view => {\n Array.from(view.getNodes()).forEach(node => {\n element.appendChild(node);\n });\n });\n return [element];\n }\n\n createContainerElement() {\n let depth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.objectGroup.getDepth();\n return this.getChildViews()[0].createContainerElement(depth);\n }\n\n}\n\nconst {\n css: css$2\n} = config;\nclass AttachmentView extends ObjectView {\n constructor() {\n super(...arguments);\n this.attachment = this.object;\n this.attachment.uploadProgressDelegate = this;\n this.attachmentPiece = this.options.piece;\n }\n\n createContentNodes() {\n return [];\n }\n\n createNodes() {\n let innerElement;\n const figure = innerElement = makeElement({\n tagName: \"figure\",\n className: this.getClassName(),\n data: this.getData(),\n editable: false\n });\n const href = this.getHref();\n\n if (href) {\n innerElement = makeElement({\n tagName: \"a\",\n editable: false,\n attributes: {\n href,\n tabindex: -1\n }\n });\n figure.appendChild(innerElement);\n }\n\n if (this.attachment.hasContent()) {\n innerElement.innerHTML = this.attachment.getContent();\n } else {\n this.createContentNodes().forEach(node => {\n innerElement.appendChild(node);\n });\n }\n\n innerElement.appendChild(this.createCaptionElement());\n\n if (this.attachment.isPending()) {\n this.progressElement = makeElement({\n tagName: \"progress\",\n attributes: {\n class: css$2.attachmentProgress,\n value: this.attachment.getUploadProgress(),\n max: 100\n },\n data: {\n trixMutable: true,\n trixStoreKey: [\"progressElement\", this.attachment.id].join(\"/\")\n }\n });\n figure.appendChild(this.progressElement);\n }\n\n return [createCursorTarget(\"left\"), figure, createCursorTarget(\"right\")];\n }\n\n createCaptionElement() {\n const figcaption = makeElement({\n tagName: \"figcaption\",\n className: css$2.attachmentCaption\n });\n const caption = this.attachmentPiece.getCaption();\n\n if (caption) {\n figcaption.classList.add(\"\".concat(css$2.attachmentCaption, \"--edited\"));\n figcaption.textContent = caption;\n } else {\n let name, size;\n const captionConfig = this.getCaptionConfig();\n\n if (captionConfig.name) {\n name = this.attachment.getFilename();\n }\n\n if (captionConfig.size) {\n size = this.attachment.getFormattedFilesize();\n }\n\n if (name) {\n const nameElement = makeElement({\n tagName: \"span\",\n className: css$2.attachmentName,\n textContent: name\n });\n figcaption.appendChild(nameElement);\n }\n\n if (size) {\n if (name) {\n figcaption.appendChild(document.createTextNode(\" \"));\n }\n\n const sizeElement = makeElement({\n tagName: \"span\",\n className: css$2.attachmentSize,\n textContent: size\n });\n figcaption.appendChild(sizeElement);\n }\n }\n\n return figcaption;\n }\n\n getClassName() {\n const names = [css$2.attachment, \"\".concat(css$2.attachment, \"--\").concat(this.attachment.getType())];\n const extension = this.attachment.getExtension();\n\n if (extension) {\n names.push(\"\".concat(css$2.attachment, \"--\").concat(extension));\n }\n\n return names.join(\" \");\n }\n\n getData() {\n const data = {\n trixAttachment: JSON.stringify(this.attachment),\n trixContentType: this.attachment.getContentType(),\n trixId: this.attachment.id\n };\n const {\n attributes\n } = this.attachmentPiece;\n\n if (!attributes.isEmpty()) {\n data.trixAttributes = JSON.stringify(attributes);\n }\n\n if (this.attachment.isPending()) {\n data.trixSerialize = false;\n }\n\n return data;\n }\n\n getHref() {\n if (!htmlContainsTagName(this.attachment.getContent(), \"a\")) {\n return this.attachment.getHref();\n }\n }\n\n getCaptionConfig() {\n var _config$attachments$t;\n\n const type = this.attachment.getType();\n const captionConfig = copyObject((_config$attachments$t = config.attachments[type]) === null || _config$attachments$t === void 0 ? void 0 : _config$attachments$t.caption);\n\n if (type === \"file\") {\n captionConfig.name = true;\n }\n\n return captionConfig;\n }\n\n findProgressElement() {\n var _this$findElement;\n\n return (_this$findElement = this.findElement()) === null || _this$findElement === void 0 ? void 0 : _this$findElement.querySelector(\"progress\");\n } // Attachment delegate\n\n\n attachmentDidChangeUploadProgress() {\n const value = this.attachment.getUploadProgress();\n const progressElement = this.findProgressElement();\n\n if (progressElement) {\n progressElement.value = value;\n }\n }\n\n}\n\nconst createCursorTarget = name => makeElement({\n tagName: \"span\",\n textContent: ZERO_WIDTH_SPACE,\n data: {\n trixCursorTarget: name,\n trixSerialize: false\n }\n});\n\nconst htmlContainsTagName = function (html, tagName) {\n const div = makeElement(\"div\");\n div.innerHTML = html || \"\";\n return div.querySelector(tagName);\n};\n\nclass PreviewableAttachmentView extends AttachmentView {\n constructor() {\n super(...arguments);\n this.attachment.previewDelegate = this;\n }\n\n createContentNodes() {\n this.image = makeElement({\n tagName: \"img\",\n attributes: {\n src: \"\"\n },\n data: {\n trixMutable: true\n }\n });\n this.refresh(this.image);\n return [this.image];\n }\n\n createCaptionElement() {\n const figcaption = super.createCaptionElement(...arguments);\n\n if (!figcaption.textContent) {\n figcaption.setAttribute(\"data-trix-placeholder\", config.lang.captionPlaceholder);\n }\n\n return figcaption;\n }\n\n refresh(image) {\n if (!image) {\n var _this$findElement;\n\n image = (_this$findElement = this.findElement()) === null || _this$findElement === void 0 ? void 0 : _this$findElement.querySelector(\"img\");\n }\n\n if (image) {\n return this.updateAttributesForImage(image);\n }\n }\n\n updateAttributesForImage(image) {\n const url = this.attachment.getURL();\n const previewURL = this.attachment.getPreviewURL();\n image.src = previewURL || url;\n\n if (previewURL === url) {\n image.removeAttribute(\"data-trix-serialized-attributes\");\n } else {\n const serializedAttributes = JSON.stringify({\n src: url\n });\n image.setAttribute(\"data-trix-serialized-attributes\", serializedAttributes);\n }\n\n const width = this.attachment.getWidth();\n const height = this.attachment.getHeight();\n\n if (width != null) {\n image.width = width;\n }\n\n if (height != null) {\n image.height = height;\n }\n\n const storeKey = [\"imageElement\", this.attachment.id, image.src, image.width, image.height].join(\"/\");\n image.dataset.trixStoreKey = storeKey;\n } // Attachment delegate\n\n\n attachmentDidChangeAttributes() {\n this.refresh(this.image);\n return this.refresh();\n }\n\n}\n\n/* eslint-disable\n no-useless-escape,\n no-var,\n*/\nclass PieceView extends ObjectView {\n constructor() {\n super(...arguments);\n this.piece = this.object;\n this.attributes = this.piece.getAttributes();\n this.textConfig = this.options.textConfig;\n this.context = this.options.context;\n\n if (this.piece.attachment) {\n this.attachment = this.piece.attachment;\n } else {\n this.string = this.piece.toString();\n }\n }\n\n createNodes() {\n let nodes = this.attachment ? this.createAttachmentNodes() : this.createStringNodes();\n const element = this.createElement();\n\n if (element) {\n const innerElement = findInnerElement(element);\n Array.from(nodes).forEach(node => {\n innerElement.appendChild(node);\n });\n nodes = [element];\n }\n\n return nodes;\n }\n\n createAttachmentNodes() {\n const constructor = this.attachment.isPreviewable() ? PreviewableAttachmentView : AttachmentView;\n const view = this.createChildView(constructor, this.piece.attachment, {\n piece: this.piece\n });\n return view.getNodes();\n }\n\n createStringNodes() {\n var _this$textConfig;\n\n if ((_this$textConfig = this.textConfig) !== null && _this$textConfig !== void 0 && _this$textConfig.plaintext) {\n return [document.createTextNode(this.string)];\n } else {\n const nodes = [];\n const iterable = this.string.split(\"\\n\");\n\n for (let index = 0; index < iterable.length; index++) {\n const substring = iterable[index];\n\n if (index > 0) {\n const element = makeElement(\"br\");\n nodes.push(element);\n }\n\n if (substring.length) {\n const node = document.createTextNode(this.preserveSpaces(substring));\n nodes.push(node);\n }\n }\n\n return nodes;\n }\n }\n\n createElement() {\n let element, key, value;\n const styles = {};\n\n for (key in this.attributes) {\n value = this.attributes[key];\n const config = getTextConfig(key);\n\n if (config) {\n if (config.tagName) {\n var innerElement;\n const pendingElement = makeElement(config.tagName);\n\n if (innerElement) {\n innerElement.appendChild(pendingElement);\n innerElement = pendingElement;\n } else {\n element = innerElement = pendingElement;\n }\n }\n\n if (config.styleProperty) {\n styles[config.styleProperty] = value;\n }\n\n if (config.style) {\n for (key in config.style) {\n value = config.style[key];\n styles[key] = value;\n }\n }\n }\n }\n\n if (Object.keys(styles).length) {\n if (!element) {\n element = makeElement(\"span\");\n }\n\n for (key in styles) {\n value = styles[key];\n element.style[key] = value;\n }\n }\n\n return element;\n }\n\n createContainerElement() {\n for (const key in this.attributes) {\n const value = this.attributes[key];\n const config = getTextConfig(key);\n\n if (config) {\n if (config.groupTagName) {\n const attributes = {};\n attributes[key] = value;\n return makeElement(config.groupTagName, attributes);\n }\n }\n }\n }\n\n preserveSpaces(string) {\n if (this.context.isLast) {\n string = string.replace(/\\ $/, NON_BREAKING_SPACE);\n }\n\n string = string.replace(/(\\S)\\ {3}(\\S)/g, \"$1 \".concat(NON_BREAKING_SPACE, \" $2\")).replace(/\\ {2}/g, \"\".concat(NON_BREAKING_SPACE, \" \")).replace(/\\ {2}/g, \" \".concat(NON_BREAKING_SPACE));\n\n if (this.context.isFirst || this.context.followsWhitespace) {\n string = string.replace(/^\\ /, NON_BREAKING_SPACE);\n }\n\n return string;\n }\n\n}\n\n/* eslint-disable\n no-var,\n*/\nclass TextView extends ObjectView {\n constructor() {\n super(...arguments);\n this.text = this.object;\n this.textConfig = this.options.textConfig;\n }\n\n createNodes() {\n const nodes = [];\n const pieces = ObjectGroup.groupObjects(this.getPieces());\n const lastIndex = pieces.length - 1;\n\n for (let index = 0; index < pieces.length; index++) {\n const piece = pieces[index];\n const context = {};\n\n if (index === 0) {\n context.isFirst = true;\n }\n\n if (index === lastIndex) {\n context.isLast = true;\n }\n\n if (endsWithWhitespace(previousPiece)) {\n context.followsWhitespace = true;\n }\n\n const view = this.findOrCreateCachedChildView(PieceView, piece, {\n textConfig: this.textConfig,\n context\n });\n nodes.push(...Array.from(view.getNodes() || []));\n var previousPiece = piece;\n }\n\n return nodes;\n }\n\n getPieces() {\n return Array.from(this.text.getPieces()).filter(piece => !piece.hasAttribute(\"blockBreak\"));\n }\n\n}\n\nconst endsWithWhitespace = piece => /\\s$/.test(piece === null || piece === void 0 ? void 0 : piece.toString());\n\nconst {\n css: css$1\n} = config;\nclass BlockView extends ObjectView {\n constructor() {\n super(...arguments);\n this.block = this.object;\n this.attributes = this.block.getAttributes();\n }\n\n createNodes() {\n const comment = document.createComment(\"block\");\n const nodes = [comment];\n\n if (this.block.isEmpty()) {\n nodes.push(makeElement(\"br\"));\n } else {\n var _getBlockConfig;\n\n const textConfig = (_getBlockConfig = getBlockConfig(this.block.getLastAttribute())) === null || _getBlockConfig === void 0 ? void 0 : _getBlockConfig.text;\n const textView = this.findOrCreateCachedChildView(TextView, this.block.text, {\n textConfig\n });\n nodes.push(...Array.from(textView.getNodes() || []));\n\n if (this.shouldAddExtraNewlineElement()) {\n nodes.push(makeElement(\"br\"));\n }\n }\n\n if (this.attributes.length) {\n return nodes;\n } else {\n let attributes;\n const {\n tagName\n } = config.blockAttributes.default;\n\n if (this.block.isRTL()) {\n attributes = {\n dir: \"rtl\"\n };\n }\n\n const element = makeElement({\n tagName,\n attributes\n });\n nodes.forEach(node => element.appendChild(node));\n return [element];\n }\n }\n\n createContainerElement(depth) {\n let attributes, className;\n const attributeName = this.attributes[depth];\n const {\n tagName\n } = getBlockConfig(attributeName);\n\n if (depth === 0 && this.block.isRTL()) {\n attributes = {\n dir: \"rtl\"\n };\n }\n\n if (attributeName === \"attachmentGallery\") {\n const size = this.block.getBlockBreakPosition();\n className = \"\".concat(css$1.attachmentGallery, \" \").concat(css$1.attachmentGallery, \"--\").concat(size);\n }\n\n return makeElement({\n tagName,\n className,\n attributes\n });\n } // A single
at the end of a block element has no visual representation\n // so add an extra one.\n\n\n shouldAddExtraNewlineElement() {\n return /\\n\\n$/.test(this.block.toString());\n }\n\n}\n\nclass DocumentView extends ObjectView {\n static render(document) {\n const element = makeElement(\"div\");\n const view = new this(document, {\n element\n });\n view.render();\n view.sync();\n return element;\n }\n\n constructor() {\n super(...arguments);\n this.element = this.options.element;\n this.elementStore = new ElementStore();\n this.setDocument(this.object);\n }\n\n setDocument(document) {\n if (!document.isEqualTo(this.document)) {\n this.document = this.object = document;\n }\n }\n\n render() {\n this.childViews = [];\n this.shadowElement = makeElement(\"div\");\n\n if (!this.document.isEmpty()) {\n const objects = ObjectGroup.groupObjects(this.document.getBlocks(), {\n asTree: true\n });\n Array.from(objects).forEach(object => {\n const view = this.findOrCreateCachedChildView(BlockView, object);\n Array.from(view.getNodes()).map(node => this.shadowElement.appendChild(node));\n });\n }\n }\n\n isSynced() {\n return elementsHaveEqualHTML(this.shadowElement, this.element);\n }\n\n sync() {\n const fragment = this.createDocumentFragmentForSync();\n\n while (this.element.lastChild) {\n this.element.removeChild(this.element.lastChild);\n }\n\n this.element.appendChild(fragment);\n return this.didSync();\n } // Private\n\n\n didSync() {\n this.elementStore.reset(findStoredElements(this.element));\n return defer(() => this.garbageCollectCachedViews());\n }\n\n createDocumentFragmentForSync() {\n const fragment = document.createDocumentFragment();\n Array.from(this.shadowElement.childNodes).forEach(node => {\n fragment.appendChild(node.cloneNode(true));\n });\n Array.from(findStoredElements(fragment)).forEach(element => {\n const storedElement = this.elementStore.remove(element);\n\n if (storedElement) {\n element.parentNode.replaceChild(storedElement, element);\n }\n });\n return fragment;\n }\n\n}\n\nconst findStoredElements = element => element.querySelectorAll(\"[data-trix-store-key]\");\n\nconst elementsHaveEqualHTML = (element, otherElement) => ignoreSpaces(element.innerHTML) === ignoreSpaces(otherElement.innerHTML);\n\nconst ignoreSpaces = html => html.replace(/ /g, \" \");\n\n/* eslint-disable\n no-empty,\n*/\nconst unserializableElementSelector = \"[data-trix-serialize=false]\";\nconst unserializableAttributeNames = [\"contenteditable\", \"data-trix-id\", \"data-trix-store-key\", \"data-trix-mutable\", \"data-trix-placeholder\", \"tabindex\"];\nconst serializedAttributesAttribute = \"data-trix-serialized-attributes\";\nconst serializedAttributesSelector = \"[\".concat(serializedAttributesAttribute, \"]\");\nconst blockCommentPattern = new RegExp(\"\", \"g\");\nconst serializers = {\n \"application/json\": function (serializable) {\n let document;\n\n if (serializable instanceof Document) {\n document = serializable;\n } else if (serializable instanceof HTMLElement) {\n document = HTMLParser.parse(serializable.innerHTML).getDocument();\n } else {\n throw new Error(\"unserializable object\");\n }\n\n return document.toSerializableDocument().toJSONString();\n },\n \"text/html\": function (serializable) {\n let element;\n\n if (serializable instanceof Document) {\n element = DocumentView.render(serializable);\n } else if (serializable instanceof HTMLElement) {\n element = serializable.cloneNode(true);\n } else {\n throw new Error(\"unserializable object\");\n } // Remove unserializable elements\n\n\n Array.from(element.querySelectorAll(unserializableElementSelector)).forEach(el => {\n removeNode(el);\n }); // Remove unserializable attributes\n\n unserializableAttributeNames.forEach(attribute => {\n Array.from(element.querySelectorAll(\"[\".concat(attribute, \"]\"))).forEach(el => {\n el.removeAttribute(attribute);\n });\n }); // Rewrite elements with serialized attribute overrides\n\n Array.from(element.querySelectorAll(serializedAttributesSelector)).forEach(el => {\n try {\n const attributes = JSON.parse(el.getAttribute(serializedAttributesAttribute));\n el.removeAttribute(serializedAttributesAttribute);\n\n for (const name in attributes) {\n const value = attributes[name];\n el.setAttribute(name, value);\n }\n } catch (error) {}\n });\n return element.innerHTML.replace(blockCommentPattern, \"\");\n }\n};\nconst deserializers = {\n \"application/json\": function (string) {\n return Document.fromJSONString(string);\n },\n \"text/html\": function (string) {\n return HTMLParser.parse(string).getDocument();\n }\n};\nconst serializeToContentType = function (serializable, contentType) {\n const serializer = serializers[contentType];\n\n if (serializer) {\n return serializer(serializable);\n } else {\n throw new Error(\"unknown content type: \".concat(contentType));\n }\n};\nconst deserializeFromContentType = function (string, contentType) {\n const deserializer = deserializers[contentType];\n\n if (deserializer) {\n return deserializer(string);\n } else {\n throw new Error(\"unknown content type: \".concat(contentType));\n }\n};\n\nconst mutableAttributeName = \"data-trix-mutable\";\nconst mutableSelector = \"[\".concat(mutableAttributeName, \"]\");\nconst options = {\n attributes: true,\n childList: true,\n characterData: true,\n characterDataOldValue: true,\n subtree: true\n};\nclass MutationObserver extends BasicObject {\n constructor(element) {\n super(element);\n this.didMutate = this.didMutate.bind(this);\n this.element = element;\n this.observer = new window.MutationObserver(this.didMutate);\n this.start();\n }\n\n start() {\n this.reset();\n return this.observer.observe(this.element, options);\n }\n\n stop() {\n return this.observer.disconnect();\n }\n\n didMutate(mutations) {\n this.mutations.push(...Array.from(this.findSignificantMutations(mutations) || []));\n\n if (this.mutations.length) {\n var _this$delegate, _this$delegate$elemen;\n\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$elemen = _this$delegate.elementDidMutate) === null || _this$delegate$elemen === void 0 ? void 0 : _this$delegate$elemen.call(_this$delegate, this.getMutationSummary());\n return this.reset();\n }\n } // Private\n\n\n reset() {\n this.mutations = [];\n }\n\n findSignificantMutations(mutations) {\n return mutations.filter(mutation => {\n return this.mutationIsSignificant(mutation);\n });\n }\n\n mutationIsSignificant(mutation) {\n if (this.nodeIsMutable(mutation.target)) {\n return false;\n }\n\n for (const node of Array.from(this.nodesModifiedByMutation(mutation))) {\n if (this.nodeIsSignificant(node)) return true;\n }\n\n return false;\n }\n\n nodeIsSignificant(node) {\n return node !== this.element && !this.nodeIsMutable(node) && !nodeIsEmptyTextNode(node);\n }\n\n nodeIsMutable(node) {\n return findClosestElementFromNode(node, {\n matchingSelector: mutableSelector\n });\n }\n\n nodesModifiedByMutation(mutation) {\n const nodes = [];\n\n switch (mutation.type) {\n case \"attributes\":\n if (mutation.attributeName !== mutableAttributeName) {\n nodes.push(mutation.target);\n }\n\n break;\n\n case \"characterData\":\n // Changes to text nodes should consider the parent element\n nodes.push(mutation.target.parentNode);\n nodes.push(mutation.target);\n break;\n\n case \"childList\":\n // Consider each added or removed node\n nodes.push(...Array.from(mutation.addedNodes || []));\n nodes.push(...Array.from(mutation.removedNodes || []));\n break;\n }\n\n return nodes;\n }\n\n getMutationSummary() {\n return this.getTextMutationSummary();\n }\n\n getTextMutationSummary() {\n const {\n additions,\n deletions\n } = this.getTextChangesFromCharacterData();\n const textChanges = this.getTextChangesFromChildList();\n Array.from(textChanges.additions).forEach(addition => {\n if (!Array.from(additions).includes(addition)) {\n additions.push(addition);\n }\n });\n deletions.push(...Array.from(textChanges.deletions || []));\n const summary = {};\n const added = additions.join(\"\");\n\n if (added) {\n summary.textAdded = added;\n }\n\n const deleted = deletions.join(\"\");\n\n if (deleted) {\n summary.textDeleted = deleted;\n }\n\n return summary;\n }\n\n getMutationsByType(type) {\n return Array.from(this.mutations).filter(mutation => mutation.type === type);\n }\n\n getTextChangesFromChildList() {\n let textAdded, textRemoved;\n const addedNodes = [];\n const removedNodes = [];\n Array.from(this.getMutationsByType(\"childList\")).forEach(mutation => {\n addedNodes.push(...Array.from(mutation.addedNodes || []));\n removedNodes.push(...Array.from(mutation.removedNodes || []));\n });\n const singleBlockCommentRemoved = addedNodes.length === 0 && removedNodes.length === 1 && nodeIsBlockStartComment(removedNodes[0]);\n\n if (singleBlockCommentRemoved) {\n textAdded = [];\n textRemoved = [\"\\n\"];\n } else {\n textAdded = getTextForNodes(addedNodes);\n textRemoved = getTextForNodes(removedNodes);\n }\n\n const additions = textAdded.filter((text, index) => text !== textRemoved[index]).map(normalizeSpaces);\n const deletions = textRemoved.filter((text, index) => text !== textAdded[index]).map(normalizeSpaces);\n return {\n additions,\n deletions\n };\n }\n\n getTextChangesFromCharacterData() {\n let added, removed;\n const characterMutations = this.getMutationsByType(\"characterData\");\n\n if (characterMutations.length) {\n const startMutation = characterMutations[0],\n endMutation = characterMutations[characterMutations.length - 1];\n const oldString = normalizeSpaces(startMutation.oldValue);\n const newString = normalizeSpaces(endMutation.target.data);\n const summarized = summarizeStringChange(oldString, newString);\n added = summarized.added;\n removed = summarized.removed;\n }\n\n return {\n additions: added ? [added] : [],\n deletions: removed ? [removed] : []\n };\n }\n\n}\n\nconst getTextForNodes = function () {\n let nodes = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n const text = [];\n\n for (const node of Array.from(nodes)) {\n switch (node.nodeType) {\n case Node.TEXT_NODE:\n text.push(node.data);\n break;\n\n case Node.ELEMENT_NODE:\n if (tagName(node) === \"br\") {\n text.push(\"\\n\");\n } else {\n text.push(...Array.from(getTextForNodes(node.childNodes) || []));\n }\n\n break;\n }\n }\n\n return text;\n};\n\nclass Controller extends BasicObject {}\n\n/* eslint-disable\n no-empty,\n*/\nclass FileVerificationOperation extends Operation {\n constructor(file) {\n super(...arguments);\n this.file = file;\n }\n\n perform(callback) {\n const reader = new FileReader();\n\n reader.onerror = () => callback(false);\n\n reader.onload = () => {\n reader.onerror = null;\n\n try {\n reader.abort();\n } catch (error) {}\n\n return callback(true, this.file);\n };\n\n return reader.readAsArrayBuffer(this.file);\n }\n\n}\n\nclass InputController extends BasicObject {\n constructor(element) {\n super(...arguments);\n this.element = element;\n this.mutationObserver = new MutationObserver(this.element);\n this.mutationObserver.delegate = this;\n\n for (const eventName in this.constructor.events) {\n handleEvent(eventName, {\n onElement: this.element,\n withCallback: this.handlerFor(eventName)\n });\n }\n }\n\n elementDidMutate(mutationSummary) {}\n\n editorWillSyncDocumentView() {\n return this.mutationObserver.stop();\n }\n\n editorDidSyncDocumentView() {\n return this.mutationObserver.start();\n }\n\n requestRender() {\n var _this$delegate, _this$delegate$inputC;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$inputC = _this$delegate.inputControllerDidRequestRender) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n }\n\n requestReparse() {\n var _this$delegate2, _this$delegate2$input;\n\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$input = _this$delegate2.inputControllerDidRequestReparse) === null || _this$delegate2$input === void 0 ? void 0 : _this$delegate2$input.call(_this$delegate2);\n return this.requestRender();\n }\n\n attachFiles(files) {\n const operations = Array.from(files).map(file => new FileVerificationOperation(file));\n return Promise.all(operations).then(files => {\n this.handleInput(function () {\n var _this$delegate3, _this$responder;\n\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.inputControllerWillAttachFiles();\n (_this$responder = this.responder) === null || _this$responder === void 0 ? void 0 : _this$responder.insertFiles(files);\n return this.requestRender();\n });\n });\n } // Private\n\n\n handlerFor(eventName) {\n return event => {\n if (!event.defaultPrevented) {\n this.handleInput(() => {\n if (!innerElementIsActive(this.element)) {\n this.eventName = eventName;\n this.constructor.events[eventName].call(this, event);\n }\n });\n }\n };\n }\n\n handleInput(callback) {\n try {\n var _this$delegate4;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.inputControllerWillHandleInput();\n callback.call(this);\n } finally {\n var _this$delegate5;\n\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.inputControllerDidHandleInput();\n }\n }\n\n createLinkHTML(href, text) {\n const link = document.createElement(\"a\");\n link.href = href;\n link.textContent = text ? text : href;\n return link.outerHTML;\n }\n\n}\n\n_defineProperty(InputController, \"events\", {});\n\nvar _$codePointAt, _;\nconst {\n browser,\n keyNames: keyNames$1\n} = config;\nlet pastedFileCount = 0;\nclass Level0InputController extends InputController {\n constructor() {\n super(...arguments);\n this.resetInputSummary();\n }\n\n setInputSummary() {\n let summary = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n this.inputSummary.eventName = this.eventName;\n\n for (const key in summary) {\n const value = summary[key];\n this.inputSummary[key] = value;\n }\n\n return this.inputSummary;\n }\n\n resetInputSummary() {\n this.inputSummary = {};\n }\n\n reset() {\n this.resetInputSummary();\n return selectionChangeObserver.reset();\n } // Mutation observer delegate\n\n\n elementDidMutate(mutationSummary) {\n if (this.isComposing()) {\n var _this$delegate, _this$delegate$inputC;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$inputC = _this$delegate.inputControllerDidAllowUnhandledInput) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n } else {\n return this.handleInput(function () {\n if (this.mutationIsSignificant(mutationSummary)) {\n if (this.mutationIsExpected(mutationSummary)) {\n this.requestRender();\n } else {\n this.requestReparse();\n }\n }\n\n return this.reset();\n });\n }\n }\n\n mutationIsExpected(_ref) {\n let {\n textAdded,\n textDeleted\n } = _ref;\n\n if (this.inputSummary.preferDocument) {\n return true;\n }\n\n const mutationAdditionMatchesSummary = textAdded != null ? textAdded === this.inputSummary.textAdded : !this.inputSummary.textAdded;\n const mutationDeletionMatchesSummary = textDeleted != null ? this.inputSummary.didDelete : !this.inputSummary.didDelete;\n const unexpectedNewlineAddition = [\"\\n\", \" \\n\"].includes(textAdded) && !mutationAdditionMatchesSummary;\n const unexpectedNewlineDeletion = textDeleted === \"\\n\" && !mutationDeletionMatchesSummary;\n const singleUnexpectedNewline = unexpectedNewlineAddition && !unexpectedNewlineDeletion || unexpectedNewlineDeletion && !unexpectedNewlineAddition;\n\n if (singleUnexpectedNewline) {\n const range = this.getSelectedRange();\n\n if (range) {\n var _this$responder;\n\n const offset = unexpectedNewlineAddition ? textAdded.replace(/\\n$/, \"\").length || -1 : (textAdded === null || textAdded === void 0 ? void 0 : textAdded.length) || 1;\n\n if ((_this$responder = this.responder) !== null && _this$responder !== void 0 && _this$responder.positionIsBlockBreak(range[1] + offset)) {\n return true;\n }\n }\n }\n\n return mutationAdditionMatchesSummary && mutationDeletionMatchesSummary;\n }\n\n mutationIsSignificant(mutationSummary) {\n var _this$compositionInpu;\n\n const textChanged = Object.keys(mutationSummary).length > 0;\n const composedEmptyString = ((_this$compositionInpu = this.compositionInput) === null || _this$compositionInpu === void 0 ? void 0 : _this$compositionInpu.getEndData()) === \"\";\n return textChanged || !composedEmptyString;\n } // Private\n\n\n getCompositionInput() {\n if (this.isComposing()) {\n return this.compositionInput;\n } else {\n this.compositionInput = new CompositionInput(this);\n }\n }\n\n isComposing() {\n return this.compositionInput && !this.compositionInput.isEnded();\n }\n\n deleteInDirection(direction, event) {\n var _this$responder2;\n\n if (((_this$responder2 = this.responder) === null || _this$responder2 === void 0 ? void 0 : _this$responder2.deleteInDirection(direction)) === false) {\n if (event) {\n event.preventDefault();\n return this.requestRender();\n }\n } else {\n return this.setInputSummary({\n didDelete: true\n });\n }\n }\n\n serializeSelectionToDataTransfer(dataTransfer) {\n var _this$responder3;\n\n if (!dataTransferIsWritable(dataTransfer)) return;\n const document = (_this$responder3 = this.responder) === null || _this$responder3 === void 0 ? void 0 : _this$responder3.getSelectedDocument().toSerializableDocument();\n dataTransfer.setData(\"application/x-trix-document\", JSON.stringify(document));\n dataTransfer.setData(\"text/html\", DocumentView.render(document).innerHTML);\n dataTransfer.setData(\"text/plain\", document.toString().replace(/\\n$/, \"\"));\n return true;\n }\n\n canAcceptDataTransfer(dataTransfer) {\n const types = {};\n Array.from((dataTransfer === null || dataTransfer === void 0 ? void 0 : dataTransfer.types) || []).forEach(type => {\n types[type] = true;\n });\n return types.Files || types[\"application/x-trix-document\"] || types[\"text/html\"] || types[\"text/plain\"];\n }\n\n getPastedHTMLUsingHiddenElement(callback) {\n const selectedRange = this.getSelectedRange();\n const style = {\n position: \"absolute\",\n left: \"\".concat(window.pageXOffset, \"px\"),\n top: \"\".concat(window.pageYOffset, \"px\"),\n opacity: 0\n };\n const element = makeElement({\n style,\n tagName: \"div\",\n editable: true\n });\n document.body.appendChild(element);\n element.focus();\n return requestAnimationFrame(() => {\n const html = element.innerHTML;\n removeNode(element);\n this.setSelectedRange(selectedRange);\n return callback(html);\n });\n }\n\n}\n\n_defineProperty(Level0InputController, \"events\", {\n keydown(event) {\n if (!this.isComposing()) {\n this.resetInputSummary();\n }\n\n this.inputSummary.didInput = true;\n const keyName = keyNames$1[event.keyCode];\n\n if (keyName) {\n var _context2;\n\n let context = this.keys;\n [\"ctrl\", \"alt\", \"shift\", \"meta\"].forEach(modifier => {\n if (event[\"\".concat(modifier, \"Key\")]) {\n var _context;\n\n if (modifier === \"ctrl\") {\n modifier = \"control\";\n }\n\n context = (_context = context) === null || _context === void 0 ? void 0 : _context[modifier];\n }\n });\n\n if (((_context2 = context) === null || _context2 === void 0 ? void 0 : _context2[keyName]) != null) {\n this.setInputSummary({\n keyName\n });\n selectionChangeObserver.reset();\n context[keyName].call(this, event);\n }\n }\n\n if (keyEventIsKeyboardCommand(event)) {\n const character = String.fromCharCode(event.keyCode).toLowerCase();\n\n if (character) {\n var _this$delegate3;\n\n const keys = [\"alt\", \"shift\"].map(modifier => {\n if (event[\"\".concat(modifier, \"Key\")]) {\n return modifier;\n }\n }).filter(key => key);\n keys.push(character);\n\n if ((_this$delegate3 = this.delegate) !== null && _this$delegate3 !== void 0 && _this$delegate3.inputControllerDidReceiveKeyboardCommand(keys)) {\n event.preventDefault();\n }\n }\n }\n },\n\n keypress(event) {\n if (this.inputSummary.eventName != null) return;\n if (event.metaKey) return;\n if (event.ctrlKey && !event.altKey) return;\n const string = stringFromKeyEvent(event);\n\n if (string) {\n var _this$delegate4, _this$responder9;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.inputControllerWillPerformTyping();\n (_this$responder9 = this.responder) === null || _this$responder9 === void 0 ? void 0 : _this$responder9.insertString(string);\n return this.setInputSummary({\n textAdded: string,\n didDelete: this.selectionIsExpanded()\n });\n }\n },\n\n textInput(event) {\n // Handle autocapitalization\n const {\n data\n } = event;\n const {\n textAdded\n } = this.inputSummary;\n\n if (textAdded && textAdded !== data && textAdded.toUpperCase() === data) {\n var _this$responder10;\n\n const range = this.getSelectedRange();\n this.setSelectedRange([range[0], range[1] + textAdded.length]);\n (_this$responder10 = this.responder) === null || _this$responder10 === void 0 ? void 0 : _this$responder10.insertString(data);\n this.setInputSummary({\n textAdded: data\n });\n return this.setSelectedRange(range);\n }\n },\n\n dragenter(event) {\n event.preventDefault();\n },\n\n dragstart(event) {\n var _this$delegate5, _this$delegate5$input;\n\n this.serializeSelectionToDataTransfer(event.dataTransfer);\n this.draggedRange = this.getSelectedRange();\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : (_this$delegate5$input = _this$delegate5.inputControllerDidStartDrag) === null || _this$delegate5$input === void 0 ? void 0 : _this$delegate5$input.call(_this$delegate5);\n },\n\n dragover(event) {\n if (this.draggedRange || this.canAcceptDataTransfer(event.dataTransfer)) {\n event.preventDefault();\n const draggingPoint = {\n x: event.clientX,\n y: event.clientY\n };\n\n if (!objectsAreEqual(draggingPoint, this.draggingPoint)) {\n var _this$delegate6, _this$delegate6$input;\n\n this.draggingPoint = draggingPoint;\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : (_this$delegate6$input = _this$delegate6.inputControllerDidReceiveDragOverPoint) === null || _this$delegate6$input === void 0 ? void 0 : _this$delegate6$input.call(_this$delegate6, this.draggingPoint);\n }\n }\n },\n\n dragend(event) {\n var _this$delegate7, _this$delegate7$input;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : (_this$delegate7$input = _this$delegate7.inputControllerDidCancelDrag) === null || _this$delegate7$input === void 0 ? void 0 : _this$delegate7$input.call(_this$delegate7);\n this.draggedRange = null;\n this.draggingPoint = null;\n },\n\n drop(event) {\n var _event$dataTransfer, _this$responder11;\n\n event.preventDefault();\n const files = (_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.files;\n const documentJSON = event.dataTransfer.getData(\"application/x-trix-document\");\n const point = {\n x: event.clientX,\n y: event.clientY\n };\n (_this$responder11 = this.responder) === null || _this$responder11 === void 0 ? void 0 : _this$responder11.setLocationRangeFromPointRange(point);\n\n if (files !== null && files !== void 0 && files.length) {\n this.attachFiles(files);\n } else if (this.draggedRange) {\n var _this$delegate8, _this$responder12;\n\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : _this$delegate8.inputControllerWillMoveText();\n (_this$responder12 = this.responder) === null || _this$responder12 === void 0 ? void 0 : _this$responder12.moveTextFromRange(this.draggedRange);\n this.draggedRange = null;\n this.requestRender();\n } else if (documentJSON) {\n var _this$responder13;\n\n const document = Document.fromJSONString(documentJSON);\n (_this$responder13 = this.responder) === null || _this$responder13 === void 0 ? void 0 : _this$responder13.insertDocument(document);\n this.requestRender();\n }\n\n this.draggedRange = null;\n this.draggingPoint = null;\n },\n\n cut(event) {\n var _this$responder14;\n\n if ((_this$responder14 = this.responder) !== null && _this$responder14 !== void 0 && _this$responder14.selectionIsExpanded()) {\n var _this$delegate9;\n\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault();\n }\n\n (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.inputControllerWillCutText();\n this.deleteInDirection(\"backward\");\n\n if (event.defaultPrevented) {\n return this.requestRender();\n }\n }\n },\n\n copy(event) {\n var _this$responder15;\n\n if ((_this$responder15 = this.responder) !== null && _this$responder15 !== void 0 && _this$responder15.selectionIsExpanded()) {\n if (this.serializeSelectionToDataTransfer(event.clipboardData)) {\n event.preventDefault();\n }\n }\n },\n\n paste(event) {\n const clipboard = event.clipboardData || event.testClipboardData;\n const paste = {\n clipboard\n };\n\n if (!clipboard || pasteEventIsCrippledSafariHTMLPaste(event)) {\n this.getPastedHTMLUsingHiddenElement(html => {\n var _this$delegate10, _this$responder16, _this$delegate11;\n\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : _this$delegate10.inputControllerWillPaste(paste);\n (_this$responder16 = this.responder) === null || _this$responder16 === void 0 ? void 0 : _this$responder16.insertHTML(paste.html);\n this.requestRender();\n return (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 ? void 0 : _this$delegate11.inputControllerDidPaste(paste);\n });\n return;\n }\n\n const href = clipboard.getData(\"URL\");\n const html = clipboard.getData(\"text/html\");\n const name = clipboard.getData(\"public.url-name\");\n\n if (href) {\n var _this$delegate12, _this$responder17, _this$delegate13;\n\n let string;\n paste.type = \"text/html\";\n\n if (name) {\n string = squishBreakableWhitespace(name).trim();\n } else {\n string = href;\n }\n\n paste.html = this.createLinkHTML(href, string);\n (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : _this$delegate12.inputControllerWillPaste(paste);\n this.setInputSummary({\n textAdded: string,\n didDelete: this.selectionIsExpanded()\n });\n (_this$responder17 = this.responder) === null || _this$responder17 === void 0 ? void 0 : _this$responder17.insertHTML(paste.html);\n this.requestRender();\n (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 ? void 0 : _this$delegate13.inputControllerDidPaste(paste);\n } else if (dataTransferIsPlainText(clipboard)) {\n var _this$delegate14, _this$responder18, _this$delegate15;\n\n paste.type = \"text/plain\";\n paste.string = clipboard.getData(\"text/plain\");\n (_this$delegate14 = this.delegate) === null || _this$delegate14 === void 0 ? void 0 : _this$delegate14.inputControllerWillPaste(paste);\n this.setInputSummary({\n textAdded: paste.string,\n didDelete: this.selectionIsExpanded()\n });\n (_this$responder18 = this.responder) === null || _this$responder18 === void 0 ? void 0 : _this$responder18.insertString(paste.string);\n this.requestRender();\n (_this$delegate15 = this.delegate) === null || _this$delegate15 === void 0 ? void 0 : _this$delegate15.inputControllerDidPaste(paste);\n } else if (html) {\n var _this$delegate16, _this$responder19, _this$delegate17;\n\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate16 = this.delegate) === null || _this$delegate16 === void 0 ? void 0 : _this$delegate16.inputControllerWillPaste(paste);\n (_this$responder19 = this.responder) === null || _this$responder19 === void 0 ? void 0 : _this$responder19.insertHTML(paste.html);\n this.requestRender();\n (_this$delegate17 = this.delegate) === null || _this$delegate17 === void 0 ? void 0 : _this$delegate17.inputControllerDidPaste(paste);\n } else if (Array.from(clipboard.types).includes(\"Files\")) {\n var _clipboard$items, _clipboard$items$, _clipboard$items$$get;\n\n const file = (_clipboard$items = clipboard.items) === null || _clipboard$items === void 0 ? void 0 : (_clipboard$items$ = _clipboard$items[0]) === null || _clipboard$items$ === void 0 ? void 0 : (_clipboard$items$$get = _clipboard$items$.getAsFile) === null || _clipboard$items$$get === void 0 ? void 0 : _clipboard$items$$get.call(_clipboard$items$);\n\n if (file) {\n var _this$delegate18, _this$responder20, _this$delegate19;\n\n const extension = extensionForFile(file);\n\n if (!file.name && extension) {\n file.name = \"pasted-file-\".concat(++pastedFileCount, \".\").concat(extension);\n }\n\n paste.type = \"File\";\n paste.file = file;\n (_this$delegate18 = this.delegate) === null || _this$delegate18 === void 0 ? void 0 : _this$delegate18.inputControllerWillAttachFiles();\n (_this$responder20 = this.responder) === null || _this$responder20 === void 0 ? void 0 : _this$responder20.insertFile(paste.file);\n this.requestRender();\n (_this$delegate19 = this.delegate) === null || _this$delegate19 === void 0 ? void 0 : _this$delegate19.inputControllerDidPaste(paste);\n }\n }\n\n event.preventDefault();\n },\n\n compositionstart(event) {\n return this.getCompositionInput().start(event.data);\n },\n\n compositionupdate(event) {\n return this.getCompositionInput().update(event.data);\n },\n\n compositionend(event) {\n return this.getCompositionInput().end(event.data);\n },\n\n beforeinput(event) {\n this.inputSummary.didInput = true;\n },\n\n input(event) {\n this.inputSummary.didInput = true;\n return event.stopPropagation();\n }\n\n});\n\n_defineProperty(Level0InputController, \"keys\", {\n backspace(event) {\n var _this$delegate20;\n\n (_this$delegate20 = this.delegate) === null || _this$delegate20 === void 0 ? void 0 : _this$delegate20.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"backward\", event);\n },\n\n delete(event) {\n var _this$delegate21;\n\n (_this$delegate21 = this.delegate) === null || _this$delegate21 === void 0 ? void 0 : _this$delegate21.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"forward\", event);\n },\n\n return(event) {\n var _this$delegate22, _this$responder21;\n\n this.setInputSummary({\n preferDocument: true\n });\n (_this$delegate22 = this.delegate) === null || _this$delegate22 === void 0 ? void 0 : _this$delegate22.inputControllerWillPerformTyping();\n return (_this$responder21 = this.responder) === null || _this$responder21 === void 0 ? void 0 : _this$responder21.insertLineBreak();\n },\n\n tab(event) {\n var _this$responder22;\n\n if ((_this$responder22 = this.responder) !== null && _this$responder22 !== void 0 && _this$responder22.canIncreaseNestingLevel()) {\n var _this$responder23;\n\n (_this$responder23 = this.responder) === null || _this$responder23 === void 0 ? void 0 : _this$responder23.increaseNestingLevel();\n this.requestRender();\n event.preventDefault();\n }\n },\n\n left(event) {\n if (this.selectionIsInCursorTarget()) {\n var _this$responder24;\n\n event.preventDefault();\n return (_this$responder24 = this.responder) === null || _this$responder24 === void 0 ? void 0 : _this$responder24.moveCursorInDirection(\"backward\");\n }\n },\n\n right(event) {\n if (this.selectionIsInCursorTarget()) {\n var _this$responder25;\n\n event.preventDefault();\n return (_this$responder25 = this.responder) === null || _this$responder25 === void 0 ? void 0 : _this$responder25.moveCursorInDirection(\"forward\");\n }\n },\n\n control: {\n d(event) {\n var _this$delegate23;\n\n (_this$delegate23 = this.delegate) === null || _this$delegate23 === void 0 ? void 0 : _this$delegate23.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"forward\", event);\n },\n\n h(event) {\n var _this$delegate24;\n\n (_this$delegate24 = this.delegate) === null || _this$delegate24 === void 0 ? void 0 : _this$delegate24.inputControllerWillPerformTyping();\n return this.deleteInDirection(\"backward\", event);\n },\n\n o(event) {\n var _this$delegate25, _this$responder26;\n\n event.preventDefault();\n (_this$delegate25 = this.delegate) === null || _this$delegate25 === void 0 ? void 0 : _this$delegate25.inputControllerWillPerformTyping();\n (_this$responder26 = this.responder) === null || _this$responder26 === void 0 ? void 0 : _this$responder26.insertString(\"\\n\", {\n updatePosition: false\n });\n return this.requestRender();\n }\n\n },\n shift: {\n return(event) {\n var _this$delegate26, _this$responder27;\n\n (_this$delegate26 = this.delegate) === null || _this$delegate26 === void 0 ? void 0 : _this$delegate26.inputControllerWillPerformTyping();\n (_this$responder27 = this.responder) === null || _this$responder27 === void 0 ? void 0 : _this$responder27.insertString(\"\\n\");\n this.requestRender();\n event.preventDefault();\n },\n\n tab(event) {\n var _this$responder28;\n\n if ((_this$responder28 = this.responder) !== null && _this$responder28 !== void 0 && _this$responder28.canDecreaseNestingLevel()) {\n var _this$responder29;\n\n (_this$responder29 = this.responder) === null || _this$responder29 === void 0 ? void 0 : _this$responder29.decreaseNestingLevel();\n this.requestRender();\n event.preventDefault();\n }\n },\n\n left(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault();\n return this.expandSelectionInDirection(\"backward\");\n }\n },\n\n right(event) {\n if (this.selectionIsInCursorTarget()) {\n event.preventDefault();\n return this.expandSelectionInDirection(\"forward\");\n }\n }\n\n },\n alt: {\n backspace(event) {\n var _this$delegate27;\n\n this.setInputSummary({\n preferDocument: false\n });\n return (_this$delegate27 = this.delegate) === null || _this$delegate27 === void 0 ? void 0 : _this$delegate27.inputControllerWillPerformTyping();\n }\n\n },\n meta: {\n backspace(event) {\n var _this$delegate28;\n\n this.setInputSummary({\n preferDocument: false\n });\n return (_this$delegate28 = this.delegate) === null || _this$delegate28 === void 0 ? void 0 : _this$delegate28.inputControllerWillPerformTyping();\n }\n\n }\n});\n\nLevel0InputController.proxyMethod(\"responder?.getSelectedRange\");\nLevel0InputController.proxyMethod(\"responder?.setSelectedRange\");\nLevel0InputController.proxyMethod(\"responder?.expandSelectionInDirection\");\nLevel0InputController.proxyMethod(\"responder?.selectionIsInCursorTarget\");\nLevel0InputController.proxyMethod(\"responder?.selectionIsExpanded\");\n\nconst extensionForFile = file => {\n var _file$type, _file$type$match;\n\n return (_file$type = file.type) === null || _file$type === void 0 ? void 0 : (_file$type$match = _file$type.match(/\\/(\\w+)$/)) === null || _file$type$match === void 0 ? void 0 : _file$type$match[1];\n};\n\nconst hasStringCodePointAt = !!((_$codePointAt = (_ = \" \").codePointAt) !== null && _$codePointAt !== void 0 && _$codePointAt.call(_, 0));\n\nconst stringFromKeyEvent = function (event) {\n if (event.key && hasStringCodePointAt && event.key.codePointAt(0) === event.keyCode) {\n return event.key;\n } else {\n let code;\n\n if (event.which === null) {\n code = event.keyCode;\n } else if (event.which !== 0 && event.charCode !== 0) {\n code = event.charCode;\n }\n\n if (code != null && keyNames$1[code] !== \"escape\") {\n return UTF16String.fromCodepoints([code]).toString();\n }\n }\n};\n\nconst pasteEventIsCrippledSafariHTMLPaste = function (event) {\n const paste = event.clipboardData;\n\n if (paste) {\n if (paste.types.includes(\"text/html\")) {\n // Answer is yes if there's any possibility of Paste and Match Style in Safari,\n // which is nearly impossible to detect confidently: https://bugs.webkit.org/show_bug.cgi?id=174165\n for (const type of paste.types) {\n const hasPasteboardFlavor = /^CorePasteboardFlavorType/.test(type);\n const hasReadableDynamicData = /^dyn\\./.test(type) && paste.getData(type);\n const mightBePasteAndMatchStyle = hasPasteboardFlavor || hasReadableDynamicData;\n\n if (mightBePasteAndMatchStyle) {\n return true;\n }\n }\n\n return false;\n } else {\n const isExternalHTMLPaste = paste.types.includes(\"com.apple.webarchive\");\n const isExternalRichTextPaste = paste.types.includes(\"com.apple.flat-rtfd\");\n return isExternalHTMLPaste || isExternalRichTextPaste;\n }\n }\n};\n\nclass CompositionInput extends BasicObject {\n constructor(inputController) {\n super(...arguments);\n this.inputController = inputController;\n this.responder = this.inputController.responder;\n this.delegate = this.inputController.delegate;\n this.inputSummary = this.inputController.inputSummary;\n this.data = {};\n }\n\n start(data) {\n this.data.start = data;\n\n if (this.isSignificant()) {\n var _this$responder5;\n\n if (this.inputSummary.eventName === \"keypress\" && this.inputSummary.textAdded) {\n var _this$responder4;\n\n (_this$responder4 = this.responder) === null || _this$responder4 === void 0 ? void 0 : _this$responder4.deleteInDirection(\"left\");\n }\n\n if (!this.selectionIsExpanded()) {\n this.insertPlaceholder();\n this.requestRender();\n }\n\n this.range = (_this$responder5 = this.responder) === null || _this$responder5 === void 0 ? void 0 : _this$responder5.getSelectedRange();\n }\n }\n\n update(data) {\n this.data.update = data;\n\n if (this.isSignificant()) {\n const range = this.selectPlaceholder();\n\n if (range) {\n this.forgetPlaceholder();\n this.range = range;\n }\n }\n }\n\n end(data) {\n this.data.end = data;\n\n if (this.isSignificant()) {\n this.forgetPlaceholder();\n\n if (this.canApplyToDocument()) {\n var _this$delegate2, _this$responder6, _this$responder7, _this$responder8;\n\n this.setInputSummary({\n preferDocument: true,\n didInput: false\n });\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.inputControllerWillPerformTyping();\n (_this$responder6 = this.responder) === null || _this$responder6 === void 0 ? void 0 : _this$responder6.setSelectedRange(this.range);\n (_this$responder7 = this.responder) === null || _this$responder7 === void 0 ? void 0 : _this$responder7.insertString(this.data.end);\n return (_this$responder8 = this.responder) === null || _this$responder8 === void 0 ? void 0 : _this$responder8.setSelectedRange(this.range[0] + this.data.end.length);\n } else if (this.data.start != null || this.data.update != null) {\n this.requestReparse();\n return this.inputController.reset();\n }\n } else {\n return this.inputController.reset();\n }\n }\n\n getEndData() {\n return this.data.end;\n }\n\n isEnded() {\n return this.getEndData() != null;\n }\n\n isSignificant() {\n if (browser.composesExistingText) {\n return this.inputSummary.didInput;\n } else {\n return true;\n }\n } // Private\n\n\n canApplyToDocument() {\n var _this$data$start, _this$data$end;\n\n return ((_this$data$start = this.data.start) === null || _this$data$start === void 0 ? void 0 : _this$data$start.length) === 0 && ((_this$data$end = this.data.end) === null || _this$data$end === void 0 ? void 0 : _this$data$end.length) > 0 && this.range;\n }\n\n}\n\nCompositionInput.proxyMethod(\"inputController.setInputSummary\");\nCompositionInput.proxyMethod(\"inputController.requestRender\");\nCompositionInput.proxyMethod(\"inputController.requestReparse\");\nCompositionInput.proxyMethod(\"responder?.selectionIsExpanded\");\nCompositionInput.proxyMethod(\"responder?.insertPlaceholder\");\nCompositionInput.proxyMethod(\"responder?.selectPlaceholder\");\nCompositionInput.proxyMethod(\"responder?.forgetPlaceholder\");\n\nclass Level2InputController extends InputController {\n constructor() {\n super(...arguments);\n this.render = this.render.bind(this);\n }\n\n elementDidMutate() {\n if (this.scheduledRender) {\n if (this.composing) {\n var _this$delegate, _this$delegate$inputC;\n\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$inputC = _this$delegate.inputControllerDidAllowUnhandledInput) === null || _this$delegate$inputC === void 0 ? void 0 : _this$delegate$inputC.call(_this$delegate);\n }\n } else {\n return this.reparse();\n }\n }\n\n scheduleRender() {\n return this.scheduledRender ? this.scheduledRender : this.scheduledRender = requestAnimationFrame(this.render);\n }\n\n render() {\n var _this$afterRender;\n\n cancelAnimationFrame(this.scheduledRender);\n this.scheduledRender = null;\n\n if (!this.composing) {\n var _this$delegate2;\n\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.render();\n }\n\n (_this$afterRender = this.afterRender) === null || _this$afterRender === void 0 ? void 0 : _this$afterRender.call(this);\n this.afterRender = null;\n }\n\n reparse() {\n var _this$delegate3;\n\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.reparse();\n } // Responder helpers\n\n\n insertString() {\n var _this$delegate4;\n\n let string = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : \"\";\n let options = arguments.length > 1 ? arguments[1] : undefined;\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.inputControllerWillPerformTyping();\n return this.withTargetDOMRange(function () {\n var _this$responder;\n\n return (_this$responder = this.responder) === null || _this$responder === void 0 ? void 0 : _this$responder.insertString(string, options);\n });\n }\n\n toggleAttributeIfSupported(attributeName) {\n if (getAllAttributeNames().includes(attributeName)) {\n var _this$delegate5;\n\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.inputControllerWillPerformFormatting(attributeName);\n return this.withTargetDOMRange(function () {\n var _this$responder2;\n\n return (_this$responder2 = this.responder) === null || _this$responder2 === void 0 ? void 0 : _this$responder2.toggleCurrentAttribute(attributeName);\n });\n }\n }\n\n activateAttributeIfSupported(attributeName, value) {\n if (getAllAttributeNames().includes(attributeName)) {\n var _this$delegate6;\n\n (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : _this$delegate6.inputControllerWillPerformFormatting(attributeName);\n return this.withTargetDOMRange(function () {\n var _this$responder3;\n\n return (_this$responder3 = this.responder) === null || _this$responder3 === void 0 ? void 0 : _this$responder3.setCurrentAttribute(attributeName, value);\n });\n }\n }\n\n deleteInDirection(direction) {\n let {\n recordUndoEntry\n } = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {\n recordUndoEntry: true\n };\n\n if (recordUndoEntry) {\n var _this$delegate7;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : _this$delegate7.inputControllerWillPerformTyping();\n }\n\n const perform = () => {\n var _this$responder4;\n\n return (_this$responder4 = this.responder) === null || _this$responder4 === void 0 ? void 0 : _this$responder4.deleteInDirection(direction);\n };\n\n const domRange = this.getTargetDOMRange({\n minLength: 2\n });\n\n if (domRange) {\n return this.withTargetDOMRange(domRange, perform);\n } else {\n return perform();\n }\n } // Selection helpers\n\n\n withTargetDOMRange(domRange, fn) {\n if (typeof domRange === \"function\") {\n fn = domRange;\n domRange = this.getTargetDOMRange();\n }\n\n if (domRange) {\n var _this$responder5;\n\n return (_this$responder5 = this.responder) === null || _this$responder5 === void 0 ? void 0 : _this$responder5.withTargetDOMRange(domRange, fn.bind(this));\n } else {\n selectionChangeObserver.reset();\n return fn.call(this);\n }\n }\n\n getTargetDOMRange() {\n var _this$event$getTarget, _this$event;\n\n let {\n minLength\n } = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {\n minLength: 0\n };\n const targetRanges = (_this$event$getTarget = (_this$event = this.event).getTargetRanges) === null || _this$event$getTarget === void 0 ? void 0 : _this$event$getTarget.call(_this$event);\n\n if (targetRanges) {\n if (targetRanges.length) {\n const domRange = staticRangeToRange(targetRanges[0]);\n\n if (minLength === 0 || domRange.toString().length >= minLength) {\n return domRange;\n }\n }\n }\n }\n\n withEvent(event, fn) {\n let result;\n this.event = event;\n\n try {\n result = fn.call(this);\n } finally {\n this.event = null;\n }\n\n return result;\n }\n\n}\n\n_defineProperty(Level2InputController, \"events\", {\n keydown(event) {\n if (keyEventIsKeyboardCommand(event)) {\n var _this$delegate8;\n\n const command = keyboardCommandFromKeyEvent(event);\n\n if ((_this$delegate8 = this.delegate) !== null && _this$delegate8 !== void 0 && _this$delegate8.inputControllerDidReceiveKeyboardCommand(command)) {\n event.preventDefault();\n }\n } else {\n let name = event.key;\n\n if (event.altKey) {\n name += \"+Alt\";\n }\n\n if (event.shiftKey) {\n name += \"+Shift\";\n }\n\n const handler = this.constructor.keys[name];\n\n if (handler) {\n return this.withEvent(event, handler);\n }\n }\n },\n\n // Handle paste event to work around beforeinput.insertFromPaste browser bugs.\n // Safe to remove each condition once fixed upstream.\n paste(event) {\n var _event$clipboardData;\n\n // https://bugs.webkit.org/show_bug.cgi?id=194921\n let paste;\n const href = (_event$clipboardData = event.clipboardData) === null || _event$clipboardData === void 0 ? void 0 : _event$clipboardData.getData(\"URL\");\n\n if (pasteEventHasFilesOnly(event)) {\n event.preventDefault();\n return this.attachFiles(event.clipboardData.files); // https://bugs.chromium.org/p/chromium/issues/detail?id=934448\n } else if (pasteEventHasPlainTextOnly(event)) {\n var _this$delegate9, _this$responder6, _this$delegate10;\n\n event.preventDefault();\n paste = {\n type: \"text/plain\",\n string: event.clipboardData.getData(\"text/plain\")\n };\n (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.inputControllerWillPaste(paste);\n (_this$responder6 = this.responder) === null || _this$responder6 === void 0 ? void 0 : _this$responder6.insertString(paste.string);\n this.render();\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : _this$delegate10.inputControllerDidPaste(paste); // https://bugs.webkit.org/show_bug.cgi?id=196702\n } else if (href) {\n var _this$delegate11, _this$responder7, _this$delegate12;\n\n event.preventDefault();\n paste = {\n type: \"text/html\",\n html: this.createLinkHTML(href)\n };\n (_this$delegate11 = this.delegate) === null || _this$delegate11 === void 0 ? void 0 : _this$delegate11.inputControllerWillPaste(paste);\n (_this$responder7 = this.responder) === null || _this$responder7 === void 0 ? void 0 : _this$responder7.insertHTML(paste.html);\n this.render();\n return (_this$delegate12 = this.delegate) === null || _this$delegate12 === void 0 ? void 0 : _this$delegate12.inputControllerDidPaste(paste);\n }\n },\n\n beforeinput(event) {\n const handler = this.constructor.inputTypes[event.inputType];\n\n if (handler) {\n this.withEvent(event, handler);\n return this.scheduleRender();\n }\n },\n\n input(event) {\n return selectionChangeObserver.reset();\n },\n\n dragstart(event) {\n var _this$responder8;\n\n if ((_this$responder8 = this.responder) !== null && _this$responder8 !== void 0 && _this$responder8.selectionContainsAttachments()) {\n var _this$responder9;\n\n event.dataTransfer.setData(\"application/x-trix-dragging\", true);\n this.dragging = {\n range: (_this$responder9 = this.responder) === null || _this$responder9 === void 0 ? void 0 : _this$responder9.getSelectedRange(),\n point: pointFromEvent(event)\n };\n }\n },\n\n dragenter(event) {\n if (dragEventHasFiles(event)) {\n event.preventDefault();\n }\n },\n\n dragover(event) {\n if (this.dragging) {\n event.preventDefault();\n const point = pointFromEvent(event);\n\n if (!objectsAreEqual(point, this.dragging.point)) {\n var _this$responder10;\n\n this.dragging.point = point;\n return (_this$responder10 = this.responder) === null || _this$responder10 === void 0 ? void 0 : _this$responder10.setLocationRangeFromPointRange(point);\n }\n } else if (dragEventHasFiles(event)) {\n event.preventDefault();\n }\n },\n\n drop(event) {\n if (this.dragging) {\n var _this$delegate13, _this$responder11;\n\n event.preventDefault();\n (_this$delegate13 = this.delegate) === null || _this$delegate13 === void 0 ? void 0 : _this$delegate13.inputControllerWillMoveText();\n (_this$responder11 = this.responder) === null || _this$responder11 === void 0 ? void 0 : _this$responder11.moveTextFromRange(this.dragging.range);\n this.dragging = null;\n return this.scheduleRender();\n } else if (dragEventHasFiles(event)) {\n var _this$responder12;\n\n event.preventDefault();\n const point = pointFromEvent(event);\n (_this$responder12 = this.responder) === null || _this$responder12 === void 0 ? void 0 : _this$responder12.setLocationRangeFromPointRange(point);\n return this.attachFiles(event.dataTransfer.files);\n }\n },\n\n dragend() {\n if (this.dragging) {\n var _this$responder13;\n\n (_this$responder13 = this.responder) === null || _this$responder13 === void 0 ? void 0 : _this$responder13.setSelectedRange(this.dragging.range);\n this.dragging = null;\n }\n },\n\n compositionend(event) {\n if (this.composing) {\n this.composing = false;\n return this.scheduleRender();\n }\n }\n\n});\n\n_defineProperty(Level2InputController, \"keys\", {\n ArrowLeft() {\n var _this$responder14;\n\n if ((_this$responder14 = this.responder) !== null && _this$responder14 !== void 0 && _this$responder14.shouldManageMovingCursorInDirection(\"backward\")) {\n var _this$responder15;\n\n this.event.preventDefault();\n return (_this$responder15 = this.responder) === null || _this$responder15 === void 0 ? void 0 : _this$responder15.moveCursorInDirection(\"backward\");\n }\n },\n\n ArrowRight() {\n var _this$responder16;\n\n if ((_this$responder16 = this.responder) !== null && _this$responder16 !== void 0 && _this$responder16.shouldManageMovingCursorInDirection(\"forward\")) {\n var _this$responder17;\n\n this.event.preventDefault();\n return (_this$responder17 = this.responder) === null || _this$responder17 === void 0 ? void 0 : _this$responder17.moveCursorInDirection(\"forward\");\n }\n },\n\n Backspace() {\n var _this$responder18;\n\n if ((_this$responder18 = this.responder) !== null && _this$responder18 !== void 0 && _this$responder18.shouldManageDeletingInDirection(\"backward\")) {\n var _this$delegate14, _this$responder19;\n\n this.event.preventDefault();\n (_this$delegate14 = this.delegate) === null || _this$delegate14 === void 0 ? void 0 : _this$delegate14.inputControllerWillPerformTyping();\n (_this$responder19 = this.responder) === null || _this$responder19 === void 0 ? void 0 : _this$responder19.deleteInDirection(\"backward\");\n return this.render();\n }\n },\n\n Tab() {\n var _this$responder20;\n\n if ((_this$responder20 = this.responder) !== null && _this$responder20 !== void 0 && _this$responder20.canIncreaseNestingLevel()) {\n var _this$responder21;\n\n this.event.preventDefault();\n (_this$responder21 = this.responder) === null || _this$responder21 === void 0 ? void 0 : _this$responder21.increaseNestingLevel();\n return this.render();\n }\n },\n\n \"Tab+Shift\"() {\n var _this$responder22;\n\n if ((_this$responder22 = this.responder) !== null && _this$responder22 !== void 0 && _this$responder22.canDecreaseNestingLevel()) {\n var _this$responder23;\n\n this.event.preventDefault();\n (_this$responder23 = this.responder) === null || _this$responder23 === void 0 ? void 0 : _this$responder23.decreaseNestingLevel();\n return this.render();\n }\n }\n\n});\n\n_defineProperty(Level2InputController, \"inputTypes\", {\n deleteByComposition() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: false\n });\n },\n\n deleteByCut() {\n return this.deleteInDirection(\"backward\");\n },\n\n deleteByDrag() {\n this.event.preventDefault();\n return this.withTargetDOMRange(function () {\n var _this$responder24;\n\n this.deleteByDragRange = (_this$responder24 = this.responder) === null || _this$responder24 === void 0 ? void 0 : _this$responder24.getSelectedRange();\n });\n },\n\n deleteCompositionText() {\n return this.deleteInDirection(\"backward\", {\n recordUndoEntry: false\n });\n },\n\n deleteContent() {\n return this.deleteInDirection(\"backward\");\n },\n\n deleteContentBackward() {\n return this.deleteInDirection(\"backward\");\n },\n\n deleteContentForward() {\n return this.deleteInDirection(\"forward\");\n },\n\n deleteEntireSoftLine() {\n return this.deleteInDirection(\"forward\");\n },\n\n deleteHardLineBackward() {\n return this.deleteInDirection(\"backward\");\n },\n\n deleteHardLineForward() {\n return this.deleteInDirection(\"forward\");\n },\n\n deleteSoftLineBackward() {\n return this.deleteInDirection(\"backward\");\n },\n\n deleteSoftLineForward() {\n return this.deleteInDirection(\"forward\");\n },\n\n deleteWordBackward() {\n return this.deleteInDirection(\"backward\");\n },\n\n deleteWordForward() {\n return this.deleteInDirection(\"forward\");\n },\n\n formatBackColor() {\n return this.activateAttributeIfSupported(\"backgroundColor\", this.event.data);\n },\n\n formatBold() {\n return this.toggleAttributeIfSupported(\"bold\");\n },\n\n formatFontColor() {\n return this.activateAttributeIfSupported(\"color\", this.event.data);\n },\n\n formatFontName() {\n return this.activateAttributeIfSupported(\"font\", this.event.data);\n },\n\n formatIndent() {\n var _this$responder25;\n\n if ((_this$responder25 = this.responder) !== null && _this$responder25 !== void 0 && _this$responder25.canIncreaseNestingLevel()) {\n return this.withTargetDOMRange(function () {\n var _this$responder26;\n\n return (_this$responder26 = this.responder) === null || _this$responder26 === void 0 ? void 0 : _this$responder26.increaseNestingLevel();\n });\n }\n },\n\n formatItalic() {\n return this.toggleAttributeIfSupported(\"italic\");\n },\n\n formatJustifyCenter() {\n return this.toggleAttributeIfSupported(\"justifyCenter\");\n },\n\n formatJustifyFull() {\n return this.toggleAttributeIfSupported(\"justifyFull\");\n },\n\n formatJustifyLeft() {\n return this.toggleAttributeIfSupported(\"justifyLeft\");\n },\n\n formatJustifyRight() {\n return this.toggleAttributeIfSupported(\"justifyRight\");\n },\n\n formatOutdent() {\n var _this$responder27;\n\n if ((_this$responder27 = this.responder) !== null && _this$responder27 !== void 0 && _this$responder27.canDecreaseNestingLevel()) {\n return this.withTargetDOMRange(function () {\n var _this$responder28;\n\n return (_this$responder28 = this.responder) === null || _this$responder28 === void 0 ? void 0 : _this$responder28.decreaseNestingLevel();\n });\n }\n },\n\n formatRemove() {\n this.withTargetDOMRange(function () {\n for (const attributeName in (_this$responder29 = this.responder) === null || _this$responder29 === void 0 ? void 0 : _this$responder29.getCurrentAttributes()) {\n var _this$responder29, _this$responder30;\n\n (_this$responder30 = this.responder) === null || _this$responder30 === void 0 ? void 0 : _this$responder30.removeCurrentAttribute(attributeName);\n }\n });\n },\n\n formatSetBlockTextDirection() {\n return this.activateAttributeIfSupported(\"blockDir\", this.event.data);\n },\n\n formatSetInlineTextDirection() {\n return this.activateAttributeIfSupported(\"textDir\", this.event.data);\n },\n\n formatStrikeThrough() {\n return this.toggleAttributeIfSupported(\"strike\");\n },\n\n formatSubscript() {\n return this.toggleAttributeIfSupported(\"sub\");\n },\n\n formatSuperscript() {\n return this.toggleAttributeIfSupported(\"sup\");\n },\n\n formatUnderline() {\n return this.toggleAttributeIfSupported(\"underline\");\n },\n\n historyRedo() {\n var _this$delegate15;\n\n return (_this$delegate15 = this.delegate) === null || _this$delegate15 === void 0 ? void 0 : _this$delegate15.inputControllerWillPerformRedo();\n },\n\n historyUndo() {\n var _this$delegate16;\n\n return (_this$delegate16 = this.delegate) === null || _this$delegate16 === void 0 ? void 0 : _this$delegate16.inputControllerWillPerformUndo();\n },\n\n insertCompositionText() {\n this.composing = true;\n return this.insertString(this.event.data);\n },\n\n insertFromComposition() {\n this.composing = false;\n return this.insertString(this.event.data);\n },\n\n insertFromDrop() {\n const range = this.deleteByDragRange;\n\n if (range) {\n var _this$delegate17;\n\n this.deleteByDragRange = null;\n (_this$delegate17 = this.delegate) === null || _this$delegate17 === void 0 ? void 0 : _this$delegate17.inputControllerWillMoveText();\n return this.withTargetDOMRange(function () {\n var _this$responder31;\n\n return (_this$responder31 = this.responder) === null || _this$responder31 === void 0 ? void 0 : _this$responder31.moveTextFromRange(range);\n });\n }\n },\n\n insertFromPaste() {\n var _dataTransfer$files;\n\n const {\n dataTransfer\n } = this.event;\n const paste = {\n dataTransfer\n };\n const href = dataTransfer.getData(\"URL\");\n const html = dataTransfer.getData(\"text/html\");\n\n if (href) {\n var _this$delegate18;\n\n let string;\n this.event.preventDefault();\n paste.type = \"text/html\";\n const name = dataTransfer.getData(\"public.url-name\");\n\n if (name) {\n string = squishBreakableWhitespace(name).trim();\n } else {\n string = href;\n }\n\n paste.html = this.createLinkHTML(href, string);\n (_this$delegate18 = this.delegate) === null || _this$delegate18 === void 0 ? void 0 : _this$delegate18.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder32;\n\n return (_this$responder32 = this.responder) === null || _this$responder32 === void 0 ? void 0 : _this$responder32.insertHTML(paste.html);\n });\n\n this.afterRender = () => {\n var _this$delegate19;\n\n return (_this$delegate19 = this.delegate) === null || _this$delegate19 === void 0 ? void 0 : _this$delegate19.inputControllerDidPaste(paste);\n };\n } else if (dataTransferIsPlainText(dataTransfer)) {\n var _this$delegate20;\n\n paste.type = \"text/plain\";\n paste.string = dataTransfer.getData(\"text/plain\");\n (_this$delegate20 = this.delegate) === null || _this$delegate20 === void 0 ? void 0 : _this$delegate20.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder33;\n\n return (_this$responder33 = this.responder) === null || _this$responder33 === void 0 ? void 0 : _this$responder33.insertString(paste.string);\n });\n\n this.afterRender = () => {\n var _this$delegate21;\n\n return (_this$delegate21 = this.delegate) === null || _this$delegate21 === void 0 ? void 0 : _this$delegate21.inputControllerDidPaste(paste);\n };\n } else if (html) {\n var _this$delegate22;\n\n this.event.preventDefault();\n paste.type = \"text/html\";\n paste.html = html;\n (_this$delegate22 = this.delegate) === null || _this$delegate22 === void 0 ? void 0 : _this$delegate22.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder34;\n\n return (_this$responder34 = this.responder) === null || _this$responder34 === void 0 ? void 0 : _this$responder34.insertHTML(paste.html);\n });\n\n this.afterRender = () => {\n var _this$delegate23;\n\n return (_this$delegate23 = this.delegate) === null || _this$delegate23 === void 0 ? void 0 : _this$delegate23.inputControllerDidPaste(paste);\n };\n } else if ((_dataTransfer$files = dataTransfer.files) !== null && _dataTransfer$files !== void 0 && _dataTransfer$files.length) {\n var _this$delegate24;\n\n paste.type = \"File\";\n paste.file = dataTransfer.files[0];\n (_this$delegate24 = this.delegate) === null || _this$delegate24 === void 0 ? void 0 : _this$delegate24.inputControllerWillPaste(paste);\n this.withTargetDOMRange(function () {\n var _this$responder35;\n\n return (_this$responder35 = this.responder) === null || _this$responder35 === void 0 ? void 0 : _this$responder35.insertFile(paste.file);\n });\n\n this.afterRender = () => {\n var _this$delegate25;\n\n return (_this$delegate25 = this.delegate) === null || _this$delegate25 === void 0 ? void 0 : _this$delegate25.inputControllerDidPaste(paste);\n };\n }\n },\n\n insertFromYank() {\n return this.insertString(this.event.data);\n },\n\n insertLineBreak() {\n return this.insertString(\"\\n\");\n },\n\n insertLink() {\n return this.activateAttributeIfSupported(\"href\", this.event.data);\n },\n\n insertOrderedList() {\n return this.toggleAttributeIfSupported(\"number\");\n },\n\n insertParagraph() {\n var _this$delegate26;\n\n (_this$delegate26 = this.delegate) === null || _this$delegate26 === void 0 ? void 0 : _this$delegate26.inputControllerWillPerformTyping();\n return this.withTargetDOMRange(function () {\n var _this$responder36;\n\n return (_this$responder36 = this.responder) === null || _this$responder36 === void 0 ? void 0 : _this$responder36.insertLineBreak();\n });\n },\n\n insertReplacementText() {\n return this.insertString(this.event.dataTransfer.getData(\"text/plain\"), {\n updatePosition: false\n });\n },\n\n insertText() {\n var _this$event$dataTrans;\n\n return this.insertString(this.event.data || ((_this$event$dataTrans = this.event.dataTransfer) === null || _this$event$dataTrans === void 0 ? void 0 : _this$event$dataTrans.getData(\"text/plain\")));\n },\n\n insertTranspose() {\n return this.insertString(this.event.data);\n },\n\n insertUnorderedList() {\n return this.toggleAttributeIfSupported(\"bullet\");\n }\n\n});\n\nconst staticRangeToRange = function (staticRange) {\n const range = document.createRange();\n range.setStart(staticRange.startContainer, staticRange.startOffset);\n range.setEnd(staticRange.endContainer, staticRange.endOffset);\n return range;\n}; // Event helpers\n\n\nconst dragEventHasFiles = event => {\n var _event$dataTransfer;\n\n return Array.from(((_event$dataTransfer = event.dataTransfer) === null || _event$dataTransfer === void 0 ? void 0 : _event$dataTransfer.types) || []).includes(\"Files\");\n};\n\nconst pasteEventHasFilesOnly = function (event) {\n const clipboard = event.clipboardData;\n\n if (clipboard) {\n return clipboard.types.includes(\"Files\") && clipboard.types.length === 1 && clipboard.files.length >= 1;\n }\n};\n\nconst pasteEventHasPlainTextOnly = function (event) {\n const clipboard = event.clipboardData;\n\n if (clipboard) {\n return clipboard.types.includes(\"text/plain\") && clipboard.types.length === 1;\n }\n};\n\nconst keyboardCommandFromKeyEvent = function (event) {\n const command = [];\n\n if (event.altKey) {\n command.push(\"alt\");\n }\n\n if (event.shiftKey) {\n command.push(\"shift\");\n }\n\n command.push(event.key);\n return command;\n};\n\nconst pointFromEvent = event => ({\n x: event.clientX,\n y: event.clientY\n});\n\nconst {\n lang,\n css,\n keyNames\n} = config;\n\nconst undoable = function (fn) {\n return function () {\n const commands = fn.apply(this, arguments);\n commands.do();\n\n if (!this.undos) {\n this.undos = [];\n }\n\n this.undos.push(commands.undo);\n };\n};\n\nclass AttachmentEditorController extends BasicObject {\n constructor(attachmentPiece, _element, container) {\n let options = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};\n super(...arguments);\n\n _defineProperty(this, \"makeElementMutable\", undoable(() => {\n return {\n do: () => {\n this.element.dataset.trixMutable = true;\n },\n undo: () => delete this.element.dataset.trixMutable\n };\n }));\n\n _defineProperty(this, \"addToolbar\", undoable(() => {\n //
\n //
\n // \n // \n // \n //
\n //
\n const element = makeElement({\n tagName: \"div\",\n className: css.attachmentToolbar,\n data: {\n trixMutable: true\n },\n childNodes: makeElement({\n tagName: \"div\",\n className: \"trix-button-row\",\n childNodes: makeElement({\n tagName: \"span\",\n className: \"trix-button-group trix-button-group--actions\",\n childNodes: makeElement({\n tagName: \"button\",\n className: \"trix-button trix-button--remove\",\n textContent: lang.remove,\n attributes: {\n title: lang.remove\n },\n data: {\n trixAction: \"remove\"\n }\n })\n })\n })\n });\n\n if (this.attachment.isPreviewable()) {\n //
\n // \n // #{name}\n // #{size}\n // \n //
\n element.appendChild(makeElement({\n tagName: \"div\",\n className: css.attachmentMetadataContainer,\n childNodes: makeElement({\n tagName: \"span\",\n className: css.attachmentMetadata,\n childNodes: [makeElement({\n tagName: \"span\",\n className: css.attachmentName,\n textContent: this.attachment.getFilename(),\n attributes: {\n title: this.attachment.getFilename()\n }\n }), makeElement({\n tagName: \"span\",\n className: css.attachmentSize,\n textContent: this.attachment.getFormattedFilesize()\n })]\n })\n }));\n }\n\n handleEvent(\"click\", {\n onElement: element,\n withCallback: this.didClickToolbar\n });\n handleEvent(\"click\", {\n onElement: element,\n matchingSelector: \"[data-trix-action]\",\n withCallback: this.didClickActionButton\n });\n return {\n do: () => this.element.appendChild(element),\n undo: () => removeNode(element)\n };\n }));\n\n _defineProperty(this, \"installCaptionEditor\", undoable(() => {\n const textarea = makeElement({\n tagName: \"textarea\",\n className: css.attachmentCaptionEditor,\n attributes: {\n placeholder: lang.captionPlaceholder\n },\n data: {\n trixMutable: true\n }\n });\n textarea.value = this.attachmentPiece.getCaption();\n const textareaClone = textarea.cloneNode();\n textareaClone.classList.add(\"trix-autoresize-clone\");\n textareaClone.tabIndex = -1;\n\n const autoresize = function () {\n textareaClone.value = textarea.value;\n textarea.style.height = textareaClone.scrollHeight + \"px\";\n };\n\n handleEvent(\"input\", {\n onElement: textarea,\n withCallback: autoresize\n });\n handleEvent(\"input\", {\n onElement: textarea,\n withCallback: this.didInputCaption\n });\n handleEvent(\"keydown\", {\n onElement: textarea,\n withCallback: this.didKeyDownCaption\n });\n handleEvent(\"change\", {\n onElement: textarea,\n withCallback: this.didChangeCaption\n });\n handleEvent(\"blur\", {\n onElement: textarea,\n withCallback: this.didBlurCaption\n });\n const figcaption = this.element.querySelector(\"figcaption\");\n const editingFigcaption = figcaption.cloneNode();\n return {\n do: () => {\n figcaption.style.display = \"none\";\n editingFigcaption.appendChild(textarea);\n editingFigcaption.appendChild(textareaClone);\n editingFigcaption.classList.add(\"\".concat(css.attachmentCaption, \"--editing\"));\n figcaption.parentElement.insertBefore(editingFigcaption, figcaption);\n autoresize();\n\n if (this.options.editCaption) {\n return defer(() => textarea.focus());\n }\n },\n\n undo() {\n removeNode(editingFigcaption);\n figcaption.style.display = null;\n }\n\n };\n }));\n\n this.didClickToolbar = this.didClickToolbar.bind(this);\n this.didClickActionButton = this.didClickActionButton.bind(this);\n this.didKeyDownCaption = this.didKeyDownCaption.bind(this);\n this.didInputCaption = this.didInputCaption.bind(this);\n this.didChangeCaption = this.didChangeCaption.bind(this);\n this.didBlurCaption = this.didBlurCaption.bind(this);\n this.attachmentPiece = attachmentPiece;\n this.element = _element;\n this.container = container;\n this.options = options;\n this.attachment = this.attachmentPiece.attachment;\n\n if (tagName(this.element) === \"a\") {\n this.element = this.element.firstChild;\n }\n\n this.install();\n }\n\n install() {\n this.makeElementMutable();\n this.addToolbar();\n\n if (this.attachment.isPreviewable()) {\n this.installCaptionEditor();\n }\n }\n\n uninstall() {\n var _this$delegate;\n\n let undo = this.undos.pop();\n this.savePendingCaption();\n\n while (undo) {\n undo();\n undo = this.undos.pop();\n }\n\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : _this$delegate.didUninstallAttachmentEditor(this);\n } // Private\n\n\n savePendingCaption() {\n if (this.pendingCaption) {\n const caption = this.pendingCaption;\n this.pendingCaption = null;\n\n if (caption) {\n var _this$delegate2, _this$delegate2$attac;\n\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$attac = _this$delegate2.attachmentEditorDidRequestUpdatingAttributesForAttachment) === null || _this$delegate2$attac === void 0 ? void 0 : _this$delegate2$attac.call(_this$delegate2, {\n caption\n }, this.attachment);\n } else {\n var _this$delegate3, _this$delegate3$attac;\n\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : (_this$delegate3$attac = _this$delegate3.attachmentEditorDidRequestRemovingAttributeForAttachment) === null || _this$delegate3$attac === void 0 ? void 0 : _this$delegate3$attac.call(_this$delegate3, \"caption\", this.attachment);\n }\n }\n } // Installing and uninstalling\n\n\n // Event handlers\n didClickToolbar(event) {\n event.preventDefault();\n return event.stopPropagation();\n }\n\n didClickActionButton(event) {\n var _this$delegate4;\n\n const action = event.target.getAttribute(\"data-trix-action\");\n\n switch (action) {\n case \"remove\":\n return (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.attachmentEditorDidRequestRemovalOfAttachment(this.attachment);\n }\n }\n\n didKeyDownCaption(event) {\n if (keyNames[event.keyCode] === \"return\") {\n var _this$delegate5, _this$delegate5$attac;\n\n event.preventDefault();\n this.savePendingCaption();\n return (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : (_this$delegate5$attac = _this$delegate5.attachmentEditorDidRequestDeselectingAttachment) === null || _this$delegate5$attac === void 0 ? void 0 : _this$delegate5$attac.call(_this$delegate5, this.attachment);\n }\n }\n\n didInputCaption(event) {\n this.pendingCaption = event.target.value.replace(/\\s/g, \" \").trim();\n }\n\n didChangeCaption(event) {\n return this.savePendingCaption();\n }\n\n didBlurCaption(event) {\n return this.savePendingCaption();\n }\n\n}\n\nclass CompositionController extends BasicObject {\n constructor(element, composition) {\n super(...arguments);\n this.didFocus = this.didFocus.bind(this);\n this.didBlur = this.didBlur.bind(this);\n this.didClickAttachment = this.didClickAttachment.bind(this);\n this.element = element;\n this.composition = composition;\n this.documentView = new DocumentView(this.composition.document, {\n element: this.element\n });\n handleEvent(\"focus\", {\n onElement: this.element,\n withCallback: this.didFocus\n });\n handleEvent(\"blur\", {\n onElement: this.element,\n withCallback: this.didBlur\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: \"a[contenteditable=false]\",\n preventDefault: true\n });\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: attachmentSelector,\n withCallback: this.didClickAttachment\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: \"a\".concat(attachmentSelector),\n preventDefault: true\n });\n }\n\n didFocus(event) {\n var _this$blurPromise;\n\n const perform = () => {\n if (!this.focused) {\n var _this$delegate, _this$delegate$compos;\n\n this.focused = true;\n return (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : (_this$delegate$compos = _this$delegate.compositionControllerDidFocus) === null || _this$delegate$compos === void 0 ? void 0 : _this$delegate$compos.call(_this$delegate);\n }\n };\n\n return ((_this$blurPromise = this.blurPromise) === null || _this$blurPromise === void 0 ? void 0 : _this$blurPromise.then(perform)) || perform();\n }\n\n didBlur(event) {\n this.blurPromise = new Promise(resolve => {\n return defer(() => {\n if (!innerElementIsActive(this.element)) {\n var _this$delegate2, _this$delegate2$compo;\n\n this.focused = null;\n (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : (_this$delegate2$compo = _this$delegate2.compositionControllerDidBlur) === null || _this$delegate2$compo === void 0 ? void 0 : _this$delegate2$compo.call(_this$delegate2);\n }\n\n this.blurPromise = null;\n return resolve();\n });\n });\n }\n\n didClickAttachment(event, target) {\n var _this$delegate3, _this$delegate3$compo;\n\n const attachment = this.findAttachmentForElement(target);\n const editCaption = !!findClosestElementFromNode(event.target, {\n matchingSelector: \"figcaption\"\n });\n return (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : (_this$delegate3$compo = _this$delegate3.compositionControllerDidSelectAttachment) === null || _this$delegate3$compo === void 0 ? void 0 : _this$delegate3$compo.call(_this$delegate3, attachment, {\n editCaption\n });\n }\n\n getSerializableElement() {\n if (this.isEditingAttachment()) {\n return this.documentView.shadowElement;\n } else {\n return this.element;\n }\n }\n\n render() {\n var _this$delegate6, _this$delegate6$compo;\n\n if (this.revision !== this.composition.revision) {\n this.documentView.setDocument(this.composition.document);\n this.documentView.render();\n this.revision = this.composition.revision;\n }\n\n if (this.canSyncDocumentView() && !this.documentView.isSynced()) {\n var _this$delegate4, _this$delegate4$compo, _this$delegate5, _this$delegate5$compo;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : (_this$delegate4$compo = _this$delegate4.compositionControllerWillSyncDocumentView) === null || _this$delegate4$compo === void 0 ? void 0 : _this$delegate4$compo.call(_this$delegate4);\n this.documentView.sync();\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : (_this$delegate5$compo = _this$delegate5.compositionControllerDidSyncDocumentView) === null || _this$delegate5$compo === void 0 ? void 0 : _this$delegate5$compo.call(_this$delegate5);\n }\n\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : (_this$delegate6$compo = _this$delegate6.compositionControllerDidRender) === null || _this$delegate6$compo === void 0 ? void 0 : _this$delegate6$compo.call(_this$delegate6);\n }\n\n rerenderViewForObject(object) {\n this.invalidateViewForObject(object);\n return this.render();\n }\n\n invalidateViewForObject(object) {\n return this.documentView.invalidateViewForObject(object);\n }\n\n isViewCachingEnabled() {\n return this.documentView.isViewCachingEnabled();\n }\n\n enableViewCaching() {\n return this.documentView.enableViewCaching();\n }\n\n disableViewCaching() {\n return this.documentView.disableViewCaching();\n }\n\n refreshViewCache() {\n return this.documentView.garbageCollectCachedViews();\n } // Attachment editor management\n\n\n isEditingAttachment() {\n return !!this.attachmentEditor;\n }\n\n installAttachmentEditorForAttachment(attachment, options) {\n var _this$attachmentEdito;\n\n if (((_this$attachmentEdito = this.attachmentEditor) === null || _this$attachmentEdito === void 0 ? void 0 : _this$attachmentEdito.attachment) === attachment) return;\n const element = this.documentView.findElementForObject(attachment);\n if (!element) return;\n this.uninstallAttachmentEditor();\n const attachmentPiece = this.composition.document.getAttachmentPieceForAttachment(attachment);\n this.attachmentEditor = new AttachmentEditorController(attachmentPiece, element, this.element, options);\n this.attachmentEditor.delegate = this;\n }\n\n uninstallAttachmentEditor() {\n var _this$attachmentEdito2;\n\n return (_this$attachmentEdito2 = this.attachmentEditor) === null || _this$attachmentEdito2 === void 0 ? void 0 : _this$attachmentEdito2.uninstall();\n } // Attachment controller delegate\n\n\n didUninstallAttachmentEditor() {\n this.attachmentEditor = null;\n return this.render();\n }\n\n attachmentEditorDidRequestUpdatingAttributesForAttachment(attributes, attachment) {\n var _this$delegate7, _this$delegate7$compo;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : (_this$delegate7$compo = _this$delegate7.compositionControllerWillUpdateAttachment) === null || _this$delegate7$compo === void 0 ? void 0 : _this$delegate7$compo.call(_this$delegate7, attachment);\n return this.composition.updateAttributesForAttachment(attributes, attachment);\n }\n\n attachmentEditorDidRequestRemovingAttributeForAttachment(attribute, attachment) {\n var _this$delegate8, _this$delegate8$compo;\n\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : (_this$delegate8$compo = _this$delegate8.compositionControllerWillUpdateAttachment) === null || _this$delegate8$compo === void 0 ? void 0 : _this$delegate8$compo.call(_this$delegate8, attachment);\n return this.composition.removeAttributeForAttachment(attribute, attachment);\n }\n\n attachmentEditorDidRequestRemovalOfAttachment(attachment) {\n var _this$delegate9, _this$delegate9$compo;\n\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : (_this$delegate9$compo = _this$delegate9.compositionControllerDidRequestRemovalOfAttachment) === null || _this$delegate9$compo === void 0 ? void 0 : _this$delegate9$compo.call(_this$delegate9, attachment);\n }\n\n attachmentEditorDidRequestDeselectingAttachment(attachment) {\n var _this$delegate10, _this$delegate10$comp;\n\n return (_this$delegate10 = this.delegate) === null || _this$delegate10 === void 0 ? void 0 : (_this$delegate10$comp = _this$delegate10.compositionControllerDidRequestDeselectingAttachment) === null || _this$delegate10$comp === void 0 ? void 0 : _this$delegate10$comp.call(_this$delegate10, attachment);\n } // Private\n\n\n canSyncDocumentView() {\n return !this.isEditingAttachment();\n }\n\n findAttachmentForElement(element) {\n return this.composition.document.getAttachmentById(parseInt(element.dataset.trixId, 10));\n }\n\n}\n\nconst attributeButtonSelector = \"[data-trix-attribute]\";\nconst actionButtonSelector = \"[data-trix-action]\";\nconst toolbarButtonSelector = \"\".concat(attributeButtonSelector, \", \").concat(actionButtonSelector);\nconst dialogSelector = \"[data-trix-dialog]\";\nconst activeDialogSelector = \"\".concat(dialogSelector, \"[data-trix-active]\");\nconst dialogButtonSelector = \"\".concat(dialogSelector, \" [data-trix-method]\");\nconst dialogInputSelector = \"\".concat(dialogSelector, \" [data-trix-input]\");\n\nconst getInputForDialog = (element, attributeName) => {\n if (!attributeName) {\n attributeName = getAttributeName(element);\n }\n\n return element.querySelector(\"[data-trix-input][name='\".concat(attributeName, \"']\"));\n};\n\nconst getActionName = element => element.getAttribute(\"data-trix-action\");\n\nconst getAttributeName = element => {\n return element.getAttribute(\"data-trix-attribute\") || element.getAttribute(\"data-trix-dialog-attribute\");\n};\n\nconst getDialogName = element => element.getAttribute(\"data-trix-dialog\");\n\nclass ToolbarController extends BasicObject {\n constructor(element) {\n super(element);\n this.didClickActionButton = this.didClickActionButton.bind(this);\n this.didClickAttributeButton = this.didClickAttributeButton.bind(this);\n this.didClickDialogButton = this.didClickDialogButton.bind(this);\n this.didKeyDownDialogInput = this.didKeyDownDialogInput.bind(this);\n this.element = element;\n this.attributes = {};\n this.actions = {};\n this.resetDialogInputs();\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: actionButtonSelector,\n withCallback: this.didClickActionButton\n });\n handleEvent(\"mousedown\", {\n onElement: this.element,\n matchingSelector: attributeButtonSelector,\n withCallback: this.didClickAttributeButton\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: toolbarButtonSelector,\n preventDefault: true\n });\n handleEvent(\"click\", {\n onElement: this.element,\n matchingSelector: dialogButtonSelector,\n withCallback: this.didClickDialogButton\n });\n handleEvent(\"keydown\", {\n onElement: this.element,\n matchingSelector: dialogInputSelector,\n withCallback: this.didKeyDownDialogInput\n });\n } // Event handlers\n\n\n didClickActionButton(event, element) {\n var _this$delegate;\n\n (_this$delegate = this.delegate) === null || _this$delegate === void 0 ? void 0 : _this$delegate.toolbarDidClickButton();\n event.preventDefault();\n const actionName = getActionName(element);\n\n if (this.getDialog(actionName)) {\n return this.toggleDialog(actionName);\n } else {\n var _this$delegate2;\n\n return (_this$delegate2 = this.delegate) === null || _this$delegate2 === void 0 ? void 0 : _this$delegate2.toolbarDidInvokeAction(actionName);\n }\n }\n\n didClickAttributeButton(event, element) {\n var _this$delegate3;\n\n (_this$delegate3 = this.delegate) === null || _this$delegate3 === void 0 ? void 0 : _this$delegate3.toolbarDidClickButton();\n event.preventDefault();\n const attributeName = getAttributeName(element);\n\n if (this.getDialog(attributeName)) {\n this.toggleDialog(attributeName);\n } else {\n var _this$delegate4;\n\n (_this$delegate4 = this.delegate) === null || _this$delegate4 === void 0 ? void 0 : _this$delegate4.toolbarDidToggleAttribute(attributeName);\n }\n\n return this.refreshAttributeButtons();\n }\n\n didClickDialogButton(event, element) {\n const dialogElement = findClosestElementFromNode(element, {\n matchingSelector: dialogSelector\n });\n const method = element.getAttribute(\"data-trix-method\");\n return this[method].call(this, dialogElement);\n }\n\n didKeyDownDialogInput(event, element) {\n if (event.keyCode === 13) {\n // Enter key\n event.preventDefault();\n const attribute = element.getAttribute(\"name\");\n const dialog = this.getDialog(attribute);\n this.setAttribute(dialog);\n }\n\n if (event.keyCode === 27) {\n // Escape key\n event.preventDefault();\n return this.hideDialog();\n }\n } // Action buttons\n\n\n updateActions(actions) {\n this.actions = actions;\n return this.refreshActionButtons();\n }\n\n refreshActionButtons() {\n return this.eachActionButton((element, actionName) => {\n element.disabled = this.actions[actionName] === false;\n });\n }\n\n eachActionButton(callback) {\n return Array.from(this.element.querySelectorAll(actionButtonSelector)).map(element => callback(element, getActionName(element)));\n } // Attribute buttons\n\n\n updateAttributes(attributes) {\n this.attributes = attributes;\n return this.refreshAttributeButtons();\n }\n\n refreshAttributeButtons() {\n return this.eachAttributeButton((element, attributeName) => {\n element.disabled = this.attributes[attributeName] === false;\n\n if (this.attributes[attributeName] || this.dialogIsVisible(attributeName)) {\n element.setAttribute(\"data-trix-active\", \"\");\n return element.classList.add(\"trix-active\");\n } else {\n element.removeAttribute(\"data-trix-active\");\n return element.classList.remove(\"trix-active\");\n }\n });\n }\n\n eachAttributeButton(callback) {\n return Array.from(this.element.querySelectorAll(attributeButtonSelector)).map(element => callback(element, getAttributeName(element)));\n }\n\n applyKeyboardCommand(keys) {\n const keyString = JSON.stringify(keys.sort());\n\n for (const button of Array.from(this.element.querySelectorAll(\"[data-trix-key]\"))) {\n const buttonKeys = button.getAttribute(\"data-trix-key\").split(\"+\");\n const buttonKeyString = JSON.stringify(buttonKeys.sort());\n\n if (buttonKeyString === keyString) {\n triggerEvent(\"mousedown\", {\n onElement: button\n });\n return true;\n }\n }\n\n return false;\n } // Dialogs\n\n\n dialogIsVisible(dialogName) {\n const element = this.getDialog(dialogName);\n\n if (element) {\n return element.hasAttribute(\"data-trix-active\");\n }\n }\n\n toggleDialog(dialogName) {\n if (this.dialogIsVisible(dialogName)) {\n return this.hideDialog();\n } else {\n return this.showDialog(dialogName);\n }\n }\n\n showDialog(dialogName) {\n var _this$delegate5, _this$delegate6;\n\n this.hideDialog();\n (_this$delegate5 = this.delegate) === null || _this$delegate5 === void 0 ? void 0 : _this$delegate5.toolbarWillShowDialog();\n const element = this.getDialog(dialogName);\n element.setAttribute(\"data-trix-active\", \"\");\n element.classList.add(\"trix-active\");\n Array.from(element.querySelectorAll(\"input[disabled]\")).forEach(disabledInput => {\n disabledInput.removeAttribute(\"disabled\");\n });\n const attributeName = getAttributeName(element);\n\n if (attributeName) {\n const input = getInputForDialog(element, dialogName);\n\n if (input) {\n input.value = this.attributes[attributeName] || \"\";\n input.select();\n }\n }\n\n return (_this$delegate6 = this.delegate) === null || _this$delegate6 === void 0 ? void 0 : _this$delegate6.toolbarDidShowDialog(dialogName);\n }\n\n setAttribute(dialogElement) {\n const attributeName = getAttributeName(dialogElement);\n const input = getInputForDialog(dialogElement, attributeName);\n\n if (input.willValidate && !input.checkValidity()) {\n input.setAttribute(\"data-trix-validate\", \"\");\n input.classList.add(\"trix-validate\");\n return input.focus();\n } else {\n var _this$delegate7;\n\n (_this$delegate7 = this.delegate) === null || _this$delegate7 === void 0 ? void 0 : _this$delegate7.toolbarDidUpdateAttribute(attributeName, input.value);\n return this.hideDialog();\n }\n }\n\n removeAttribute(dialogElement) {\n var _this$delegate8;\n\n const attributeName = getAttributeName(dialogElement);\n (_this$delegate8 = this.delegate) === null || _this$delegate8 === void 0 ? void 0 : _this$delegate8.toolbarDidRemoveAttribute(attributeName);\n return this.hideDialog();\n }\n\n hideDialog() {\n const element = this.element.querySelector(activeDialogSelector);\n\n if (element) {\n var _this$delegate9;\n\n element.removeAttribute(\"data-trix-active\");\n element.classList.remove(\"trix-active\");\n this.resetDialogInputs();\n return (_this$delegate9 = this.delegate) === null || _this$delegate9 === void 0 ? void 0 : _this$delegate9.toolbarDidHideDialog(getDialogName(element));\n }\n }\n\n resetDialogInputs() {\n Array.from(this.element.querySelectorAll(dialogInputSelector)).forEach(input => {\n input.setAttribute(\"disabled\", \"disabled\");\n input.removeAttribute(\"data-trix-validate\");\n input.classList.remove(\"trix-validate\");\n });\n }\n\n getDialog(dialogName) {\n return this.element.querySelector(\"[data-trix-dialog=\".concat(dialogName, \"]\"));\n }\n\n}\n\nconst snapshotsAreEqual = (a, b) => rangesAreEqual(a.selectedRange, b.selectedRange) && a.document.isEqualTo(b.document);\n\nclass EditorController extends Controller {\n constructor(_ref) {\n let {\n editorElement,\n document,\n html\n } = _ref;\n super(...arguments);\n this.editorElement = editorElement;\n this.selectionManager = new SelectionManager(this.editorElement);\n this.selectionManager.delegate = this;\n this.composition = new Composition();\n this.composition.delegate = this;\n this.attachmentManager = new AttachmentManager(this.composition.getAttachments());\n this.attachmentManager.delegate = this;\n this.inputController = config.input.getLevel() === 2 ? new Level2InputController(this.editorElement) : new Level0InputController(this.editorElement);\n this.inputController.delegate = this;\n this.inputController.responder = this.composition;\n this.compositionController = new CompositionController(this.editorElement, this.composition);\n this.compositionController.delegate = this;\n this.toolbarController = new ToolbarController(this.editorElement.toolbarElement);\n this.toolbarController.delegate = this;\n this.editor = new Editor(this.composition, this.selectionManager, this.editorElement);\n\n if (document) {\n this.editor.loadDocument(document);\n } else {\n this.editor.loadHTML(html);\n }\n }\n\n registerSelectionManager() {\n return selectionChangeObserver.registerSelectionManager(this.selectionManager);\n }\n\n unregisterSelectionManager() {\n return selectionChangeObserver.unregisterSelectionManager(this.selectionManager);\n }\n\n render() {\n return this.compositionController.render();\n }\n\n reparse() {\n return this.composition.replaceHTML(this.editorElement.innerHTML);\n } // Composition delegate\n\n\n compositionDidChangeDocument(document) {\n this.notifyEditorElement(\"document-change\");\n\n if (!this.handlingInput) {\n return this.render();\n }\n }\n\n compositionDidChangeCurrentAttributes(currentAttributes) {\n this.currentAttributes = currentAttributes;\n this.toolbarController.updateAttributes(this.currentAttributes);\n this.updateCurrentActions();\n return this.notifyEditorElement(\"attributes-change\", {\n attributes: this.currentAttributes\n });\n }\n\n compositionDidPerformInsertionAtRange(range) {\n if (this.pasting) {\n this.pastedRange = range;\n }\n }\n\n compositionShouldAcceptFile(file) {\n return this.notifyEditorElement(\"file-accept\", {\n file\n });\n }\n\n compositionDidAddAttachment(attachment) {\n const managedAttachment = this.attachmentManager.manageAttachment(attachment);\n return this.notifyEditorElement(\"attachment-add\", {\n attachment: managedAttachment\n });\n }\n\n compositionDidEditAttachment(attachment) {\n this.compositionController.rerenderViewForObject(attachment);\n const managedAttachment = this.attachmentManager.manageAttachment(attachment);\n this.notifyEditorElement(\"attachment-edit\", {\n attachment: managedAttachment\n });\n return this.notifyEditorElement(\"change\");\n }\n\n compositionDidChangeAttachmentPreviewURL(attachment) {\n this.compositionController.invalidateViewForObject(attachment);\n return this.notifyEditorElement(\"change\");\n }\n\n compositionDidRemoveAttachment(attachment) {\n const managedAttachment = this.attachmentManager.unmanageAttachment(attachment);\n return this.notifyEditorElement(\"attachment-remove\", {\n attachment: managedAttachment\n });\n }\n\n compositionDidStartEditingAttachment(attachment, options) {\n this.attachmentLocationRange = this.composition.document.getLocationRangeOfAttachment(attachment);\n this.compositionController.installAttachmentEditorForAttachment(attachment, options);\n return this.selectionManager.setLocationRange(this.attachmentLocationRange);\n }\n\n compositionDidStopEditingAttachment(attachment) {\n this.compositionController.uninstallAttachmentEditor();\n this.attachmentLocationRange = null;\n }\n\n compositionDidRequestChangingSelectionToLocationRange(locationRange) {\n if (this.loadingSnapshot && !this.isFocused()) return;\n this.requestedLocationRange = locationRange;\n this.compositionRevisionWhenLocationRangeRequested = this.composition.revision;\n\n if (!this.handlingInput) {\n return this.render();\n }\n }\n\n compositionWillLoadSnapshot() {\n this.loadingSnapshot = true;\n }\n\n compositionDidLoadSnapshot() {\n this.compositionController.refreshViewCache();\n this.render();\n this.loadingSnapshot = false;\n }\n\n getSelectionManager() {\n return this.selectionManager;\n } // Attachment manager delegate\n\n\n attachmentManagerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment);\n } // Document controller delegate\n\n\n compositionControllerWillSyncDocumentView() {\n this.inputController.editorWillSyncDocumentView();\n this.selectionManager.lock();\n return this.selectionManager.clearSelection();\n }\n\n compositionControllerDidSyncDocumentView() {\n this.inputController.editorDidSyncDocumentView();\n this.selectionManager.unlock();\n this.updateCurrentActions();\n return this.notifyEditorElement(\"sync\");\n }\n\n compositionControllerDidRender() {\n if (this.requestedLocationRange) {\n if (this.compositionRevisionWhenLocationRangeRequested === this.composition.revision) {\n this.selectionManager.setLocationRange(this.requestedLocationRange);\n }\n\n this.requestedLocationRange = null;\n this.compositionRevisionWhenLocationRangeRequested = null;\n }\n\n if (this.renderedCompositionRevision !== this.composition.revision) {\n this.runEditorFilters();\n this.composition.updateCurrentAttributes();\n this.notifyEditorElement(\"render\");\n }\n\n this.renderedCompositionRevision = this.composition.revision;\n }\n\n compositionControllerDidFocus() {\n if (this.isFocusedInvisibly()) {\n this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n\n this.toolbarController.hideDialog();\n return this.notifyEditorElement(\"focus\");\n }\n\n compositionControllerDidBlur() {\n return this.notifyEditorElement(\"blur\");\n }\n\n compositionControllerDidSelectAttachment(attachment, options) {\n this.toolbarController.hideDialog();\n return this.composition.editAttachment(attachment, options);\n }\n\n compositionControllerDidRequestDeselectingAttachment(attachment) {\n const locationRange = this.attachmentLocationRange || this.composition.document.getLocationRangeOfAttachment(attachment);\n return this.selectionManager.setLocationRange(locationRange[1]);\n }\n\n compositionControllerWillUpdateAttachment(attachment) {\n return this.editor.recordUndoEntry(\"Edit Attachment\", {\n context: attachment.id,\n consolidatable: true\n });\n }\n\n compositionControllerDidRequestRemovalOfAttachment(attachment) {\n return this.removeAttachment(attachment);\n } // Input controller delegate\n\n\n inputControllerWillHandleInput() {\n this.handlingInput = true;\n this.requestedRender = false;\n }\n\n inputControllerDidRequestRender() {\n this.requestedRender = true;\n }\n\n inputControllerDidHandleInput() {\n this.handlingInput = false;\n\n if (this.requestedRender) {\n this.requestedRender = false;\n return this.render();\n }\n }\n\n inputControllerDidAllowUnhandledInput() {\n return this.notifyEditorElement(\"change\");\n }\n\n inputControllerDidRequestReparse() {\n return this.reparse();\n }\n\n inputControllerWillPerformTyping() {\n return this.recordTypingUndoEntry();\n }\n\n inputControllerWillPerformFormatting(attributeName) {\n return this.recordFormattingUndoEntry(attributeName);\n }\n\n inputControllerWillCutText() {\n return this.editor.recordUndoEntry(\"Cut\");\n }\n\n inputControllerWillPaste(paste) {\n this.editor.recordUndoEntry(\"Paste\");\n this.pasting = true;\n return this.notifyEditorElement(\"before-paste\", {\n paste\n });\n }\n\n inputControllerDidPaste(paste) {\n paste.range = this.pastedRange;\n this.pastedRange = null;\n this.pasting = null;\n return this.notifyEditorElement(\"paste\", {\n paste\n });\n }\n\n inputControllerWillMoveText() {\n return this.editor.recordUndoEntry(\"Move\");\n }\n\n inputControllerWillAttachFiles() {\n return this.editor.recordUndoEntry(\"Drop Files\");\n }\n\n inputControllerWillPerformUndo() {\n return this.editor.undo();\n }\n\n inputControllerWillPerformRedo() {\n return this.editor.redo();\n }\n\n inputControllerDidReceiveKeyboardCommand(keys) {\n return this.toolbarController.applyKeyboardCommand(keys);\n }\n\n inputControllerDidStartDrag() {\n this.locationRangeBeforeDrag = this.selectionManager.getLocationRange();\n }\n\n inputControllerDidReceiveDragOverPoint(point) {\n return this.selectionManager.setLocationRangeFromPointRange(point);\n }\n\n inputControllerDidCancelDrag() {\n this.selectionManager.setLocationRange(this.locationRangeBeforeDrag);\n this.locationRangeBeforeDrag = null;\n } // Selection manager delegate\n\n\n locationRangeDidChange(locationRange) {\n this.composition.updateCurrentAttributes();\n this.updateCurrentActions();\n\n if (this.attachmentLocationRange && !rangesAreEqual(this.attachmentLocationRange, locationRange)) {\n this.composition.stopEditingAttachment();\n }\n\n return this.notifyEditorElement(\"selection-change\");\n } // Toolbar controller delegate\n\n\n toolbarDidClickButton() {\n if (!this.getLocationRange()) {\n return this.setLocationRange({\n index: 0,\n offset: 0\n });\n }\n }\n\n toolbarDidInvokeAction(actionName) {\n return this.invokeAction(actionName);\n }\n\n toolbarDidToggleAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.toggleCurrentAttribute(attributeName);\n this.render();\n\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n\n toolbarDidUpdateAttribute(attributeName, value) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.setCurrentAttribute(attributeName, value);\n this.render();\n\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n\n toolbarDidRemoveAttribute(attributeName) {\n this.recordFormattingUndoEntry(attributeName);\n this.composition.removeCurrentAttribute(attributeName);\n this.render();\n\n if (!this.selectionFrozen) {\n return this.editorElement.focus();\n }\n }\n\n toolbarWillShowDialog(dialogElement) {\n this.composition.expandSelectionForEditing();\n return this.freezeSelection();\n }\n\n toolbarDidShowDialog(dialogName) {\n return this.notifyEditorElement(\"toolbar-dialog-show\", {\n dialogName\n });\n }\n\n toolbarDidHideDialog(dialogName) {\n this.thawSelection();\n this.editorElement.focus();\n return this.notifyEditorElement(\"toolbar-dialog-hide\", {\n dialogName\n });\n } // Selection\n\n\n freezeSelection() {\n if (!this.selectionFrozen) {\n this.selectionManager.lock();\n this.composition.freezeSelection();\n this.selectionFrozen = true;\n return this.render();\n }\n }\n\n thawSelection() {\n if (this.selectionFrozen) {\n this.composition.thawSelection();\n this.selectionManager.unlock();\n this.selectionFrozen = false;\n return this.render();\n }\n }\n\n canInvokeAction(actionName) {\n if (this.actionIsExternal(actionName)) {\n return true;\n } else {\n var _this$actions$actionN, _this$actions$actionN2;\n\n return !!((_this$actions$actionN = this.actions[actionName]) !== null && _this$actions$actionN !== void 0 && (_this$actions$actionN2 = _this$actions$actionN.test) !== null && _this$actions$actionN2 !== void 0 && _this$actions$actionN2.call(this));\n }\n }\n\n invokeAction(actionName) {\n if (this.actionIsExternal(actionName)) {\n return this.notifyEditorElement(\"action-invoke\", {\n actionName\n });\n } else {\n var _this$actions$actionN3, _this$actions$actionN4;\n\n return (_this$actions$actionN3 = this.actions[actionName]) === null || _this$actions$actionN3 === void 0 ? void 0 : (_this$actions$actionN4 = _this$actions$actionN3.perform) === null || _this$actions$actionN4 === void 0 ? void 0 : _this$actions$actionN4.call(this);\n }\n }\n\n actionIsExternal(actionName) {\n return /^x-./.test(actionName);\n }\n\n getCurrentActions() {\n const result = {};\n\n for (const actionName in this.actions) {\n result[actionName] = this.canInvokeAction(actionName);\n }\n\n return result;\n }\n\n updateCurrentActions() {\n const currentActions = this.getCurrentActions();\n\n if (!objectsAreEqual(currentActions, this.currentActions)) {\n this.currentActions = currentActions;\n this.toolbarController.updateActions(this.currentActions);\n return this.notifyEditorElement(\"actions-change\", {\n actions: this.currentActions\n });\n }\n } // Editor filters\n\n\n runEditorFilters() {\n let snapshot = this.composition.getSnapshot();\n Array.from(this.editor.filters).forEach(filter => {\n const {\n document,\n selectedRange\n } = snapshot;\n snapshot = filter.call(this.editor, snapshot) || {};\n\n if (!snapshot.document) {\n snapshot.document = document;\n }\n\n if (!snapshot.selectedRange) {\n snapshot.selectedRange = selectedRange;\n }\n });\n\n if (!snapshotsAreEqual(snapshot, this.composition.getSnapshot())) {\n return this.composition.loadSnapshot(snapshot);\n }\n } // Private\n\n\n updateInputElement() {\n const element = this.compositionController.getSerializableElement();\n const value = serializeToContentType(element, \"text/html\");\n return this.editorElement.setInputElementValue(value);\n }\n\n notifyEditorElement(message, data) {\n switch (message) {\n case \"document-change\":\n this.documentChangedSinceLastRender = true;\n break;\n\n case \"render\":\n if (this.documentChangedSinceLastRender) {\n this.documentChangedSinceLastRender = false;\n this.notifyEditorElement(\"change\");\n }\n\n break;\n\n case \"change\":\n case \"attachment-add\":\n case \"attachment-edit\":\n case \"attachment-remove\":\n this.updateInputElement();\n break;\n }\n\n return this.editorElement.notify(message, data);\n }\n\n removeAttachment(attachment) {\n this.editor.recordUndoEntry(\"Delete Attachment\");\n this.composition.removeAttachment(attachment);\n return this.render();\n }\n\n recordFormattingUndoEntry(attributeName) {\n const blockConfig = getBlockConfig(attributeName);\n const locationRange = this.selectionManager.getLocationRange();\n\n if (blockConfig || !rangeIsCollapsed(locationRange)) {\n return this.editor.recordUndoEntry(\"Formatting\", {\n context: this.getUndoContext(),\n consolidatable: true\n });\n }\n }\n\n recordTypingUndoEntry() {\n return this.editor.recordUndoEntry(\"Typing\", {\n context: this.getUndoContext(this.currentAttributes),\n consolidatable: true\n });\n }\n\n getUndoContext() {\n for (var _len = arguments.length, context = new Array(_len), _key = 0; _key < _len; _key++) {\n context[_key] = arguments[_key];\n }\n\n return [this.getLocationContext(), this.getTimeContext(), ...Array.from(context)];\n }\n\n getLocationContext() {\n const locationRange = this.selectionManager.getLocationRange();\n\n if (rangeIsCollapsed(locationRange)) {\n return locationRange[0].index;\n } else {\n return locationRange;\n }\n }\n\n getTimeContext() {\n if (config.undoInterval > 0) {\n return Math.floor(new Date().getTime() / config.undoInterval);\n } else {\n return 0;\n }\n }\n\n isFocused() {\n var _this$editorElement$o;\n\n return this.editorElement === ((_this$editorElement$o = this.editorElement.ownerDocument) === null || _this$editorElement$o === void 0 ? void 0 : _this$editorElement$o.activeElement);\n } // Detect \"Cursor disappears sporadically\" Firefox bug.\n // - https://bugzilla.mozilla.org/show_bug.cgi?id=226301\n\n\n isFocusedInvisibly() {\n return this.isFocused() && !this.getLocationRange();\n }\n\n get actions() {\n return this.constructor.actions;\n }\n\n}\n\n_defineProperty(EditorController, \"actions\", {\n undo: {\n test() {\n return this.editor.canUndo();\n },\n\n perform() {\n return this.editor.undo();\n }\n\n },\n redo: {\n test() {\n return this.editor.canRedo();\n },\n\n perform() {\n return this.editor.redo();\n }\n\n },\n link: {\n test() {\n return this.editor.canActivateAttribute(\"href\");\n }\n\n },\n increaseNestingLevel: {\n test() {\n return this.editor.canIncreaseNestingLevel();\n },\n\n perform() {\n return this.editor.increaseNestingLevel() && this.render();\n }\n\n },\n decreaseNestingLevel: {\n test() {\n return this.editor.canDecreaseNestingLevel();\n },\n\n perform() {\n return this.editor.decreaseNestingLevel() && this.render();\n }\n\n },\n attachFiles: {\n test() {\n return true;\n },\n\n perform() {\n return config.input.pickFiles(this.editor.insertFiles);\n }\n\n }\n});\n\nEditorController.proxyMethod(\"getSelectionManager().setLocationRange\");\nEditorController.proxyMethod(\"getSelectionManager().getLocationRange\");\n\ninstallDefaultCSSForTagName(\"trix-toolbar\", \"%t {\\n display: block;\\n}\\n\\n%t {\\n white-space: nowrap;\\n}\\n\\n%t [data-trix-dialog] {\\n display: none;\\n}\\n\\n%t [data-trix-dialog][data-trix-active] {\\n display: block;\\n}\\n\\n%t [data-trix-dialog] [data-trix-validate]:invalid {\\n background-color: #ffdddd;\\n}\");\nclass TrixToolbarElement extends HTMLElement {\n // Element lifecycle\n connectedCallback() {\n if (this.innerHTML === \"\") {\n this.innerHTML = config.toolbar.getDefaultHTML();\n }\n }\n\n}\nwindow.customElements.define(\"trix-toolbar\", TrixToolbarElement);\n\nlet id = 0; // Contenteditable support helpers\n\nconst autofocus = function (element) {\n if (!document.querySelector(\":focus\")) {\n if (element.hasAttribute(\"autofocus\") && document.querySelector(\"[autofocus]\") === element) {\n return element.focus();\n }\n }\n};\n\nconst makeEditable = function (element) {\n if (element.hasAttribute(\"contenteditable\")) {\n return;\n }\n\n element.setAttribute(\"contenteditable\", \"\");\n return handleEventOnce(\"focus\", {\n onElement: element,\n\n withCallback() {\n return configureContentEditable(element);\n }\n\n });\n};\n\nconst configureContentEditable = function (element) {\n disableObjectResizing(element);\n return setDefaultParagraphSeparator(element);\n};\n\nconst disableObjectResizing = function (element) {\n var _document$queryComman, _document;\n\n if ((_document$queryComman = (_document = document).queryCommandSupported) !== null && _document$queryComman !== void 0 && _document$queryComman.call(_document, \"enableObjectResizing\")) {\n document.execCommand(\"enableObjectResizing\", false, false);\n return handleEvent(\"mscontrolselect\", {\n onElement: element,\n preventDefault: true\n });\n }\n};\n\nconst setDefaultParagraphSeparator = function (element) {\n var _document$queryComman2, _document2;\n\n if ((_document$queryComman2 = (_document2 = document).queryCommandSupported) !== null && _document$queryComman2 !== void 0 && _document$queryComman2.call(_document2, \"DefaultParagraphSeparator\")) {\n const {\n tagName\n } = config.blockAttributes.default;\n\n if ([\"div\", \"p\"].includes(tagName)) {\n return document.execCommand(\"DefaultParagraphSeparator\", false, tagName);\n }\n }\n}; // Accessibility helpers\n\n\nconst addAccessibilityRole = function (element) {\n if (element.hasAttribute(\"role\")) {\n return;\n }\n\n return element.setAttribute(\"role\", \"textbox\");\n};\n\nconst ensureAriaLabel = function (element) {\n if (element.hasAttribute(\"aria-label\") || element.hasAttribute(\"aria-labelledby\")) {\n return;\n }\n\n const update = function () {\n const texts = Array.from(element.labels).map(label => {\n if (!label.contains(element)) return label.textContent;\n }).filter(text => text);\n const text = texts.join(\" \");\n\n if (text) {\n return element.setAttribute(\"aria-label\", text);\n } else {\n return element.removeAttribute(\"aria-label\");\n }\n };\n\n update();\n return handleEvent(\"focus\", {\n onElement: element,\n withCallback: update\n });\n}; // Style\n\n\nconst cursorTargetStyles = function () {\n if (config.browser.forcesObjectResizing) {\n return {\n display: \"inline\",\n width: \"auto\"\n };\n } else {\n return {\n display: \"inline-block\",\n width: \"1px\"\n };\n }\n}();\n\ninstallDefaultCSSForTagName(\"trix-editor\", \"%t {\\n display: block;\\n}\\n\\n%t:empty:not(:focus)::before {\\n content: attr(placeholder);\\n color: graytext;\\n cursor: text;\\n pointer-events: none;\\n white-space: pre-line;\\n}\\n\\n%t a[contenteditable=false] {\\n cursor: text;\\n}\\n\\n%t img {\\n max-width: 100%;\\n height: auto;\\n}\\n\\n%t \".concat(attachmentSelector, \" figcaption textarea {\\n resize: none;\\n}\\n\\n%t \").concat(attachmentSelector, \" figcaption textarea.trix-autoresize-clone {\\n position: absolute;\\n left: -9999px;\\n max-height: 0px;\\n}\\n\\n%t \").concat(attachmentSelector, \" figcaption[data-trix-placeholder]:empty::before {\\n content: attr(data-trix-placeholder);\\n color: graytext;\\n}\\n\\n%t [data-trix-cursor-target] {\\n display: \").concat(cursorTargetStyles.display, \" !important;\\n width: \").concat(cursorTargetStyles.width, \" !important;\\n padding: 0 !important;\\n margin: 0 !important;\\n border: none !important;\\n}\\n\\n%t [data-trix-cursor-target=left] {\\n vertical-align: top !important;\\n margin-left: -1px !important;\\n}\\n\\n%t [data-trix-cursor-target=right] {\\n vertical-align: bottom !important;\\n margin-right: -1px !important;\\n}\"));\nclass TrixEditorElement extends HTMLElement {\n // Properties\n get trixId() {\n if (this.hasAttribute(\"trix-id\")) {\n return this.getAttribute(\"trix-id\");\n } else {\n this.setAttribute(\"trix-id\", ++id);\n return this.trixId;\n }\n }\n\n get labels() {\n const labels = [];\n\n if (this.id && this.ownerDocument) {\n labels.push(...Array.from(this.ownerDocument.querySelectorAll(\"label[for='\".concat(this.id, \"']\")) || []));\n }\n\n const label = findClosestElementFromNode(this, {\n matchingSelector: \"label\"\n });\n\n if (label) {\n if ([this, null].includes(label.control)) {\n labels.push(label);\n }\n }\n\n return labels;\n }\n\n get toolbarElement() {\n if (this.hasAttribute(\"toolbar\")) {\n var _this$ownerDocument;\n\n return (_this$ownerDocument = this.ownerDocument) === null || _this$ownerDocument === void 0 ? void 0 : _this$ownerDocument.getElementById(this.getAttribute(\"toolbar\"));\n } else if (this.parentNode) {\n const toolbarId = \"trix-toolbar-\".concat(this.trixId);\n this.setAttribute(\"toolbar\", toolbarId);\n const element = makeElement(\"trix-toolbar\", {\n id: toolbarId\n });\n this.parentNode.insertBefore(element, this);\n return element;\n } else {\n return undefined;\n }\n }\n\n get form() {\n var _this$inputElement;\n\n return (_this$inputElement = this.inputElement) === null || _this$inputElement === void 0 ? void 0 : _this$inputElement.form;\n }\n\n get inputElement() {\n if (this.hasAttribute(\"input\")) {\n var _this$ownerDocument2;\n\n return (_this$ownerDocument2 = this.ownerDocument) === null || _this$ownerDocument2 === void 0 ? void 0 : _this$ownerDocument2.getElementById(this.getAttribute(\"input\"));\n } else if (this.parentNode) {\n const inputId = \"trix-input-\".concat(this.trixId);\n this.setAttribute(\"input\", inputId);\n const element = makeElement(\"input\", {\n type: \"hidden\",\n id: inputId\n });\n this.parentNode.insertBefore(element, this.nextElementSibling);\n return element;\n } else {\n return undefined;\n }\n }\n\n get editor() {\n var _this$editorControlle;\n\n return (_this$editorControlle = this.editorController) === null || _this$editorControlle === void 0 ? void 0 : _this$editorControlle.editor;\n }\n\n get name() {\n var _this$inputElement2;\n\n return (_this$inputElement2 = this.inputElement) === null || _this$inputElement2 === void 0 ? void 0 : _this$inputElement2.name;\n }\n\n get value() {\n var _this$inputElement3;\n\n return (_this$inputElement3 = this.inputElement) === null || _this$inputElement3 === void 0 ? void 0 : _this$inputElement3.value;\n }\n\n set value(defaultValue) {\n var _this$editor;\n\n this.defaultValue = defaultValue;\n (_this$editor = this.editor) === null || _this$editor === void 0 ? void 0 : _this$editor.loadHTML(this.defaultValue);\n } // Controller delegate methods\n\n\n notify(message, data) {\n if (this.editorController) {\n return triggerEvent(\"trix-\".concat(message), {\n onElement: this,\n attributes: data\n });\n }\n }\n\n setInputElementValue(value) {\n if (this.inputElement) {\n this.inputElement.value = value;\n }\n } // Element lifecycle\n\n\n connectedCallback() {\n if (!this.hasAttribute(\"data-trix-internal\")) {\n makeEditable(this);\n addAccessibilityRole(this);\n ensureAriaLabel(this);\n\n if (!this.editorController) {\n triggerEvent(\"trix-before-initialize\", {\n onElement: this\n });\n this.editorController = new EditorController({\n editorElement: this,\n html: this.defaultValue = this.value\n });\n requestAnimationFrame(() => triggerEvent(\"trix-initialize\", {\n onElement: this\n }));\n }\n\n this.editorController.registerSelectionManager();\n this.registerResetListener();\n this.registerClickListener();\n autofocus(this);\n }\n }\n\n disconnectedCallback() {\n var _this$editorControlle2;\n\n (_this$editorControlle2 = this.editorController) === null || _this$editorControlle2 === void 0 ? void 0 : _this$editorControlle2.unregisterSelectionManager();\n this.unregisterResetListener();\n return this.unregisterClickListener();\n } // Form support\n\n\n registerResetListener() {\n this.resetListener = this.resetBubbled.bind(this);\n return window.addEventListener(\"reset\", this.resetListener, false);\n }\n\n unregisterResetListener() {\n return window.removeEventListener(\"reset\", this.resetListener, false);\n }\n\n registerClickListener() {\n this.clickListener = this.clickBubbled.bind(this);\n return window.addEventListener(\"click\", this.clickListener, false);\n }\n\n unregisterClickListener() {\n return window.removeEventListener(\"click\", this.clickListener, false);\n }\n\n resetBubbled(event) {\n if (event.defaultPrevented) return;\n if (event.target !== this.form) return;\n return this.reset();\n }\n\n clickBubbled(event) {\n if (event.defaultPrevented) return;\n if (this.contains(event.target)) return;\n const label = findClosestElementFromNode(event.target, {\n matchingSelector: \"label\"\n });\n if (!label) return;\n if (!Array.from(this.labels).includes(label)) return;\n return this.focus();\n }\n\n reset() {\n this.value = this.defaultValue;\n }\n\n}\nwindow.customElements.define(\"trix-editor\", TrixEditorElement);\n\nexport { Trix as default };\n"],"names":["self","module","exports","t","e","n","o","i","l","call","m","c","d","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","__esModule","create","bind","default","prototype","hasOwnProperty","p","s","logger","console","WebSocket","log","this","enabled","arguments","length","Array","push","Date","now","apply","concat","iterator","constructor","TypeError","configurable","writable","key","getTime","visibilityDidChange","connection","reconnectAttempts","start","isRunning","startedAt","stoppedAt","startPolling","addEventListener","getPollInterval","stop","stopPolling","removeEventListener","recordPing","pingedAt","recordConnect","disconnectedAt","recordDisconnect","poll","clearTimeout","pollTimeout","setTimeout","reconnectIfStale","pollInterval","min","max","multiplier","Math","round","connectionIsStale","staleThreshold","disconnectedRecently","reopen","document","visibilityState","isOpen","u","message_types","welcome","disconnect","ping","confirmation","rejection","disconnect_reasons","unauthorized","invalid_request","server_restart","default_mount_path","protocols","a","h","f","slice","indexOf","open","consumer","subscriptions","monitor","disconnected","send","webSocket","JSON","stringify","isActive","getState","uninstallEventHandlers","url","installEventHandlers","close","allowReconnect","reopenDelay","getProtocol","protocol","isState","isProtocolSupported","readyState","toLowerCase","events","message","parse","data","identifier","reason","reconnect","type","reload","notify","reject","notifyAll","willAttemptReconnect","error","b","y","perform","action","command","unsubscribe","remove","g","channel","add","ensureActiveConnection","sendCommand","forget","findAll","map","filter","v","_url","connect","test","createElement","href","replace","_","head","querySelector","getAttribute","Connection","ConnectionMonitor","Consumer","INTERNAL","Subscription","Subscriptions","adapters","createWebSocketURL","createConsumer","getConfig","_debug","_debugLevel","keys","propertyIsEnumerable","entries","getOwnPropertySymbols","getOwnPropertyDescriptor","forEach","getOwnPropertyDescriptors","defineProperties","$options","channels","$cable","_removeChannel","_uid","channelName","_addChannel","connected","rejected","received","created","beforeUnmount","beforeDestroy","methods","$resubscribeToCableChannels","Number","version","split","config","globalProperties","mixin","debug","debugLevel","connectionUrl","store","connectImmediately","_connectionUrl","_logger","_connect","_attachConnectionObject","_cable","_channels","_fireChannelEvent","_channelConnected","_channelDisconnected","_subscriptionRejected","_channelReceived","subscribe","Error","_contexts","context","_name","_isReset","_resubscribe","_reset","_addContext","find","splice","findIndex","install","attachmentSelector","attributes","tagName","quote","nestable","heading1","terminal","breakOnReturn","group","code","text","plaintext","bulletList","bullet","listAttribute","element","tagName$1","parentNode","numberList","number","attachmentGallery","exclusive","_element$tagName","browser$1","composesExistingText","navigator","userAgent","forcesObjectResizing","supportsInputEvents","InputEvent","property","lang$1","attachFiles","bold","bullets","byte","bytes","captionPlaceholder","indent","italic","link","numbers","outdent","redo","strike","undo","unlink","urlPlaceholder","GB","KB","MB","PB","TB","sizes","fileSize","prefix","precision","formatter","base","exp","floor","withoutInsignificantZeros","pow","toFixed","NON_BREAKING_SPACE","extend","properties","html","documentElement","match","matches","handleEvent","eventName","onElement","matchingSelector","withCallback","inPhase","preventDefault","times","undefined","selector","useCapture","handler","event","destroy","target","findClosestElementFromNode","triggerEvent","bubbles","cancelable","createEvent","initEvent","dispatchEvent","elementMatchesSelector","nodeType","node","untilNode","Node","ELEMENT_NODE","closest","innerElementIsActive","activeElement","elementContainsNode","findChildIndexOfNode","_node","childIndex","previousSibling","removeNode","_node$parentNode","removeChild","walkTree","tree","onlyNodesOfType","usingFilter","expandEntityReferences","whatToShow","NodeFilter","SHOW_ELEMENT","SHOW_TEXT","SHOW_COMMENT","SHOW_ALL","createTreeWalker","makeElement","tag","options","editable","contenteditable","setAttribute","style","dataset","className","classList","textContent","childNodes","childNode","appendChild","blockTagNames","getBlockTagNames","attributes$1","nodeIsBlockContainer","nodeIsBlockStartComment","firstChild","nodeIsBlockStart","strict","includes","nodeProbablyIsBlockContainer","nodeIsCommentNode","COMMENT_NODE","nodeIsCursorTarget","name","nodeIsTextNode","trixCursorTarget","nodeIsAttachmentElement","nodeIsEmptyTextNode","TEXT_NODE","input","level2Enabled","getLevel","pickFiles","callback","multiple","hidden","id","fileInputId","files","getElementById","body","click","textAttributes","inheritable","parser","window","getComputedStyle","fontWeight","fontStyle","groupTagName","frozen","backgroundColor","attachments","preview","presentation","caption","size","file","blockAttributes","browser","css","attachment","attachmentCaption","attachmentCaptionEditor","attachmentMetadata","attachmentMetadataContainer","attachmentName","attachmentProgress","attachmentSize","attachmentToolbar","keyNames","lang","toolbar","getDefaultHTML","undoInterval","_AwaitValue","wrapped","_AsyncGenerator","gen","front","back","resume","arg","result","wrappedAwait","Promise","resolve","then","settle","done","err","next","_invoke","request","return","_defineProperty","obj","asyncIterator","throw","BasicObject","proxyMethod","expression","toMethod","toProperty","optional","parseProxyMethodExpression","subject","object","_this$toMethod","_object","proxyMethodExpressionPattern","args","Function","RegExp","_Array$from","_$codePointAt$1","_String$fromCodePoint","UTF16String","box","fromUCS2String","toString","ucs2String","ucs2decode","fromCodepoints","codepoints","ucs2encode","super","ucs2Length","offsetToUCS2Offset","offset","offsetFromUCS2Offset","ucs2Offset","charAt","isEqualTo","toJSON","getCacheKey","hasArrayFrom","from","hasStringCodePointAt$1","codePointAt","hasStringFromCodePoint","String","fromCodePoint","string","char","output","counter","charCodeAt","extra","array","fromCharCode","join","id$1","TrixObject","fromJSONString","jsonString","fromJSON","hasSameConstructorAs","inspect","parts","contents","contentsForInspection","toJSONString","toUTF16String","arraysAreEqual","index","spliceArray","_len","_key","RTL_PATTERN","getDirection","dir","dirName","form","supportsDirName","FormData","has","supportsDirSelector","trim","allAttributeNames","blockAttributeNames","textAttributeNames","listAttributeNames","getAllAttributeNames","getTextAttributeNames","getBlockAttributeNames","getBlockConfig","attributeName","getTextConfig","installDefaultCSSForTagName","defaultCSS","insertStyleElementForTagName","nonce","getCSPNonce","insertBefore","getMetaElement","testTransferData","dataTransferIsPlainText","dataTransfer","getData","DOMParser","parseFromString","keyEventIsKeyboardCommand","platform","metaKey","ctrlKey","defer","fn","copyObject","objectsAreEqual","normalizeRange","range","isArray","copyValue","rangeIsCollapsed","end","rangeValuesAreEqual","rangesAreEqual","leftRange","rightRange","leftStart","leftEnd","rightStart","rightEnd","left","right","domRangesAreEqual","startContainer","startOffset","endContainer","endOffset","selectionChangeObserver","update","run","selectionManagers","started","registerSelectionManager","selectionManager","unregisterSelectionManager","notifySelectionManagersOfSelectionChange","selectionDidChange","domRange","getDOMRange","reset","requestAnimationFrame","getDOMSelection","selection","getSelection","rangeCount","_getDOMSelection","getRangeAt","domRangeIsPrivate","setDOMRange","removeAllRanges","addRange","nodeIsPrivate","getPrototypeOf","normalizeSpaces","breakableWhitespacePattern","squishBreakableWhitespace","source","utf16StringDifferences","diffA","utf16StringDifference","utf16String","diffB","leftIndex","rightIndexA","rightIndexB","Hash","fromCommonAttributesOfObjects","objects","hash","getKeys","getKeysCommonToHash","values","copy","merge","unbox","toArray","isEmpty","toObject","keyToRemove","sort","Operation","isPerforming","performing","hasPerformed","performed","hasSucceeded","succeeded","hasFailed","getPromise","promise","release","_this$promise","_this$promise$cancel","cancel","ImagePreloadOperation","image","Image","onload","width","naturalWidth","height","naturalHeight","onerror","src","Attachment","attachmentForFile","attributesForFile","setFile","filename","filesize","contentType","attachmentJSON","releaseFile","didChangeAttributes","attribute","hasAttribute","getAttributes","setAttributes","newAttributes","_this$previewDelegate","_this$previewDelegate2","_this$delegate","_this$delegate$attach","previewDelegate","attachmentDidChangeAttributes","delegate","isPreviewable","preloadURL","isPending","getURL","getHref","previewablePattern","getContentType","getType","hasContent","getFilename","getFilesize","getFormattedFilesize","getExtension","_this$getFilename$mat","getContent","getWidth","getHeight","getFile","preloadFile","releasePreloadedFile","getUploadProgress","uploadProgress","setUploadProgress","_this$uploadProgressD","_this$uploadProgressD2","uploadProgressDelegate","attachmentDidChangeUploadProgress","getPreviewURL","previewURL","preloadingURL","setPreviewURL","_this$previewDelegate3","_this$previewDelegate4","_this$delegate2","_this$delegate2$attac","attachmentDidChangePreviewURL","preload","fileObjectURL","URL","createObjectURL","revokeObjectURL","_ref","catch","ManagedAttachment","attachmentManager","requestRemovalOfAttachment","AttachmentManager","managedAttachments","manageAttachment","getAttachments","attachmentIsManaged","attachmentManagerDidRequestRemovalOfAttachment","unmanageAttachment","managedAttachment","Piece","registerType","types","pieceJSON","copyWithAttributes","getValue","copyWithAdditionalAttributes","copyWithoutAttribute","getAttributesHash","hasSameStringValueAsPiece","piece","hasSameAttributesAsPiece","isBlockBreak","isSerializable","canBeGrouped","canBeGroupedWith","getLength","canBeConsolidatedWith","AttachmentPiece","ensureAttachmentExclusivelyHasAttribute","removeProhibitedAttributes","permittedAttributes","getCaption","_piece$attachment","json","toConsole","StringPiece","normalizeNewlines","consolidateWith","splitAtOffset","SplittableList","eachObject","insertObjectAtIndex","insertSplittableListAtIndex","splittableList","insertSplittableListAtPosition","position","splitObjectAtPosition","editObjectAtIndex","replaceObjectAtIndex","removeObjectAtIndex","getObjectAtIndex","getSplittableListInRange","rightIndex","splitObjectsAtRange","selectSplittableList","removeObjectsInRange","transformObjectsInRange","transform","transformedObjects","rightOuterIndex","leftInnerIndex","startOfRange","endOfRange","getObjectAtPosition","findIndexAndOffsetAtPosition","splitIndex","splitOffset","leftObject","rightObject","consolidate","pendingObject","_pendingObject$canBeC","_pendingObject","consolidateFromIndexToIndex","startIndex","endIndex","objectsInRange","consolidatedInRange","currentPosition","nextPosition","findPositionAtIndexAndOffset","currentIndex","getEndPosition","endPosition","objectArraysAreEqual","Text","textForAttachmentWithAttributes","textForStringWithAttributes","textJSON","pieces","notEmpty","pieceList","copyWithPieceList","copyUsingObjectMap","objectMap","getPieces","appendText","insertTextAtPosition","removeTextAtRange","replaceTextAtRange","moveTextFromRangeToPosition","getTextAtRange","addAttributeAtRange","addAttributesAtRange","removeAttributeAtRange","setAttributesAtRange","getAttributesAtPosition","_this$pieceList$getOb","getCommonAttributes","getCommonAttributesAtRange","getExpandedRangeForAttributeAtOffset","getStringAtRange","getStringAtPosition","startsWithString","endsWithString","getAttachmentPieces","getAttachmentAndPositionById","attachmentId","getAttachmentById","getRangeOfAttachment","attachmentAndPosition","updateAttributesForAttachment","_text$pieceList","eachPiece","getPieceAtPosition","toSerializableText","isRTL","Block","blockJSON","applyBlockBreakToText","block","copyWithText","copyWithoutText","copyWithoutAttributes","mappedText","addAttribute","expandAttribute","removeAttribute","removeLastValue","removeLastAttribute","getLastAttribute","getLastElement","getAttributeLevel","getAttributeAtLevel","level","hasAttributes","getLastNestableAttribute","getNestableAttributes","getNestingLevel","decreaseNestingLevel","increaseNestingLevel","lastIndexOf","getListItemAttributes","isListItem","_getBlockConfig","isTerminalBlock","_getBlockConfig2","breaksOnReturn","_getBlockConfig3","findLineBreakInDirectionFromPosition","direction","newlineText","getTextWithoutBlockBreak","getBlockBreakPosition","textEndsInBlockBreak","depth","otherBlock","otherAttributes","otherAttribute","getListAttributeNames","unmarkExistingInnerBlockBreaksInText","addBlockBreakToText","modified","innerPieces","lastPiece","unmarkBlockBreakPiece","blockBreakText","blockBreak","ObjectMap","Document","documentJSON","fromString","blocks","blockList","getBlockAtIndex","consolidateBlocks","copyUsingObjectsFromDocument","sourceDocument","getObjects","getBlocks","copyWithBaseBlockAttributes","replaceBlock","oldBlock","newBlock","insertDocumentAtRange","locationFromPosition","getBlockAtPosition","mergeDocumentAtRange","formattedDocument","startPosition","startLocation","baseBlockAttributes","getBaseBlockAttributes","trailingBlockAttributes","leadingBlockAttributes","blockCount","getBlockCount","firstBlock","firstText","insertTextAtRange","leftPosition","rightPosition","leftLocation","rightLocation","locationRangeFromRange","leftOffset","leftBlock","rightOffset","rightBlock","leftText","rightText","affectedBlockCount","getDocumentAtRange","movingRightward","eachBlockAtRange","textRange","eachBlock","getTextAtIndex","removeAttributeForAttachment","insertBlockBreakAtRange","applyBlockAttributeAtRange","expanded","expandRangeToLineBreaksAndSplitBlocks","blockConfig","removeLastListAttributeAtRange","exceptAttributeName","converted","convertLineBreaksToBlockBreaksInRange","removeBlockAttributesAtRange","removeLastTerminalAttributeAtRange","consolidateBlocksAtRange","lastAttributeName","endLocation","startBlock","positionFromLocation","endBlock","_this$getBlockAtIndex","getTextAtPosition","getCharacterAtPosition","getEditCount","editCount","getCommonAttributesAtPosition","attributesForBlock","commonAttributes","attributesLeft","inheritableAttributes","getRangeOfCommonAttributeAtPosition","blockIndex","lastAttributeIndex","attachmentPieces","iterable","getLocationRangeOfAttachment","getAttachmentPieceForAttachment","findRangesForBlockAttribute","ranges","findRangesForTextAttribute","withValue","location","locationRangeFromPosition","rangeFromLocationRange","locationRange","getTexts","toSerializableDocument","DEFAULT_ALLOWED_ATTRIBUTES","DEFAULT_FORBIDDEN_PROTOCOLS","DEFAULT_FORBIDDEN_ELEMENTS","HTMLSanitizer","sanitize","sanitizer","allowedAttributes","forbiddenProtocols","forbiddenElements","createBodyElementForHTML","sanitizeElements","normalizeListElementNesting","getHTML","innerHTML","getBody","walker","nodesToRemove","nextNode","currentNode","elementIsRemovable","sanitizeElement","querySelectorAll","listElement","previousElement","previousElementSibling","elementIsForbidden","elementIsntSerializable","doc","implementation","createHTMLDocument","pieceForString","parseTrixDataAttribute","HTMLParser","referenceElement","blockElements","processedElements","getDocument","createHiddenContainer","containerElement","nodeFilter","processNode","translateBlockElementMarginsToNewlines","removeHiddenContainer","cloneNode","display","nextSibling","isInsignificantTextNode","appendBlockForTextNode","processTextNode","appendBlockForElement","processElement","currentBlockElement","isBlockElement","appendStringWithAttributes","_this$currentBlock","getBlockAttributes","currentBlock","appendBlockForAttributesWithElement","elementIsBlockElement","currentBlockContainsElement","firstElementChild","parentBlockElement","findParentBlockElement","appendEmptyBlock","parentElement","_node$previousSibling","elementCanDisplayPreformattedText","stringEndsWithWhitespace","leftTrimBreakableWhitespace","getTextAttributes","appendAttachmentWithAttributes","isExtraBR","dimensions","parseInt","getImageDimensions","blockForAttributes","appendPiece","pieceForAttachment","appendStringToTextAtIndex","prependStringToTextAtIndex","unshift","configAttr","attributeInheritedFromBlock","blockElement","findBlockElementAncestors","styleProperty","attrConfig","_attrConfig$test","reverse","ancestors","stringIsAllBreakableWhitespace","nodeEndsWithNonWhitespace","lastChild","defaultMargin","getMarginOfDefaultBlockElement","margin","getMarginOfBlockElementAtIndex","top","bottom","getBlockElementMargin","whiteSpace","marginTop","marginBottom","FILTER_REJECT","FILTER_ACCEPT","LineBreakInsertion","composition","selectedRange","getSelectedRange","previousCharacter","nextCharacter","shouldInsertBlockBreak","shouldBreakFormattedBlock","shouldDecreaseListLevel","shouldPrependListItem","shouldRemoveLastBlockAttribute","Composition","currentAttributes","revision","setDocument","_this$delegate$compos","refreshAttachments","compositionDidChangeDocument","getSnapshot","loadSnapshot","_this$delegate2$compo","_this$delegate3","_this$delegate3$compo","compositionWillLoadSnapshot","setSelection","compositionDidLoadSnapshot","insertText","updatePosition","notifyDelegateOfInsertionAtRange","insertBlock","insertDocument","insertString","getCurrentTextAttributes","insertBlockBreak","insertLineBreak","insertion","decreaseListLevel","removeLastBlockAttribute","breakFormattedBlock","insertHTML","replaceHTML","getLocationRange","insertFile","insertFiles","_this$delegate4","compositionShouldAcceptFile","insertAttachments","insertAttachment","_config$attachments$t","attachmentText","shouldManageDeletingInDirection","shouldManageMovingCursorInDirection","deleteInDirection","deletingIntoPreviousBlock","selectionSpansBlocks","selectionIsCollapsed","canDecreaseBlockAttributeLevel","getBlock","decreaseBlockAttributeLevel","getExpandedRangeInDirection","getAttachmentAtRange","editAttachment","moveTextFromRange","removeAttachment","stopEditingAttachment","removeCurrentAttribute","insertPlaceholder","placeholderPosition","getPosition","selectPlaceholder","setSelectedRange","PLACEHOLDER","forgetPlaceholder","hasCurrentAttribute","toggleCurrentAttribute","setCurrentAttribute","canSetCurrentAttribute","canSetCurrentBlockAttribute","canSetCurrentTextAttribute","getSelectedDocument","setBlockAttribute","setTextAttribute","notifyDelegateOfCurrentAttributesChange","removeBlockAttribute","updateCurrentAttributes","removeTextAttribute","canDecreaseNestingLevel","_this$getBlock","canIncreaseNestingLevel","previousBlock","getPreviousBlock","arrayStartsWith","_this$getBlock2","_this$getBlock3","attributeLevel","ignoreLock","getCurrentAttributes","freezeSelection","thawSelection","hasFrozenSelection","_this$delegate5","compositionDidRequestChangingSelectionToLocationRange","getSelectionManager","setLocationRange","targetLocationRange","withTargetLocationRange","withTargetRange","withTargetDOMRange","createLocationRangeFromDOMRange","translateUTF16PositionFromOffset","editingAttachment","moveCursorInDirection","canEditAttachment","expandSelectionInDirection","expandSelectionForEditing","expandSelectionAroundCommonAttribute","selectionContainsAttachments","_this$getSelectedAtta","getSelectedAttachments","selectionIsInCursorTarget","positionIsCursorTarget","locationIsCursorTarget","positionIsBlockBreak","_this$document$getPie","_this$getSelectedDocu","added","removed","oldArray","newArray","existingValues","Set","currentValues","summarizeArrayChange","_this$delegate6","_this$delegate6$compo","compositionDidRemoveAttachment","_this$delegate7","_this$delegate7$compo","compositionDidAddAttachment","_this$delegate8","_this$delegate8$compo","compositionDidEditAttachment","_this$delegate9","_this$delegate9$compo","compositionDidChangeAttachmentPreviewURL","_this$delegate10","_this$delegate10$comp","compositionDidStartEditingAttachment","_this$delegate11","_this$delegate11$comp","compositionDidStopEditingAttachment","newDocument","_this$delegate12","_this$delegate12$comp","compositionDidChangeCurrentAttributes","_this$delegate13","_this$delegate13$comp","compositionDidPerformInsertionAtRange","utf16string","utf16position","UndoManager","undoEntries","redoEntries","recordUndoEntry","description","consolidatable","previousEntry","entryHasDescriptionAndContext","undoEntry","createEntry","pop","redoEntry","snapshot","canUndo","canRedo","entry","BLOCK_ATTRIBUTE_NAME","Filter","applyBlockAttribute","findRangesOfBlocks","findRangesOfPieces","moveSelectedRangeForward","DEFAULT_FILTERS","Editor","undoManager","filters","loadDocument","loadHTML","loadJSON","getClientRectAtPosition","getClientRectAtLocationRange","activateAttribute","attributeIsActive","canActivateAttribute","deactivateAttribute","LocationMapper","findLocationFromContainerAndOffset","container","foundBlock","attachmentElement","findAttachmentElementParentForNode","rejectAttachmentContents","nodeLength","findContainerAndOffsetFromLocation","nodeOffset","findNodeAndOffsetFromLocation","getSignificantNodesForIndex","nodes","acceptSignificantNodes","recordingNodes","rejectEmptyTextNodes","PointMapper","createDOMRangeFromPoint","x","caretPositionFromPoint","offsetNode","createRange","setStart","caretRangeFromPoint","createTextRange","originalDOMRange","moveToPoint","select","getClientRectsForDOMRange","getClientRects","SelectionManager","didMouseDown","locationMapper","pointMapper","lockCount","currentLocationRange","lockedLocationRange","createDOMRangeFromLocationRange","updateCurrentLocationRange","setLocationRangeFromPointRange","pointRange","getLocationAtPoint","lock","unlock","clearSelection","_getDOMRange","collapsed","selectionIsExpanded","domRangeWithinElement","pauseTemporarily","resumeHandlers","paused","resumeTimeout","_this$delegate$locati","locationRangeDidChange","rangeStart","rangeEnd","setEnd","point","_this$createLocationR","models","Cocument","Trix","VERSION","assign","ObjectGroup","groupObjects","ungroupedObjects","asTree","_object$canBeGrouped2","_object$canBeGrouped","_group$canBeGroupedWi","_group","getDepth","ElementStore","elements","getKey","trixStoreKey","ObjectView","childViews","rootView","getNodes","createNodes","invalidate","_this$parentView","parentView","invalidateViewForObject","_this$findViewForObje","findViewForObject","findOrCreateCachedChildView","viewClass","view","getCachedViewForObject","recordChildView","createChildView","cacheViewForObject","ObjectGroupView","getAllChildViews","views","childView","findElement","findElementForObject","getViewCache","isViewCachingEnabled","viewCache","shouldCacheViews","enableViewCaching","disableViewCaching","_this$getViewCache","cache","garbageCollectCachedViews","objectKeys","objectGroup","getChildViews","createContainerElement","css$2","AttachmentView","attachmentPiece","createContentNodes","innerElement","figure","getClassName","tabindex","createCaptionElement","progressElement","class","trixMutable","createCursorTarget","figcaption","captionConfig","getCaptionConfig","nameElement","createTextNode","sizeElement","names","extension","trixAttachment","trixContentType","trixId","trixAttributes","trixSerialize","htmlContainsTagName","findProgressElement","_this$findElement","div","PreviewableAttachmentView","refresh","updateAttributesForImage","serializedAttributes","storeKey","PieceView","textConfig","createAttachmentNodes","createStringNodes","_element","findInnerElement","_this$textConfig","substring","preserveSpaces","styles","pendingElement","isLast","isFirst","followsWhitespace","TextView","lastIndex","endsWithWhitespace","previousPiece","css$1","BlockView","createComment","textView","shouldAddExtraNewlineElement","DocumentView","render","sync","elementStore","shadowElement","isSynced","elementsHaveEqualHTML","fragment","createDocumentFragmentForSync","didSync","findStoredElements","createDocumentFragment","storedElement","replaceChild","otherElement","ignoreSpaces","unserializableAttributeNames","serializedAttributesAttribute","serializedAttributesSelector","blockCommentPattern","serializers","serializable","HTMLElement","el","mutableAttributeName","mutableSelector","childList","characterData","characterDataOldValue","subtree","MutationObserver","didMutate","observer","observe","mutations","_this$delegate$elemen","findSignificantMutations","elementDidMutate","getMutationSummary","mutation","mutationIsSignificant","nodeIsMutable","nodesModifiedByMutation","nodeIsSignificant","addedNodes","removedNodes","getTextMutationSummary","additions","deletions","getTextChangesFromCharacterData","textChanges","getTextChangesFromChildList","addition","summary","textAdded","deleted","textDeleted","getMutationsByType","textRemoved","getTextForNodes","characterMutations","startMutation","endMutation","summarized","oldString","newString","summarizeStringChange","oldValue","Controller","FileVerificationOperation","reader","FileReader","abort","readAsArrayBuffer","InputController","mutationObserver","handlerFor","mutationSummary","editorWillSyncDocumentView","editorDidSyncDocumentView","requestRender","_this$delegate$inputC","inputControllerDidRequestRender","requestReparse","_this$delegate2$input","inputControllerDidRequestReparse","operations","all","handleInput","_this$responder","inputControllerWillAttachFiles","responder","defaultPrevented","inputControllerWillHandleInput","inputControllerDidHandleInput","createLinkHTML","outerHTML","_$codePointAt","keyNames$1","pastedFileCount","Level0InputController","resetInputSummary","setInputSummary","inputSummary","isComposing","inputControllerDidAllowUnhandledInput","mutationIsExpected","preferDocument","mutationAdditionMatchesSummary","mutationDeletionMatchesSummary","didDelete","unexpectedNewlineAddition","unexpectedNewlineDeletion","_this$compositionInpu","textChanged","composedEmptyString","compositionInput","getEndData","getCompositionInput","CompositionInput","isEnded","_this$responder2","serializeSelectionToDataTransfer","_this$responder3","setData","dataTransferIsWritable","canAcceptDataTransfer","Files","getPastedHTMLUsingHiddenElement","pageXOffset","pageYOffset","opacity","focus","keydown","didInput","keyName","keyCode","_context2","modifier","_context","character","inputControllerDidReceiveKeyboardCommand","keypress","altKey","stringFromKeyEvent","_this$responder9","inputControllerWillPerformTyping","textInput","toUpperCase","_this$responder10","dragenter","dragstart","_this$delegate5$input","draggedRange","inputControllerDidStartDrag","dragover","draggingPoint","clientX","clientY","_this$delegate6$input","inputControllerDidReceiveDragOverPoint","dragend","_this$delegate7$input","inputControllerDidCancelDrag","drop","_event$dataTransfer","_this$responder11","_this$responder12","inputControllerWillMoveText","_this$responder13","cut","_this$responder14","clipboardData","inputControllerWillCutText","_this$responder15","paste","clipboard","testClipboardData","pasteEventIsCrippledSafariHTMLPaste","_this$responder16","inputControllerWillPaste","inputControllerDidPaste","_this$responder17","_this$delegate14","_this$responder18","_this$delegate15","_this$delegate16","_this$responder19","_this$delegate17","_clipboard$items","_clipboard$items$","_clipboard$items$$get","items","getAsFile","_this$delegate18","_this$responder20","_this$delegate19","extensionForFile","compositionstart","compositionupdate","compositionend","beforeinput","stopPropagation","backspace","_this$delegate20","_this$delegate21","_this$delegate22","_this$responder21","tab","_this$responder22","_this$responder23","_this$responder24","_this$responder25","control","_this$delegate23","_this$delegate24","_this$delegate25","_this$responder26","shift","_this$delegate26","_this$responder27","_this$responder28","_this$responder29","alt","_this$delegate27","meta","_this$delegate28","_file$type","_file$type$match","hasStringCodePointAt","which","charCode","hasPasteboardFlavor","hasReadableDynamicData","isExternalHTMLPaste","isExternalRichTextPaste","inputController","isSignificant","_this$responder5","_this$responder4","canApplyToDocument","_this$responder6","_this$responder7","_this$responder8","_this$data$start","_this$data$end","Level2InputController","scheduledRender","composing","reparse","scheduleRender","_this$afterRender","cancelAnimationFrame","afterRender","toggleAttributeIfSupported","inputControllerWillPerformFormatting","activateAttributeIfSupported","getTargetDOMRange","minLength","_this$event$getTarget","_this$event","targetRanges","getTargetRanges","staticRangeToRange","withEvent","keyboardCommandFromKeyEvent","shiftKey","_event$clipboardData","pasteEventHasFilesOnly","pasteEventHasPlainTextOnly","inputTypes","inputType","dragging","pointFromEvent","dragEventHasFiles","ArrowLeft","ArrowRight","Backspace","Tab","deleteByComposition","deleteByCut","deleteByDrag","deleteByDragRange","deleteCompositionText","deleteContent","deleteContentBackward","deleteContentForward","deleteEntireSoftLine","deleteHardLineBackward","deleteHardLineForward","deleteSoftLineBackward","deleteSoftLineForward","deleteWordBackward","deleteWordForward","formatBackColor","formatBold","formatFontColor","formatFontName","formatIndent","formatItalic","formatJustifyCenter","formatJustifyFull","formatJustifyLeft","formatJustifyRight","formatOutdent","formatRemove","_this$responder30","formatSetBlockTextDirection","formatSetInlineTextDirection","formatStrikeThrough","formatSubscript","formatSuperscript","formatUnderline","historyRedo","inputControllerWillPerformRedo","historyUndo","inputControllerWillPerformUndo","insertCompositionText","insertFromComposition","insertFromDrop","_this$responder31","insertFromPaste","_dataTransfer$files","_this$responder32","_this$responder33","_this$responder34","_this$responder35","insertFromYank","insertLink","insertOrderedList","insertParagraph","_this$responder36","insertReplacementText","_this$event$dataTrans","insertTranspose","insertUnorderedList","staticRange","undoable","commands","do","undos","AttachmentEditorController","title","trixAction","didClickToolbar","didClickActionButton","textarea","placeholder","textareaClone","tabIndex","autoresize","scrollHeight","didInputCaption","didKeyDownCaption","didChangeCaption","didBlurCaption","editingFigcaption","editCaption","makeElementMutable","addToolbar","installCaptionEditor","uninstall","savePendingCaption","didUninstallAttachmentEditor","pendingCaption","_this$delegate3$attac","attachmentEditorDidRequestUpdatingAttributesForAttachment","attachmentEditorDidRequestRemovingAttributeForAttachment","attachmentEditorDidRequestRemovalOfAttachment","_this$delegate5$attac","attachmentEditorDidRequestDeselectingAttachment","CompositionController","didFocus","didBlur","didClickAttachment","documentView","_this$blurPromise","focused","compositionControllerDidFocus","blurPromise","compositionControllerDidBlur","findAttachmentForElement","compositionControllerDidSelectAttachment","getSerializableElement","isEditingAttachment","_this$delegate4$compo","_this$delegate5$compo","canSyncDocumentView","compositionControllerWillSyncDocumentView","compositionControllerDidSyncDocumentView","compositionControllerDidRender","rerenderViewForObject","refreshViewCache","attachmentEditor","installAttachmentEditorForAttachment","_this$attachmentEdito","uninstallAttachmentEditor","_this$attachmentEdito2","compositionControllerWillUpdateAttachment","compositionControllerDidRequestRemovalOfAttachment","compositionControllerDidRequestDeselectingAttachment","attributeButtonSelector","actionButtonSelector","toolbarButtonSelector","dialogSelector","activeDialogSelector","dialogButtonSelector","dialogInputSelector","getInputForDialog","getAttributeName","getActionName","ToolbarController","didClickAttributeButton","didClickDialogButton","didKeyDownDialogInput","actions","resetDialogInputs","toolbarDidClickButton","actionName","getDialog","toggleDialog","toolbarDidInvokeAction","toolbarDidToggleAttribute","refreshAttributeButtons","dialogElement","dialog","hideDialog","updateActions","refreshActionButtons","eachActionButton","disabled","updateAttributes","eachAttributeButton","dialogIsVisible","applyKeyboardCommand","keyString","button","buttonKeys","dialogName","showDialog","toolbarWillShowDialog","disabledInput","toolbarDidShowDialog","willValidate","checkValidity","toolbarDidUpdateAttribute","toolbarDidRemoveAttribute","toolbarDidHideDialog","getDialogName","EditorController","editorElement","compositionController","toolbarController","toolbarElement","editor","notifyEditorElement","handlingInput","updateCurrentActions","pasting","pastedRange","attachmentLocationRange","loadingSnapshot","isFocused","requestedLocationRange","compositionRevisionWhenLocationRangeRequested","renderedCompositionRevision","runEditorFilters","isFocusedInvisibly","requestedRender","recordTypingUndoEntry","recordFormattingUndoEntry","locationRangeBeforeDrag","invokeAction","selectionFrozen","canInvokeAction","actionIsExternal","_this$actions$actionN","_this$actions$actionN2","_this$actions$actionN3","_this$actions$actionN4","getCurrentActions","currentActions","updateInputElement","serializer","serializeToContentType","setInputElementValue","documentChangedSinceLastRender","getUndoContext","getLocationContext","getTimeContext","_this$editorElement$o","ownerDocument","TrixToolbarElement","connectedCallback","customElements","define","makeEditable","handleEventOnce","configureContentEditable","disableObjectResizing","setDefaultParagraphSeparator","_document$queryComman","_document","queryCommandSupported","execCommand","_document$queryComman2","_document2","cursorTargetStyles","TrixEditorElement","labels","label","_this$ownerDocument","toolbarId","_this$inputElement","inputElement","_this$ownerDocument2","inputId","nextElementSibling","_this$editorControlle","editorController","_this$inputElement2","_this$inputElement3","defaultValue","_this$editor","addAccessibilityRole","texts","contains","ensureAriaLabel","registerResetListener","registerClickListener","autofocus","disconnectedCallback","_this$editorControlle2","unregisterResetListener","unregisterClickListener","resetListener","resetBubbled","clickListener","clickBubbled"],"sourceRoot":""}