{"version":3,"sources":["webpack:///./node_modules/quill/dist/quill.js"],"names":["factory","self","modules","installedModules","__webpack_require__","moduleId","exports","module","i","l","call","m","c","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","value","container_1","format_1","leaf_1","scroll_1","inline_1","block_1","embed_1","text_1","attributor_1","class_1","style_1","store_1","Registry","Parchment","Scope","create","find","query","register","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","extendStatics","__extends","this","setPrototypeOf","__proto__","Array","b","__","constructor","ParchmentError","_super","message","_this","Error","attributes","classes","tags","types","scope","match","ANY","Node","TEXT_NODE","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","split","tagName","TYPE","DATA_KEY","input","BlotClass","node","bubble","blot","parentNode","Definitions","_i","arguments","length","map","Definition","blotName","attrName","keyName","className","isArray","toUpperCase","tagNames","forEach","tag","diff","equal","extend","op","NULL_CHARACTER","String","fromCharCode","Delta","ops","insert","text","newOp","keys","push","retain","index","lastOp","unshift","splice","chop","pop","filter","predicate","partition","passed","failed","reduce","initial","changeLength","elem","slice","start","end","Infinity","iter","iterator","hasNext","nextOp","next","compose","other","thisIter","otherIter","firstOther","peek","firstLeft","peekType","peekLength","delta","Math","min","thisOp","otherOp","rest","concat","strings","join","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","indexOf","transform","priority","transformPosition","offset","nextType","hasOwn","toStr","toString","gOPD","getOwnPropertyDescriptor","arr","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","setProperty","target","options","newValue","writable","getProperty","src","copy","copyIsArray","clone","deep","BlockEmbed","bubbleFormats","undefined","_createClass","defineProperties","props","descriptor","Constructor","protoProps","staticProps","_get","receiver","Function","desc","parent","getPrototypeOf","_extend2","_interopRequireDefault","_quillDelta2","_parchment2","_break2","_inline2","_text2","_classCallCheck","instance","TypeError","_possibleConstructorReturn","ReferenceError","_inherits","subClass","superClass","_Parchment$Embed","apply","domNode","formats","values","attribute","BLOCK_ATTRIBUTE","format","def","endsWith","block","insertBefore","insertAt","BLOCK_BLOT","_Parchment$Block","_this2","cache","descendants","leaf","lines","shift","children","tail","ref","head","remove","context","child","force","statics","defaultChild","allowedChildren","overload","expandConfig","_typeof","Symbol","_slicedToArray","_arr","_n","_d","_e","_s","done","err","sliceIterator","_editor2","_emitter4","_module2","_selection","_selection2","_logger2","_theme2","_defineProperty","debug","Quill","container","error","html","innerHTML","trim","classList","add","__quill","root","addContainer","setAttribute","scrollingContainer","emitter","scroll","whitelist","editor","selection","theme","keyboard","addModule","clipboard","history","init","on","events","EDITOR_CHANGE","type","TEXT_CHANGE","toggle","isBlank","SCROLL_UPDATE","source","mutations","range","lastRange","modify","update","contents","convert","setContents","clear","placeholder","readOnly","disable","limit","level","imports","path","overwrite","warn","startsWith","refNode","document","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","scrollTop","focus","scrollIntoView","_this4","sources","API","getSelection","change","formatLine","formatText","setSelection","SILENT","_this5","_overload3","_overload4","_this6","_overload5","_overload6","bounds","getBounds","containerBounds","getBoundingClientRect","bottom","top","height","left","right","width","getLength","_overload7","_overload8","getContents","getFormat","Number","MAX_VALUE","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","contains","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","_overload15","_overload16","Range","USER","_this11","userConfig","DEFAULTS","themeConfig","config","moduleConfig","moduleClass","toolbar","querySelector","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","args","emit","_map","pos","_map2","_map3","max","_map4","version","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","order","otherIndex","_parchment","TextBlot","_Parchment$Text","_eventemitter2","eventName","addEventListener","_len","_key","querySelectorAll","_node$__quill$emitter","handleDOM","Emitter","_EventEmitter","listeners","log","event","_len2","_key2","_ref","handler","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","Module","quill","levels","method","_console","console","namespace","ns","logger","bind","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","opts","Date","getTime","a","isUndefinedOrNull","isBuffer","ka","kb","e","sort","objEquiv","x","attributeBit","ATTRIBUTE","item","canAdd","replace","removeAttribute","Code","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","reverse","lastIndexOf","appendChild","prev","optimize","removeChild","unwrap","TAB","_op2","_code2","_cursor2","_block","_clone2","_deepEqual2","ASCII","Editor","getDelta","consumeNextNewline","scrollLength","batchStart","image","list","bullet","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","batchEnd","lengthRemaining","lineLength","codeIndex","codeLength","leaves","formatsArr","blots","combineFormats","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","data","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","combined","merged","_toConsumableArray","arr2","from","Selection","composing","mouseDown","cursor","savedRange","handleComposition","handleDragging","listenDOM","setTimeout","_native","getNativeRange","textNode","setNativeRange","ignored","_context$range","startNode","startOffset","endNode","endOffset","restore","body","_format","nativeRange","collapsed","after","attach","_scroll$leaf","_scroll$leaf2","_leaf$position","position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","normalizeNative","info","normalized","normalizedToRange","activeElement","positions","indexes","_position","startContainer","endContainer","childNodes","lastChild","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","first","last","scrollBounds","_native2","removeAllRanges","addRange","blur","rangeToNative","oldRange","_getRange","_getRange2","Break","linked_list_1","shadow_1","ContainerBlot","build","makeBlot","forEachAt","criteria","_a","lengthLeft","detach","childBlot","refBlot","some","insertInto","memo","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","replaceChild","FormatBlot","toLowerCase","replaceWith","replacement","wrapper","move","LeafBlot","INLINE_BLOT","lib","keepNull","Iterator","retOp","substr","_instanceof","nativeMap","nativeSet","nativePromise","Map","_","Set","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","_clone","proto","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","allocUnsafe","keyChild","valueChild","set","entryChild","attrs","getOwnPropertySymbols","symbols","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","_container2","isLine","_Parchment$Scroll","batch","_line","_line2","_line3","_newlineIndex","getLines","observer","takeRecords","SHORTKEY","_quill2","test","navigator","platform","Keyboard","_Module","bindings","addBinding","ENTER","shiftKey","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","listen","evt","binding","normalize","which","keyCode","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","every","preventDefault","makeEmbedArrowHandler","_ref3","where","LEFT","RIGHT","_quill$getLeaf3","_quill$getLine11","_quill$getLine13","curFormats","prevFormats","nextLength","_quill$getLine15","_quill$getLine17","nextFormats","firstFormats","lastFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","charCodeAt","ESCAPE","UP","DOWN","cutoff","updateContents","_quill$getLine3","_quill$getLine4","_quill$getLine5","_quill$getLine6","header","_quill$getLine7","_quill$getLine8","_quill$getLine9","_quill$getLine10","Cursor","createTextNode","_length","restoreText","_Parchment$Container","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","parseInt","sanitize","_inline","Link","url","_sanitize","PROTOCOL_WHITELIST","SANITIZED_URL","protocols","anchor","href","protocol","_keyboard2","_dropdown2","optionsCounter","toggleAriaAttribute","element","Picker","select","buildPicker","style","display","label","togglePicker","escape","option","tabIndex","hasAttribute","selectItem","id","buildItem","selected","buildLabel","buildOptions","close","trigger","selectedIndex","Event","dispatchEvent","createEvent","initEvent","isActive","_embed2","_scroll2","_clipboard2","_history2","ShadowBlot","cloneNode","parentBlot","refDomNode","AttributorStore","styles","attr","ClassAttributor","camelize","parts","part","StyleAttributor","Theme","themes","contentNode","childNode","leftGuard","rightGuard","prevLength","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","changeDelta","undoDelta","timestamp","now","delay","maxStack","deleteLength","changeIndex","endsWithNewlineChange","BaseTooltip","_colorPicker2","_iconPicker2","_picker2","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","removeEventListener","tooltip","textbox","hide","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","align","handlers","formula","edit","fileInput","files","reader","FileReader","onload","result","readAsDataURL","click","video","_Tooltip","boundsContainer","save","cancel","mode","preview","linkRange","restoreFocus","defaultValue","LinkedList","append","nodes","cur","curNode","ret","callback","curIndex","curLength","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","remaining","previousSibling","grandChild","InlineBlot","obj1","obj2","prop","isEqual","BlockBlot","EmbedBlot","splitText","_toggle","DOMTokenList","token","searchString","subjectString","isFinite","floor","thisArg","execCommand","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","longtext","shorttext","hm","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","j","best_common","prefixLength","text1_a","text1_b","text2_a","text2_b","hm1","ceil","hm2","mid_common","diff_halfMatch_","diffs_a","diffs_b","text1_length","text2_length","max_d","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","y1","x1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","diff_bisect_","diff_compute_","diff_cleanupMerge","pointer","count_delete","count_insert","text_delete","text_insert","changes","norm","current_pos","next_pos","split_pos","d_left","d_right","cursor_normalize_diff","ndiffs","cursor_pointer","d_next","merge_tuples","fix_cursor","compact","starts_with_pair_end","str","fixed_diffs","fix_emoji","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","left_d","right_d","shim","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","has","Events","EE","fn","EventEmitter","_events","_eventsCount","eventNames","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","removeAllListeners","addListener","setMaxListeners","prefixed","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_extend3","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","deltaEndsWith","ELEMENT_NODE","fontStyle","computeStyle","italic","fontWeight","bold","applyFormat","parseFloat","textIndent","matchAlias","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","selector","matcher","matchVisual","addMatcher","innerText","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","nodeType","childrenDelta","paste","pair","_pair","window","getComputedStyle","endText","nextElementSibling","nodeHeight","offsetHeight","marginTop","marginBottom","offsetTop","whiteSpace","replacer","collapse","Bold","addControls","Toolbar","_ret","controls","addHandler","_this$quill$selection","_quill$selection$getR","prompt","addButton","groups","group","control","addSelect","clean","direction","link","_picker","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","offsetWidth","rootBounds","verticalShift","_base","_base2","_link2","_icons2","TOOLBAR_CONFIG","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","show","_core2","_indent","_blockquote2","_header2","_list","_list2","_bold2","_italic2","_script2","_strike2","_underline2","_image2","_video2","_code","_formula2","_syntax2","_toolbar2","_bubble2","_snow2","IndentClass","ListItem","IdentAttributor","Blockquote","Header","List","_Container","listEventHandler","_bold","Italic","_Bold","Script","Strike","Underline","_link","ATTRIBUTES","Image","Video","_BlockEmbed","FormulaBlot","_Embed","katex","render","throwOnError","errorColor","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedText","Syntax","highlight","timer","clearTimeout","interval","code","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft"],"mappings":"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","file":"eabe11fc-88fdfd46f5ef199c8728.js","sourcesContent":["require(\"core-js/modules/es6.string.link\");\n\nrequire(\"core-js/modules/es6.array.fill\");\n\nrequire(\"core-js/modules/es6.date.now\");\n\nrequire(\"core-js/modules/es6.regexp.constructor\");\n\nrequire(\"core-js/modules/es6.promise\");\n\nrequire(\"core-js/modules/es6.set\");\n\nrequire(\"core-js/modules/es6.map\");\n\nrequire(\"core-js/modules/es6.array.some\");\n\nrequire(\"core-js/modules/es6.string.iterator\");\n\nrequire(\"core-js/modules/es6.array.from\");\n\nrequire(\"core-js/modules/es6.regexp.match\");\n\nrequire(\"core-js/modules/es6.array.last-index-of\");\n\nrequire(\"core-js/modules/es6.regexp.replace\");\n\nrequire(\"core-js/modules/es6.array.sort\");\n\nrequire(\"core-js/modules/es6.function.bind\");\n\nrequire(\"core-js/modules/es6.number.constructor\");\n\nrequire(\"core-js/modules/es6.string.trim\");\n\nrequire(\"core-js/modules/es6.string.starts-with\");\n\nrequire(\"core-js/modules/es7.symbol.async-iterator\");\n\nrequire(\"core-js/modules/es6.symbol\");\n\nrequire(\"core-js/modules/es6.string.ends-with\");\n\nrequire(\"core-js/modules/es6.regexp.to-string\");\n\nrequire(\"core-js/modules/es6.date.to-string\");\n\nrequire(\"core-js/modules/es6.array.index-of\");\n\nrequire(\"core-js/modules/es6.array.slice\");\n\nrequire(\"core-js/modules/es6.array.reduce\");\n\nrequire(\"core-js/modules/es6.array.filter\");\n\nrequire(\"core-js/modules/web.dom.iterable\");\n\nrequire(\"core-js/modules/es6.array.iterator\");\n\nrequire(\"core-js/modules/es6.object.to-string\");\n\nrequire(\"core-js/modules/es6.object.keys\");\n\nrequire(\"core-js/modules/es6.array.for-each\");\n\nrequire(\"core-js/modules/es6.array.is-array\");\n\nrequire(\"core-js/modules/es6.array.map\");\n\nrequire(\"core-js/modules/es6.regexp.split\");\n\nrequire(\"core-js/modules/es6.function.name\");\n\nrequire(\"core-js/modules/es6.object.create\");\n\nrequire(\"core-js/modules/es6.object.set-prototype-of\");\n\nrequire(\"core-js/modules/es6.array.find\");\n\nrequire(\"core-js/modules/es6.object.define-property\");\n\n/*!\n * Quill Editor v1.3.7\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n if (typeof exports === 'object' && typeof module === 'object') module.exports = factory();else if (typeof define === 'function' && define.amd) define([], factory);else if (typeof exports === 'object') exports[\"Quill\"] = factory();else root[\"Quill\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function () {\n return (\n /******/\n function (modules) {\n // webpackBootstrap\n\n /******/\n // The module cache\n\n /******/\n var installedModules = {};\n /******/\n\n /******/\n // The require function\n\n /******/\n\n function __webpack_require__(moduleId) {\n /******/\n\n /******/\n // Check if module is in cache\n\n /******/\n if (installedModules[moduleId]) {\n /******/\n return installedModules[moduleId].exports;\n /******/\n }\n /******/\n // Create a new module (and put it into the cache)\n\n /******/\n\n\n var module = installedModules[moduleId] = {\n /******/\n i: moduleId,\n\n /******/\n l: false,\n\n /******/\n exports: {}\n /******/\n\n };\n /******/\n\n /******/\n // Execute the module function\n\n /******/\n\n modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n /******/\n\n /******/\n // Flag the module as loaded\n\n /******/\n\n module.l = true;\n /******/\n\n /******/\n // Return the exports of the module\n\n /******/\n\n return module.exports;\n /******/\n }\n /******/\n\n /******/\n\n /******/\n // expose the modules object (__webpack_modules__)\n\n /******/\n\n\n __webpack_require__.m = modules;\n /******/\n\n /******/\n // expose the module cache\n\n /******/\n\n __webpack_require__.c = installedModules;\n /******/\n\n /******/\n // define getter function for harmony exports\n\n /******/\n\n __webpack_require__.d = function (exports, name, getter) {\n /******/\n if (!__webpack_require__.o(exports, name)) {\n /******/\n Object.defineProperty(exports, name, {\n /******/\n configurable: false,\n\n /******/\n enumerable: true,\n\n /******/\n get: getter\n /******/\n\n });\n /******/\n }\n /******/\n\n };\n /******/\n\n /******/\n // getDefaultExport function for compatibility with non-harmony modules\n\n /******/\n\n\n __webpack_require__.n = function (module) {\n /******/\n var getter = module && module.__esModule ?\n /******/\n function getDefault() {\n return module['default'];\n } :\n /******/\n function getModuleExports() {\n return module;\n };\n /******/\n\n __webpack_require__.d(getter, 'a', getter);\n /******/\n\n\n return getter;\n /******/\n };\n /******/\n\n /******/\n // Object.prototype.hasOwnProperty.call\n\n /******/\n\n\n __webpack_require__.o = function (object, property) {\n return Object.prototype.hasOwnProperty.call(object, property);\n };\n /******/\n\n /******/\n // __webpack_public_path__\n\n /******/\n\n\n __webpack_require__.p = \"\";\n /******/\n\n /******/\n // Load entry module and return exports\n\n /******/\n\n return __webpack_require__(__webpack_require__.s = 109);\n /******/\n }(\n /************************************************************************/\n\n /******/\n [\n /* 0 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var container_1 = __webpack_require__(17);\n\n var format_1 = __webpack_require__(18);\n\n var leaf_1 = __webpack_require__(19);\n\n var scroll_1 = __webpack_require__(45);\n\n var inline_1 = __webpack_require__(46);\n\n var block_1 = __webpack_require__(47);\n\n var embed_1 = __webpack_require__(48);\n\n var text_1 = __webpack_require__(49);\n\n var attributor_1 = __webpack_require__(12);\n\n var class_1 = __webpack_require__(32);\n\n var style_1 = __webpack_require__(33);\n\n var store_1 = __webpack_require__(31);\n\n var Registry = __webpack_require__(1);\n\n var Parchment = {\n Scope: Registry.Scope,\n create: Registry.create,\n find: Registry.find,\n query: Registry.query,\n register: Registry.register,\n Container: container_1[\"default\"],\n Format: format_1[\"default\"],\n Leaf: leaf_1[\"default\"],\n Embed: embed_1[\"default\"],\n Scroll: scroll_1[\"default\"],\n Block: block_1[\"default\"],\n Inline: inline_1[\"default\"],\n Text: text_1[\"default\"],\n Attributor: {\n Attribute: attributor_1[\"default\"],\n Class: class_1[\"default\"],\n Style: style_1[\"default\"],\n Store: store_1[\"default\"]\n }\n };\n exports[\"default\"] = Parchment;\n /***/\n },\n /* 1 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var ParchmentError =\n /** @class */\n function (_super) {\n __extends(ParchmentError, _super);\n\n function ParchmentError(message) {\n var _this = this;\n\n message = '[Parchment] ' + message;\n _this = _super.call(this, message) || this;\n _this.message = message;\n _this.name = _this.constructor.name;\n return _this;\n }\n\n return ParchmentError;\n }(Error);\n\n exports.ParchmentError = ParchmentError;\n var attributes = {};\n var classes = {};\n var tags = {};\n var types = {};\n exports.DATA_KEY = '__blot';\n var Scope;\n\n (function (Scope) {\n Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n })(Scope = exports.Scope || (exports.Scope = {}));\n\n function create(input, value) {\n var match = query(input);\n\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n\n var BlotClass = match;\n var node = // @ts-ignore\n input instanceof Node || input['nodeType'] === Node.TEXT_NODE ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n }\n\n exports.create = create;\n\n function find(node, bubble) {\n if (bubble === void 0) {\n bubble = false;\n }\n\n if (node == null) return null; // @ts-ignore\n\n if (node[exports.DATA_KEY] != null) return node[exports.DATA_KEY].blot;\n if (bubble) return find(node.parentNode, bubble);\n return null;\n }\n\n exports.find = find;\n\n function query(query, scope) {\n if (scope === void 0) {\n scope = Scope.ANY;\n }\n\n var match;\n\n if (typeof query === 'string') {\n match = types[query] || attributes[query]; // @ts-ignore\n } else if (query instanceof Text || query['nodeType'] === Node.TEXT_NODE) {\n match = types['text'];\n } else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n } else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n } else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n\n for (var i in names) {\n match = classes[names[i]];\n if (match) break;\n }\n\n match = match || tags[query.tagName];\n }\n\n if (match == null) return null; // @ts-ignore\n\n if (scope & Scope.LEVEL & match.scope && scope & Scope.TYPE & match.scope) return match;\n return null;\n }\n\n exports.query = query;\n\n function register() {\n var Definitions = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n\n var Definition = Definitions[0];\n\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n } else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n\n types[Definition.blotName || Definition.attrName] = Definition;\n\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n } else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n } else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n\n return Definition;\n }\n\n exports.register = register;\n /***/\n },\n /* 2 */\n\n /***/\n function (module, exports, __webpack_require__) {\n var diff = __webpack_require__(51);\n\n var equal = __webpack_require__(11);\n\n var extend = __webpack_require__(3);\n\n var op = __webpack_require__(20);\n\n var NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n var Delta = function Delta(ops) {\n // Assume we are given a well formed ops\n if (Array.isArray(ops)) {\n this.ops = ops;\n } else if (ops != null && Array.isArray(ops.ops)) {\n this.ops = ops.ops;\n } else {\n this.ops = [];\n }\n };\n\n Delta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n\n return this.push(newOp);\n };\n\n Delta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({\n 'delete': length\n });\n };\n\n Delta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = {\n retain: length\n };\n\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n\n return this.push(newOp);\n };\n\n Delta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = {\n 'delete': lastOp['delete'] + newOp['delete']\n };\n return this;\n } // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n\n\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = {\n insert: lastOp.insert + newOp.insert\n };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes;\n return this;\n } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n this.ops[index - 1] = {\n retain: lastOp.retain + newOp.retain\n };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes;\n return this;\n }\n }\n }\n\n if (index === this.ops.length) {\n this.ops.push(newOp);\n } else {\n this.ops.splice(index, 0, newOp);\n }\n\n return this;\n };\n\n Delta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n\n return this;\n };\n\n Delta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n };\n\n Delta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n };\n\n Delta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n };\n\n Delta.prototype.partition = function (predicate) {\n var passed = [],\n failed = [];\n this.forEach(function (op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n };\n\n Delta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n };\n\n Delta.prototype.changeLength = function () {\n return this.reduce(function (length, elem) {\n if (elem.insert) {\n return length + op.length(elem);\n } else if (elem[\"delete\"]) {\n return length - elem[\"delete\"];\n }\n\n return length;\n }, 0);\n };\n\n Delta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n };\n\n Delta.prototype.slice = function (start, end) {\n start = start || 0;\n if (typeof end !== 'number') end = Infinity;\n var ops = [];\n var iter = op.iterator(this.ops);\n var index = 0;\n\n while (index < end && iter.hasNext()) {\n var nextOp;\n\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n\n index += op.length(nextOp);\n }\n\n return new Delta(ops);\n };\n\n Delta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var ops = [];\n var firstOther = otherIter.peek();\n\n if (firstOther != null && typeof firstOther.retain === 'number' && firstOther.attributes == null) {\n var firstLeft = firstOther.retain;\n\n while (thisIter.peekType() === 'insert' && thisIter.peekLength() <= firstLeft) {\n firstLeft -= thisIter.peekLength();\n ops.push(thisIter.next());\n }\n\n if (firstOther.retain - firstLeft > 0) {\n otherIter.next(firstOther.retain - firstLeft);\n }\n }\n\n var delta = new Delta(ops);\n\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else if (thisIter.peekType() === 'delete') {\n delta.push(thisIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n\n if (typeof otherOp.retain === 'number') {\n var newOp = {};\n\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n } // Preserve null when composing with a retain, otherwise remove it for inserts\n\n\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp); // Optimization if rest of other is just retain\n\n if (!otherIter.hasNext() && equal(delta.ops[delta.ops.length - 1], newOp)) {\n var rest = new Delta(thisIter.rest());\n return delta.concat(rest).chop();\n } // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n\n return delta.chop();\n };\n\n Delta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n\n return delta;\n };\n\n Delta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\n }\n\n var strings = [this, other].map(function (delta) {\n return delta.map(function (op) {\n if (op.insert != null) {\n return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n }\n\n var prep = delta === other ? 'on' : 'with';\n throw new Error('diff() called ' + prep + ' non-document');\n }).join('');\n });\n var delta = new Delta();\n var diffResult = diff(strings[0], strings[1], index);\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n diffResult.forEach(function (component) {\n var length = component[1].length;\n\n while (length > 0) {\n var opLength = 0;\n\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\n\n case diff.EQUAL:\n opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n var thisOp = thisIter.next(opLength);\n var otherOp = otherIter.next(opLength);\n\n if (equal(thisOp.insert, otherOp.insert)) {\n delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n } else {\n delta.push(otherOp)['delete'](opLength);\n }\n\n break;\n }\n\n length -= opLength;\n }\n });\n return delta.chop();\n };\n\n Delta.prototype.eachLine = function (predicate, newline) {\n newline = newline || '\\n';\n var iter = op.iterator(this.ops);\n var line = new Delta();\n var i = 0;\n\n while (iter.hasNext()) {\n if (iter.peekType() !== 'insert') return;\n var thisOp = iter.peek();\n var start = op.length(thisOp) - iter.peekLength();\n var index = typeof thisOp.insert === 'string' ? thisOp.insert.indexOf(newline, start) - start : -1;\n\n if (index < 0) {\n line.push(iter.next());\n } else if (index > 0) {\n line.push(iter.next(index));\n } else {\n if (predicate(line, iter.next(1).attributes || {}, i) === false) {\n return;\n }\n\n i += 1;\n line = new Delta();\n }\n }\n\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n };\n\n Delta.prototype.transform = function (other, priority) {\n priority = !!priority;\n\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\n\n while (thisIter.hasNext() || otherIter.hasNext()) {\n if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n delta.retain(op.length(thisIter.next()));\n } else if (otherIter.peekType() === 'insert') {\n delta.push(otherIter.next());\n } else {\n var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n var thisOp = thisIter.next(length);\n var otherOp = otherIter.next(length);\n\n if (thisOp['delete']) {\n // Our delete either makes their delete redundant or removes their retain\n continue;\n } else if (otherOp['delete']) {\n delta.push(otherOp);\n } else {\n // We retain either their retain or insert\n delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n }\n }\n }\n\n return delta.chop();\n };\n\n Delta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\n\n if (nextType === 'delete') {\n index -= Math.min(length, index - offset);\n continue;\n } else if (nextType === 'insert' && (offset < index || !priority)) {\n index += length;\n }\n\n offset += length;\n }\n\n return index;\n };\n\n module.exports = Delta;\n /***/\n },\n /* 3 */\n\n /***/\n function (module, exports) {\n 'use strict';\n\n var hasOwn = Object.prototype.hasOwnProperty;\n var toStr = Object.prototype.toString;\n var defineProperty = Object.defineProperty;\n var gOPD = Object.getOwnPropertyDescriptor;\n\n var isArray = function isArray(arr) {\n if (typeof Array.isArray === 'function') {\n return Array.isArray(arr);\n }\n\n return toStr.call(arr) === '[object Array]';\n };\n\n var isPlainObject = function isPlainObject(obj) {\n if (!obj || toStr.call(obj) !== '[object Object]') {\n return false;\n }\n\n var hasOwnConstructor = hasOwn.call(obj, 'constructor');\n var hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf'); // Not own constructor property must be Object\n\n if (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n return false;\n } // Own properties are enumerated firstly, so to speed up,\n // if last one is own, then all properties are own.\n\n\n var key;\n\n for (key in obj) {\n /**/\n }\n\n return typeof key === 'undefined' || hasOwn.call(obj, key);\n }; // If name is '__proto__', and Object.defineProperty is available, define __proto__ as an own property on target\n\n\n var setProperty = function setProperty(target, options) {\n if (defineProperty && options.name === '__proto__') {\n defineProperty(target, options.name, {\n enumerable: true,\n configurable: true,\n value: options.newValue,\n writable: true\n });\n } else {\n target[options.name] = options.newValue;\n }\n }; // Return undefined instead of __proto__ if '__proto__' is not an own property\n\n\n var getProperty = function getProperty(obj, name) {\n if (name === '__proto__') {\n if (!hasOwn.call(obj, name)) {\n return void 0;\n } else if (gOPD) {\n // In early versions of node, obj['__proto__'] is buggy when obj has\n // __proto__ as an own property. Object.getOwnPropertyDescriptor() works.\n return gOPD(obj, name).value;\n }\n }\n\n return obj[name];\n };\n\n module.exports = function extend() {\n var options, name, src, copy, copyIsArray, clone;\n var target = arguments[0];\n var i = 1;\n var length = arguments.length;\n var deep = false; // Handle a deep copy situation\n\n if (typeof target === 'boolean') {\n deep = target;\n target = arguments[1] || {}; // skip the boolean and the target\n\n i = 2;\n }\n\n if (target == null || typeof target !== 'object' && typeof target !== 'function') {\n target = {};\n }\n\n for (; i < length; ++i) {\n options = arguments[i]; // Only deal with non-null/undefined values\n\n if (options != null) {\n // Extend the base object\n for (name in options) {\n src = getProperty(target, name);\n copy = getProperty(options, name); // Prevent never-ending loop\n\n if (target !== copy) {\n // Recurse if we're merging plain objects or arrays\n if (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n if (copyIsArray) {\n copyIsArray = false;\n clone = src && isArray(src) ? src : [];\n } else {\n clone = src && isPlainObject(src) ? src : {};\n } // Never move original objects, clone them\n\n\n setProperty(target, {\n name: name,\n newValue: extend(deep, clone, copy)\n }); // Don't bring in undefined values\n } else if (typeof copy !== 'undefined') {\n setProperty(target, {\n name: name,\n newValue: copy\n });\n }\n }\n }\n }\n } // Return the modified object\n\n\n return target;\n };\n /***/\n\n },\n /* 4 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var NEWLINE_LENGTH = 1;\n\n var BlockEmbed = function (_Parchment$Embed) {\n _inherits(BlockEmbed, _Parchment$Embed);\n\n function BlockEmbed() {\n _classCallCheck(this, BlockEmbed);\n\n return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n }\n\n _createClass(BlockEmbed, [{\n key: 'attach',\n value: function attach() {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\n this.attributes = new _parchment2[\"default\"].Attributor.Store(this.domNode);\n }\n }, {\n key: 'delta',\n value: function delta() {\n return new _quillDelta2[\"default\"]().insert(this.value(), (0, _extend2[\"default\"])(this.formats(), this.attributes.values()));\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var attribute = _parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.BLOCK_ATTRIBUTE);\n\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n this.format(name, value);\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n var block = _parchment2[\"default\"].create(Block.blotName);\n\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n }\n }\n }]);\n\n return BlockEmbed;\n }(_parchment2[\"default\"].Embed);\n\n BlockEmbed.scope = _parchment2[\"default\"].Scope.BLOCK_BLOT; // It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n var Block = function (_Parchment$Block) {\n _inherits(Block, _Parchment$Block);\n\n function Block(domNode) {\n _classCallCheck(this, Block);\n\n var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\n _this2.cache = {};\n return _this2;\n }\n\n _createClass(Block, [{\n key: 'delta',\n value: function delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(_parchment2[\"default\"].Leaf).reduce(function (delta, leaf) {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new _quillDelta2[\"default\"]()).insert('\\n', bubbleFormats(this));\n }\n\n return this.cache.delta;\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\n this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\n\n if (_parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n }\n\n this.cache = {};\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n if (value.length === 0) return;\n var lines = value.split('\\n');\n var text = lines.shift();\n\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n\n this.cache = {};\n }\n\n var block = this;\n lines.reduce(function (index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n var head = this.children.head;\n\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\n if (head instanceof _break2[\"default\"]) {\n head.remove();\n }\n\n this.cache = {};\n }\n }, {\n key: 'length',\n value: function length() {\n if (this.cache.length == null) {\n this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n }\n\n return this.cache.length;\n }\n }, {\n key: 'moveChildren',\n value: function moveChildren(target, ref) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\n this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this, context);\n\n this.cache = {};\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n }\n }, {\n key: 'removeChild',\n value: function removeChild(child) {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\n this.cache = {};\n }\n }, {\n key: 'split',\n value: function split(index) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n var clone = this.clone();\n\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\n this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n }(_parchment2[\"default\"].Block);\n\n Block.blotName = 'block';\n Block.tagName = 'P';\n Block.defaultChild = 'break';\n Block.allowedChildren = [_inline2[\"default\"], _parchment2[\"default\"].Embed, _text2[\"default\"]];\n\n function bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (blot == null) return formats;\n\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2[\"default\"])(formats, blot.formats());\n }\n\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n\n return bubbleFormats(blot.parent, formats);\n }\n\n exports.bubbleFormats = bubbleFormats;\n exports.BlockEmbed = BlockEmbed;\n exports[\"default\"] = Block;\n /***/\n },\n /* 5 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.overload = exports.expandConfig = undefined;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n __webpack_require__(50);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _editor = __webpack_require__(14);\n\n var _editor2 = _interopRequireDefault(_editor);\n\n var _emitter3 = __webpack_require__(8);\n\n var _emitter4 = _interopRequireDefault(_emitter3);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _selection = __webpack_require__(15);\n\n var _selection2 = _interopRequireDefault(_selection);\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _theme = __webpack_require__(34);\n\n var _theme2 = _interopRequireDefault(_theme);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var debug = (0, _logger2[\"default\"])('quill');\n\n var Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n\n _logger2[\"default\"].level(limit);\n }\n }, {\n key: 'find',\n value: function find(node) {\n return node.__quill || _parchment2[\"default\"].find(node);\n }\n }, {\n key: 'import',\n value: function _import(name) {\n if (this.imports[name] == null) {\n debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n }\n\n return this.imports[name];\n }\n }, {\n key: 'register',\n value: function register(path, target) {\n var _this = this;\n\n var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n if (typeof path !== 'string') {\n var name = path.attrName || path.blotName;\n\n if (typeof name === 'string') {\n // register(Blot | Attributor, overwrite)\n this.register('formats/' + name, path, target);\n } else {\n Object.keys(path).forEach(function (key) {\n _this.register(key, path[key], target);\n });\n }\n } else {\n if (this.imports[path] != null && !overwrite) {\n debug.warn('Overwriting ' + path + ' with', target);\n }\n\n this.imports[path] = target;\n\n if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n _parchment2[\"default\"].register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n }]);\n\n function Quill(container) {\n var _this2 = this;\n\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Quill);\n\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n\n if (this.options.debug) {\n Quill.debug(this.options.debug);\n }\n\n var html = this.container.innerHTML.trim();\n this.container.classList.add('ql-container');\n this.container.innerHTML = '';\n this.container.__quill = this;\n this.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.root.setAttribute('data-gramm', false);\n this.scrollingContainer = this.options.scrollingContainer || this.root;\n this.emitter = new _emitter4[\"default\"]();\n this.scroll = _parchment2[\"default\"].create(this.root, {\n emitter: this.emitter,\n whitelist: this.options.formats\n });\n this.editor = new _editor2[\"default\"](this.scroll);\n this.selection = new _selection2[\"default\"](this.scroll, this.emitter);\n this.theme = new this.options.theme(this, this.options);\n this.keyboard = this.theme.addModule('keyboard');\n this.clipboard = this.theme.addModule('clipboard');\n this.history = this.theme.addModule('history');\n this.theme.init();\n this.emitter.on(_emitter4[\"default\"].events.EDITOR_CHANGE, function (type) {\n if (type === _emitter4[\"default\"].events.TEXT_CHANGE) {\n _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n }\n });\n this.emitter.on(_emitter4[\"default\"].events.SCROLL_UPDATE, function (source, mutations) {\n var range = _this2.selection.lastRange;\n var index = range && range.length === 0 ? range.index : undefined;\n modify.call(_this2, function () {\n return _this2.editor.update(null, mutations, index);\n }, source);\n });\n var contents = this.clipboard.convert('
' + html + '


');\n this.setContents(contents);\n this.history.clear();\n\n if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\n }\n\n if (this.options.readOnly) {\n this.disable();\n }\n }\n\n _createClass(Quill, [{\n key: 'addContainer',\n value: function addContainer(container) {\n var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n if (typeof container === 'string') {\n var className = container;\n container = document.createElement('div');\n container.classList.add(className);\n }\n\n this.container.insertBefore(container, refNode);\n return container;\n }\n }, {\n key: 'blur',\n value: function blur() {\n this.selection.setRange(null);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length, source) {\n var _this3 = this;\n\n var _overload = overload(index, length, source);\n\n var _overload2 = _slicedToArray(_overload, 4);\n\n index = _overload2[0];\n length = _overload2[1];\n source = _overload2[3];\n return modify.call(this, function () {\n return _this3.editor.deleteText(index, length);\n }, source, index, -1 * length);\n }\n }, {\n key: 'disable',\n value: function disable() {\n this.enable(false);\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n }, {\n key: 'focus',\n value: function focus() {\n var scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.scrollIntoView();\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n var _this4 = this;\n\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4[\"default\"].sources.API;\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n\n var change = new _quillDelta2[\"default\"]();\n\n if (range == null) {\n return change;\n } else if (_parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.BLOCK)) {\n change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n } else if (range.length === 0) {\n _this4.selection.format(name, value);\n\n return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n\n _this4.setSelection(range, _emitter4[\"default\"].sources.SILENT);\n\n return change;\n }, source);\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length, name, value, source) {\n var _this5 = this;\n\n var formats = void 0;\n\n var _overload3 = overload(index, length, name, value, source);\n\n var _overload4 = _slicedToArray(_overload3, 4);\n\n index = _overload4[0];\n length = _overload4[1];\n formats = _overload4[2];\n source = _overload4[3];\n return modify.call(this, function () {\n return _this5.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length, name, value, source) {\n var _this6 = this;\n\n var formats = void 0;\n\n var _overload5 = overload(index, length, name, value, source);\n\n var _overload6 = _slicedToArray(_overload5, 4);\n\n index = _overload6[0];\n length = _overload6[1];\n formats = _overload6[2];\n source = _overload6[3];\n return modify.call(this, function () {\n return _this6.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var bounds = void 0;\n\n if (typeof index === 'number') {\n bounds = this.selection.getBounds(index, length);\n } else {\n bounds = this.selection.getBounds(index.index, index.length);\n }\n\n var containerBounds = this.container.getBoundingClientRect();\n return {\n bottom: bounds.bottom - containerBounds.top,\n height: bounds.height,\n left: bounds.left - containerBounds.left,\n right: bounds.right - containerBounds.left,\n top: bounds.top - containerBounds.top,\n width: bounds.width\n };\n }\n }, {\n key: 'getContents',\n value: function getContents() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload7 = overload(index, length);\n\n var _overload8 = _slicedToArray(_overload7, 2);\n\n index = _overload8[0];\n length = _overload8[1];\n return this.editor.getContents(index, length);\n }\n }, {\n key: 'getFormat',\n value: function getFormat() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection(true);\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n if (typeof index === 'number') {\n return this.editor.getFormat(index, length);\n } else {\n return this.editor.getFormat(index.index, index.length);\n }\n }\n }, {\n key: 'getIndex',\n value: function getIndex(blot) {\n return blot.offset(this.scroll);\n }\n }, {\n key: 'getLength',\n value: function getLength() {\n return this.scroll.length();\n }\n }, {\n key: 'getLeaf',\n value: function getLeaf(index) {\n return this.scroll.leaf(index);\n }\n }, {\n key: 'getLine',\n value: function getLine(index) {\n return this.scroll.line(index);\n }\n }, {\n key: 'getLines',\n value: function getLines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n if (typeof index !== 'number') {\n return this.scroll.lines(index.index, index.length);\n } else {\n return this.scroll.lines(index, length);\n }\n }\n }, {\n key: 'getModule',\n value: function getModule(name) {\n return this.theme.modules[name];\n }\n }, {\n key: 'getSelection',\n value: function getSelection() {\n var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\n\n return this.selection.getRange()[0];\n }\n }, {\n key: 'getText',\n value: function getText() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\n var _overload9 = overload(index, length);\n\n var _overload10 = _slicedToArray(_overload9, 2);\n\n index = _overload10[0];\n length = _overload10[1];\n return this.editor.getText(index, length);\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return this.selection.hasFocus();\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n var _this7 = this;\n\n var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n return modify.call(this, function () {\n return _this7.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text, name, value, source) {\n var _this8 = this;\n\n var formats = void 0;\n\n var _overload11 = overload(index, 0, name, value, source);\n\n var _overload12 = _slicedToArray(_overload11, 4);\n\n index = _overload12[0];\n formats = _overload12[2];\n source = _overload12[3];\n return modify.call(this, function () {\n return _this8.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n }, {\n key: 'isEnabled',\n value: function isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n }, {\n key: 'off',\n value: function off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n }, {\n key: 'on',\n value: function on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n }, {\n key: 'once',\n value: function once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n }, {\n key: 'pasteHTML',\n value: function pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length, source) {\n var _this9 = this;\n\n var _overload13 = overload(index, length, source);\n\n var _overload14 = _slicedToArray(_overload13, 4);\n\n index = _overload14[0];\n length = _overload14[1];\n source = _overload14[3];\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }, {\n key: 'setContents',\n value: function setContents(delta) {\n var _this10 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4[\"default\"].sources.API;\n return modify.call(this, function () {\n delta = new _quillDelta2[\"default\"](delta);\n\n var length = _this10.getLength();\n\n var deleted = _this10.editor.deleteText(0, length);\n\n var applied = _this10.editor.applyDelta(delta);\n\n var lastOp = applied.ops[applied.ops.length - 1];\n\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\n applied[\"delete\"](1);\n }\n\n var ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n }, {\n key: 'setSelection',\n value: function setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n var _overload15 = overload(index, length, source);\n\n var _overload16 = _slicedToArray(_overload15, 4);\n\n index = _overload16[0];\n length = _overload16[1];\n source = _overload16[3];\n this.selection.setRange(new _selection.Range(index, length), source);\n\n if (source !== _emitter4[\"default\"].sources.SILENT) {\n this.selection.scrollIntoView(this.scrollingContainer);\n }\n }\n }\n }, {\n key: 'setText',\n value: function setText(text) {\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4[\"default\"].sources.API;\n var delta = new _quillDelta2[\"default\"]().insert(text);\n return this.setContents(delta, source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4[\"default\"].sources.USER;\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\n this.selection.update(source);\n return change;\n }\n }, {\n key: 'updateContents',\n value: function updateContents(delta) {\n var _this11 = this;\n\n var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4[\"default\"].sources.API;\n return modify.call(this, function () {\n delta = new _quillDelta2[\"default\"](delta);\n return _this11.editor.applyDelta(delta, source);\n }, source, true);\n }\n }]);\n\n return Quill;\n }();\n\n Quill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n };\n Quill.events = _emitter4[\"default\"].events;\n Quill.sources = _emitter4[\"default\"].sources; // eslint-disable-next-line no-undef\n\n Quill.version = false ? 'dev' : \"1.3.7\";\n Quill.imports = {\n 'delta': _quillDelta2[\"default\"],\n 'parchment': _parchment2[\"default\"],\n 'core/module': _module2[\"default\"],\n 'core/theme': _theme2[\"default\"]\n };\n\n function expandConfig(container, userConfig) {\n userConfig = (0, _extend2[\"default\"])(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2[\"default\"];\n } else {\n userConfig.theme = Quill[\"import\"]('themes/' + userConfig.theme);\n\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n\n var themeConfig = (0, _extend2[\"default\"])(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill[\"import\"]('modules/' + name);\n\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n\n return config;\n }, {}); // Special case toolbar shorthand\n\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n\n userConfig = (0, _extend2[\"default\"])(true, {}, Quill.DEFAULTS, {\n modules: moduleConfig\n }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n\n return config;\n }, {});\n return userConfig;\n } // Handle selection preservation and TEXT_CHANGE emission\n // common to modification APIs\n\n\n function modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4[\"default\"].sources.USER) {\n return new _quillDelta2[\"default\"]();\n }\n\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n\n if (range != null) {\n if (index === true) index = range.index;\n\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n\n this.setSelection(range, _emitter4[\"default\"].sources.SILENT);\n }\n\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4[\"default\"].events.TEXT_CHANGE, change, oldDelta, source];\n\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4[\"default\"].events.EDITOR_CHANGE].concat(args));\n\n if (source !== _emitter4[\"default\"].sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n\n return change;\n }\n\n function overload(index, length, name, value, source) {\n var formats = {};\n\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n } // Handle format being object, two format name/value strings or excluded\n\n\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n } // Handle optional source\n\n\n source = source || _emitter4[\"default\"].sources.API;\n return [index, length, formats, source];\n }\n\n function shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n\n if (index instanceof _quillDelta2[\"default\"]) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source !== _emitter4[\"default\"].sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source === _emitter4[\"default\"].sources.USER) return pos;\n\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n\n return new _selection.Range(start, end - start);\n }\n\n exports.expandConfig = expandConfig;\n exports.overload = overload;\n exports[\"default\"] = Quill;\n /***/\n },\n /* 6 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Inline = function (_Parchment$Inline) {\n _inherits(Inline, _Parchment$Inline);\n\n function Inline() {\n _classCallCheck(this, Inline);\n\n return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n }\n\n _createClass(Inline, [{\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.BLOT)) {\n var blot = this.isolate(index, length);\n\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this, context);\n\n if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n var parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n }], [{\n key: 'compare',\n value: function compare(self, other) {\n var selfIndex = Inline.order.indexOf(self);\n var otherIndex = Inline.order.indexOf(other);\n\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n }]);\n\n return Inline;\n }(_parchment2[\"default\"].Inline);\n\n Inline.allowedChildren = [Inline, _parchment2[\"default\"].Embed, _text2[\"default\"]]; // Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\n Inline.order = ['cursor', 'inline', // Must be lower\n 'underline', 'strike', 'italic', 'bold', 'script', 'link', 'code' // Must be higher\n ];\n exports[\"default\"] = Inline;\n /***/\n },\n /* 7 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TextBlot = function (_Parchment$Text) {\n _inherits(TextBlot, _Parchment$Text);\n\n function TextBlot() {\n _classCallCheck(this, TextBlot);\n\n return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n }\n\n return TextBlot;\n }(_parchment2[\"default\"].Text);\n\n exports[\"default\"] = TextBlot;\n /***/\n },\n /* 8 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _eventemitter = __webpack_require__(54);\n\n var _eventemitter2 = _interopRequireDefault(_eventemitter);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2[\"default\"])('quill:events');\n var EVENTS = ['selectionchange', 'mousedown', 'mouseup', 'click'];\n EVENTS.forEach(function (eventName) {\n document.addEventListener(eventName, function () {\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n [].slice.call(document.querySelectorAll('.ql-container')).forEach(function (node) {\n // TODO use WeakMap\n if (node.__quill && node.__quill.emitter) {\n var _node$__quill$emitter;\n\n (_node$__quill$emitter = node.__quill.emitter).handleDOM.apply(_node$__quill$emitter, args);\n }\n });\n });\n });\n\n var Emitter = function (_EventEmitter) {\n _inherits(Emitter, _EventEmitter);\n\n function Emitter() {\n _classCallCheck(this, Emitter);\n\n var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\n _this.listeners = {};\n\n _this.on('error', debug.error);\n\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }, {\n key: 'handleDOM',\n value: function handleDOM(event) {\n for (var _len2 = arguments.length, args = Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n (this.listeners[event.type] || []).forEach(function (_ref) {\n var node = _ref.node,\n handler = _ref.handler;\n\n if (event.target === node || node.contains(event.target)) {\n handler.apply(undefined, [event].concat(args));\n }\n });\n }\n }, {\n key: 'listenDOM',\n value: function listenDOM(eventName, node, handler) {\n if (!this.listeners[eventName]) {\n this.listeners[eventName] = [];\n }\n\n this.listeners[eventName].push({\n node: node,\n handler: handler\n });\n }\n }]);\n\n return Emitter;\n }(_eventemitter2[\"default\"]);\n\n Emitter.events = {\n EDITOR_CHANGE: 'editor-change',\n SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n SCROLL_OPTIMIZE: 'scroll-optimize',\n SCROLL_UPDATE: 'scroll-update',\n SELECTION_CHANGE: 'selection-change',\n TEXT_CHANGE: 'text-change'\n };\n Emitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n };\n exports[\"default\"] = Emitter;\n /***/\n },\n /* 9 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Module = function Module(quill) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n _classCallCheck(this, Module);\n\n this.quill = quill;\n this.options = options;\n };\n\n Module.DEFAULTS = {};\n exports[\"default\"] = Module;\n /***/\n },\n /* 10 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n var levels = ['error', 'warn', 'log', 'info'];\n var level = 'warn';\n\n function debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\n var _console;\n\n for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n (_console = console)[method].apply(_console, args); // eslint-disable-line no-console\n\n }\n }\n\n function namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n }\n\n debug.level = namespace.level = function (newLevel) {\n level = newLevel;\n };\n\n exports[\"default\"] = namespace;\n /***/\n },\n /* 11 */\n\n /***/\n function (module, exports, __webpack_require__) {\n var pSlice = Array.prototype.slice;\n\n var objectKeys = __webpack_require__(52);\n\n var isArguments = __webpack_require__(53);\n\n var deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {}; // 7.1. All identical values are equivalent, as determined by ===.\n\n if (actual === expected) {\n return true;\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime(); // 7.3. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n return opts.strict ? actual === expected : actual == expected; // 7.4. For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else {\n return objEquiv(actual, expected, opts);\n }\n };\n\n function isUndefinedOrNull(value) {\n return value === null || value === undefined;\n }\n\n function isBuffer(x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n }\n\n function objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b)) return false; // an identical 'prototype' property.\n\n if (a.prototype !== b.prototype) return false; //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n\n if (a.length !== b.length) return false;\n\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n\n return true;\n }\n\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {\n //happens when one is a string literal and the other isn't\n return false;\n } // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n\n\n if (ka.length != kb.length) return false; //the same set of keys (although not necessarily the same order),\n\n ka.sort();\n kb.sort(); //~~~cheap key test\n\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i]) return false;\n } //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n\n\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!deepEqual(a[key], b[key], opts)) return false;\n }\n\n return typeof a === typeof b;\n }\n /***/\n\n },\n /* 12 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Registry = __webpack_require__(1);\n\n var Attributor =\n /** @class */\n function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) {\n options = {};\n }\n\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = options.scope & Registry.Scope.LEVEL | attributeBit;\n } else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n\n if (options.whitelist != null) this.whitelist = options.whitelist;\n }\n\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value)) return false;\n node.setAttribute(this.keyName, value);\n return true;\n };\n\n Attributor.prototype.canAdd = function (node, value) {\n var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n if (match == null) return false;\n if (this.whitelist == null) return true;\n\n if (typeof value === 'string') {\n return this.whitelist.indexOf(value.replace(/[\"']/g, '')) > -1;\n } else {\n return this.whitelist.indexOf(value) > -1;\n }\n };\n\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n\n if (this.canAdd(node, value) && value) {\n return value;\n }\n\n return '';\n };\n\n return Attributor;\n }();\n\n exports[\"default\"] = Attributor;\n /***/\n },\n /* 13 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.Code = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Code = function (_Inline) {\n _inherits(Code, _Inline);\n\n function Code() {\n _classCallCheck(this, Code);\n\n return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n }\n\n return Code;\n }(_inline2[\"default\"]);\n\n Code.blotName = 'code';\n Code.tagName = 'CODE';\n\n var CodeBlock = function (_Block) {\n _inherits(CodeBlock, _Block);\n\n function CodeBlock() {\n _classCallCheck(this, CodeBlock);\n\n return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n }\n\n _createClass(CodeBlock, [{\n key: 'delta',\n value: function delta() {\n var _this3 = this;\n\n var text = this.domNode.textContent;\n\n if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\n }\n\n return text.split('\\n').reduce(function (delta, frag) {\n return delta.insert(frag).insert('\\n', _this3.formats());\n }, new _quillDelta2[\"default\"]());\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (name === this.statics.blotName && value) return;\n\n var _descendant = this.descendant(_text2[\"default\"], this.length() - 1),\n _descendant2 = _slicedToArray(_descendant, 1),\n text = _descendant2[0];\n\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length === 0) return;\n\n if (_parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\n }\n\n var nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n var prevNewline = this.newlineIndex(index, true) + 1;\n var isolateLength = nextNewline - prevNewline + 1;\n var blot = this.isolate(prevNewline, isolateLength);\n var next = blot.next;\n blot.format(name, value);\n\n if (next instanceof CodeBlock) {\n next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n }\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null) return;\n\n var _descendant3 = this.descendant(_text2[\"default\"], index),\n _descendant4 = _slicedToArray(_descendant3, 2),\n text = _descendant4[0],\n offset = _descendant4[1];\n\n text.insertAt(offset, value);\n }\n }, {\n key: 'length',\n value: function length() {\n var length = this.domNode.textContent.length;\n\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n\n return length;\n }\n }, {\n key: 'newlineIndex',\n value: function newlineIndex(searchIndex) {\n var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n if (!reverse) {\n var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n return offset > -1 ? searchIndex + offset : -1;\n } else {\n return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2[\"default\"].create('text', '\\n'));\n }\n\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this, context);\n\n var next = this.next;\n\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize(context);\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2[\"default\"].find(node);\n\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof _parchment2[\"default\"].Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return CodeBlock;\n }(_block2[\"default\"]);\n\n CodeBlock.blotName = 'code-block';\n CodeBlock.tagName = 'PRE';\n CodeBlock.TAB = ' ';\n exports.Code = Code;\n exports[\"default\"] = CodeBlock;\n /***/\n },\n /* 14 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _op = __webpack_require__(20);\n\n var _op2 = _interopRequireDefault(_op);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _cursor = __webpack_require__(24);\n\n var _cursor2 = _interopRequireDefault(_cursor);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _clone = __webpack_require__(21);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _deepEqual = __webpack_require__(11);\n\n var _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var ASCII = /^[ -~]*$/;\n\n var Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batchStart();\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op[\"delete\"] || op.insert.length || 1;\n var attributes = op.attributes || {};\n\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2[\"default\"])({}, (0, _block.bubbleFormats)(line));\n\n if (line instanceof _block2[\"default\"]) {\n var _line$descendant = line.descendant(_parchment2[\"default\"].Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2[\"default\"])(formats, (0, _block.bubbleFormats)(leaf));\n }\n\n attributes = _op2[\"default\"].attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n\n if (key == null) return index;\n\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n\n scrollLength += length;\n }\n\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op[\"delete\"] === 'number') {\n _this.scroll.deleteAt(index, op[\"delete\"]);\n\n return index;\n }\n\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batchEnd();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2[\"default\"]().retain(index)[\"delete\"](length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n\n if (!(line instanceof _code2[\"default\"])) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2[\"default\"]().retain(index).retain(length, (0, _clone2[\"default\"])(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2[\"default\"]().retain(index).retain(length, (0, _clone2[\"default\"])(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2[\"default\"]());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var lines = [],\n leaves = [];\n\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2[\"default\"]) {\n lines.push(blot);\n } else if (blot instanceof _parchment2[\"default\"].Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2[\"default\"].Leaf, index, length);\n }\n\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n\n return formats;\n });\n return _extend2[\"default\"].apply(_extend2[\"default\"], formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2[\"default\"]().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2[\"default\"]().retain(index).insert(text, (0, _clone2[\"default\"])(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var block = this.scroll.children.head;\n if (block.statics.blotName !== _block2[\"default\"].blotName) return false;\n if (block.children.length > 1) return false;\n return block.children.head instanceof _break2[\"default\"];\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2[\"default\"]();\n\n if (line != null) {\n if (!(line instanceof _code2[\"default\"])) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2[\"default\"]().insert(text).concat(suffix));\n var delta = new _quillDelta2[\"default\"]().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n var oldDelta = this.delta;\n\n if (mutations.length === 1 && mutations[0].type === 'characterData' && mutations[0].target.data.match(ASCII) && _parchment2[\"default\"].find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2[\"default\"].find(mutations[0].target);\n\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2[\"default\"].CONTENTS, '');\n var oldText = new _quillDelta2[\"default\"]().insert(oldValue);\n var newText = new _quillDelta2[\"default\"]().insert(textBlot.value());\n var diffDelta = new _quillDelta2[\"default\"]().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2[\"default\"]());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n\n if (!change || !(0, _deepEqual2[\"default\"])(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n\n return change;\n }\n }]);\n\n return Editor;\n }();\n\n function combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n\n return merged;\n }, {});\n }\n\n function normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2[\"default\"])(op.attributes);\n delete attributes['image'];\n return delta.insert({\n image: op.attributes.image\n }, attributes);\n }\n\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2[\"default\"])(op);\n\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n\n return delta.push(op);\n }, new _quillDelta2[\"default\"]());\n }\n\n exports[\"default\"] = Editor;\n /***/\n },\n /* 15 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.Range = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _clone = __webpack_require__(21);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _deepEqual = __webpack_require__(11);\n\n var _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n var _emitter3 = __webpack_require__(8);\n\n var _emitter4 = _interopRequireDefault(_emitter3);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _toConsumableArray(arr) {\n if (Array.isArray(arr)) {\n for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n } else {\n return Array.from(arr);\n }\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var debug = (0, _logger2[\"default\"])('quill:selection');\n\n var Range = function Range(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n _classCallCheck(this, Range);\n\n this.index = index;\n this.length = length;\n };\n\n var Selection = function () {\n function Selection(scroll, emitter) {\n var _this = this;\n\n _classCallCheck(this, Selection);\n\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.mouseDown = false;\n this.root = this.scroll.domNode;\n this.cursor = _parchment2[\"default\"].create('cursor', this); // savedRange is last non-null range\n\n this.lastRange = this.savedRange = new Range(0, 0);\n this.handleComposition();\n this.handleDragging();\n this.emitter.listenDOM('selectionchange', document, function () {\n if (!_this.mouseDown) {\n setTimeout(_this.update.bind(_this, _emitter4[\"default\"].sources.USER), 1);\n }\n });\n this.emitter.on(_emitter4[\"default\"].events.EDITOR_CHANGE, function (type, delta) {\n if (type === _emitter4[\"default\"].events.TEXT_CHANGE && delta.length() > 0) {\n _this.update(_emitter4[\"default\"].sources.SILENT);\n }\n });\n this.emitter.on(_emitter4[\"default\"].events.SCROLL_BEFORE_UPDATE, function () {\n if (!_this.hasFocus()) return;\n\n var _native = _this.getNativeRange();\n\n if (_native == null) return;\n if (_native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n // TODO unclear if this has negative side effects\n\n _this.emitter.once(_emitter4[\"default\"].events.SCROLL_UPDATE, function () {\n try {\n _this.setNativeRange(_native.start.node, _native.start.offset, _native.end.node, _native.end.offset);\n } catch (ignored) {}\n });\n });\n this.emitter.on(_emitter4[\"default\"].events.SCROLL_OPTIMIZE, function (mutations, context) {\n if (context.range) {\n var _context$range = context.range,\n startNode = _context$range.startNode,\n startOffset = _context$range.startOffset,\n endNode = _context$range.endNode,\n endOffset = _context$range.endOffset;\n\n _this.setNativeRange(startNode, startOffset, endNode, endOffset);\n }\n });\n this.update(_emitter4[\"default\"].sources.SILENT);\n }\n\n _createClass(Selection, [{\n key: 'handleComposition',\n value: function handleComposition() {\n var _this2 = this;\n\n this.root.addEventListener('compositionstart', function () {\n _this2.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this2.composing = false;\n\n if (_this2.cursor.parent) {\n var range = _this2.cursor.restore();\n\n if (!range) return;\n setTimeout(function () {\n _this2.setNativeRange(range.startNode, range.startOffset, range.endNode, range.endOffset);\n }, 1);\n }\n });\n }\n }, {\n key: 'handleDragging',\n value: function handleDragging() {\n var _this3 = this;\n\n this.emitter.listenDOM('mousedown', document.body, function () {\n _this3.mouseDown = true;\n });\n this.emitter.listenDOM('mouseup', document.body, function () {\n _this3.mouseDown = false;\n\n _this3.update(_emitter4[\"default\"].sources.USER);\n });\n }\n }, {\n key: 'focus',\n value: function focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n }, {\n key: 'format',\n value: function format(_format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n this.scroll.update();\n var nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange[\"native\"].collapsed || _parchment2[\"default\"].query(_format, _parchment2[\"default\"].Scope.BLOCK)) return;\n\n if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2[\"default\"].find(nativeRange.start.node, false);\n\n if (blot == null) return; // TODO Give blot ability to not split\n\n if (blot instanceof _parchment2[\"default\"].Leaf) {\n var after = blot.split(nativeRange.start.offset);\n blot.parent.insertBefore(this.cursor, after);\n } else {\n blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n }\n\n this.cursor.attach();\n }\n\n this.cursor.format(_format, value);\n this.scroll.optimize();\n this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n this.update();\n }\n }, {\n key: 'getBounds',\n value: function getBounds(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n\n var node = void 0,\n _scroll$leaf = this.scroll.leaf(index),\n _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n leaf = _scroll$leaf2[0],\n offset = _scroll$leaf2[1];\n\n if (leaf == null) return null;\n\n var _leaf$position = leaf.position(offset, true);\n\n var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\n node = _leaf$position2[0];\n offset = _leaf$position2[1];\n var range = document.createRange();\n\n if (length > 0) {\n range.setStart(node, offset);\n\n var _scroll$leaf3 = this.scroll.leaf(index + length);\n\n var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\n leaf = _scroll$leaf4[0];\n offset = _scroll$leaf4[1];\n if (leaf == null) return null;\n\n var _leaf$position3 = leaf.position(offset, true);\n\n var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\n node = _leaf$position4[0];\n offset = _leaf$position4[1];\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\n\n if (node instanceof Text) {\n if (offset < node.data.length) {\n range.setStart(node, offset);\n range.setEnd(node, offset + 1);\n } else {\n range.setStart(node, offset - 1);\n range.setEnd(node, offset);\n side = 'right';\n }\n\n rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\n }\n\n return {\n bottom: rect.top + rect.height,\n height: rect.height,\n left: rect[side],\n right: rect[side],\n top: rect.top,\n width: 0\n };\n }\n }\n }, {\n key: 'getNativeRange',\n value: function getNativeRange() {\n var selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n var nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n var range = this.normalizeNative(nativeRange);\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var normalized = this.getNativeRange();\n if (normalized == null) return [null, null];\n var range = this.normalizedToRange(normalized);\n return [range, normalized];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'normalizedToRange',\n value: function normalizedToRange(range) {\n var _this4 = this;\n\n var positions = [[range.start.node, range.start.offset]];\n\n if (!range[\"native\"].collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n\n var indexes = positions.map(function (position) {\n var _position = _slicedToArray(position, 2),\n node = _position[0],\n offset = _position[1];\n\n var blot = _parchment2[\"default\"].find(node, true);\n\n var index = blot.offset(_this4.scroll);\n\n if (offset === 0) {\n return index;\n } else if (blot instanceof _parchment2[\"default\"].Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n var end = Math.min(Math.max.apply(Math, _toConsumableArray(indexes)), this.scroll.length() - 1);\n var start = Math.min.apply(Math, [end].concat(_toConsumableArray(indexes)));\n return new Range(start, end - start);\n }\n }, {\n key: 'normalizeNative',\n value: function normalizeNative(nativeRange) {\n if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n\n var range = {\n start: {\n node: nativeRange.startContainer,\n offset: nativeRange.startOffset\n },\n end: {\n node: nativeRange.endContainer,\n offset: nativeRange.endOffset\n },\n \"native\": nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\n\n while (!(node instanceof Text) && node.childNodes.length > 0) {\n if (node.childNodes.length > offset) {\n node = node.childNodes[offset];\n offset = 0;\n } else if (node.childNodes.length === offset) {\n node = node.lastChild;\n offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n } else {\n break;\n }\n }\n\n position.node = node, position.offset = offset;\n });\n return range;\n }\n }, {\n key: 'rangeToNative',\n value: function rangeToNative(range) {\n var _this5 = this;\n\n var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n var args = [];\n var scrollLength = this.scroll.length();\n indexes.forEach(function (index, i) {\n index = Math.min(scrollLength - 1, index);\n\n var node = void 0,\n _scroll$leaf5 = _this5.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\n\n var _leaf$position5 = leaf.position(offset, i !== 0);\n\n var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\n node = _leaf$position6[0];\n offset = _leaf$position6[1];\n args.push(node, offset);\n });\n\n if (args.length < 2) {\n args = args.concat(args);\n }\n\n return args;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView(scrollingContainer) {\n var range = this.lastRange;\n if (range == null) return;\n var bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n var limit = this.scroll.length() - 1;\n\n var _scroll$line = this.scroll.line(Math.min(range.index, limit)),\n _scroll$line2 = _slicedToArray(_scroll$line, 1),\n first = _scroll$line2[0];\n\n var last = first;\n\n if (range.length > 0) {\n var _scroll$line3 = this.scroll.line(Math.min(range.index + range.length, limit));\n\n var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\n last = _scroll$line4[0];\n }\n\n if (first == null || last == null) return;\n var scrollBounds = scrollingContainer.getBoundingClientRect();\n\n if (bounds.top < scrollBounds.top) {\n scrollingContainer.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scrollingContainer.scrollTop += bounds.bottom - scrollBounds.bottom;\n }\n }\n }, {\n key: 'setNativeRange',\n value: function setNativeRange(startNode, startOffset) {\n var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n\n var selection = document.getSelection();\n if (selection == null) return;\n\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var _native2 = (this.getNativeRange() || {})[\"native\"];\n\n if (_native2 == null || force || startNode !== _native2.startContainer || startOffset !== _native2.startOffset || endNode !== _native2.endContainer || endOffset !== _native2.endOffset) {\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\n }\n\n var range = document.createRange();\n range.setStart(startNode, startOffset);\n range.setEnd(endNode, endOffset);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n } else {\n selection.removeAllRanges();\n this.root.blur();\n document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n }\n }\n }, {\n key: 'setRange',\n value: function setRange(range) {\n var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4[\"default\"].sources.API;\n\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n\n debug.info('setRange', range);\n\n if (range != null) {\n var args = this.rangeToNative(range);\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\n }\n\n this.update(source);\n }\n }, {\n key: 'update',\n value: function update() {\n var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4[\"default\"].sources.USER;\n var oldRange = this.lastRange;\n\n var _getRange = this.getRange(),\n _getRange2 = _slicedToArray(_getRange, 2),\n lastRange = _getRange2[0],\n nativeRange = _getRange2[1];\n\n this.lastRange = lastRange;\n\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n\n if (!(0, _deepEqual2[\"default\"])(oldRange, this.lastRange)) {\n var _emitter;\n\n if (!this.composing && nativeRange != null && nativeRange[\"native\"].collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n\n var args = [_emitter4[\"default\"].events.SELECTION_CHANGE, (0, _clone2[\"default\"])(this.lastRange), (0, _clone2[\"default\"])(oldRange), source];\n\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4[\"default\"].events.EDITOR_CHANGE].concat(args));\n\n if (source !== _emitter4[\"default\"].sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n }\n }]);\n\n return Selection;\n }();\n\n function contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n } // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\n\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n\n return parent.contains(descendant);\n }\n\n exports.Range = Range;\n exports[\"default\"] = Selection;\n /***/\n },\n /* 16 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Break = function (_Parchment$Embed) {\n _inherits(Break, _Parchment$Embed);\n\n function Break() {\n _classCallCheck(this, Break);\n\n return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n }\n\n _createClass(Break, [{\n key: 'insertInto',\n value: function insertInto(parent, ref) {\n if (parent.children.length === 0) {\n _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n } else {\n this.remove();\n }\n }\n }, {\n key: 'length',\n value: function length() {\n return 0;\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }], [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n return Break;\n }(_parchment2[\"default\"].Embed);\n\n Break.blotName = 'break';\n Break.tagName = 'BR';\n exports[\"default\"] = Break;\n /***/\n },\n /* 17 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var linked_list_1 = __webpack_require__(44);\n\n var shadow_1 = __webpack_require__(30);\n\n var Registry = __webpack_require__(1);\n\n var ContainerBlot =\n /** @class */\n function (_super) {\n __extends(ContainerBlot, _super);\n\n function ContainerBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n\n _this.build();\n\n return _this;\n }\n\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n\n ContainerBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n\n this.children.forEach(function (child) {\n child.attach();\n });\n };\n\n ContainerBlot.prototype.build = function () {\n var _this = this;\n\n this.children = new linked_list_1[\"default\"](); // Need to be reversed for if DOM nodes already in order\n\n [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n try {\n var child = makeBlot(node);\n\n _this.insertBefore(child, _this.children.head || undefined);\n } catch (err) {\n if (err instanceof Registry.ParchmentError) return;else throw err;\n }\n });\n };\n\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index),\n child = _a[0],\n offset = _a[1];\n\n if (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) {\n return [child, offset];\n } else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n } else {\n return [null, -1];\n }\n };\n\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) {\n index = 0;\n }\n\n if (length === void 0) {\n length = Number.MAX_VALUE;\n }\n\n var descendants = [];\n var lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if (criteria.blotName == null && criteria(child) || criteria.blotName != null && child instanceof criteria) {\n descendants.push(child);\n }\n\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n\n lengthLeft -= length;\n });\n return descendants;\n };\n\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n\n _super.prototype.detach.call(this);\n };\n\n ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.formatAt(offset, length, name, value);\n });\n };\n\n ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index),\n child = _a[0],\n offset = _a[1];\n\n if (child) {\n child.insertAt(offset, value, def);\n } else {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\n }\n };\n\n ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n return childBlot instanceof child;\n })) {\n throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n }\n\n childBlot.insertInto(this, refBlot);\n };\n\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n\n ContainerBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n\n if (this.children.length === 0) {\n if (this.statics.defaultChild != null) {\n var child = Registry.create(this.statics.defaultChild);\n this.appendChild(child);\n child.optimize(context);\n } else {\n this.remove();\n }\n }\n };\n\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n var _a = this.children.find(index, inclusive),\n child = _a[0],\n offset = _a[1];\n\n var position = [[this, index]];\n\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n } else if (child != null) {\n position.push([child, offset]);\n }\n\n return position;\n };\n\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n\n _super.prototype.replace.call(this, target);\n };\n\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) {\n force = false;\n }\n\n if (!force) {\n if (index === 0) return this;\n if (index === this.length()) return this.next;\n }\n\n var after = this.clone();\n this.parent.insertBefore(after, this.next);\n this.children.forEachAt(index, this.length(), function (child, offset, length) {\n child = child.split(offset, force);\n after.appendChild(child);\n });\n return after;\n };\n\n ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n\n ContainerBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n var addedNodes = [];\n var removedNodes = [];\n mutations.forEach(function (mutation) {\n if (mutation.target === _this.domNode && mutation.type === 'childList') {\n addedNodes.push.apply(addedNodes, mutation.addedNodes);\n removedNodes.push.apply(removedNodes, mutation.removedNodes);\n }\n });\n removedNodes.forEach(function (node) {\n // Check node has actually been removed\n // One exception is Chrome does not immediately remove IFRAMEs\n // from DOM but MutationRecord is correct in its reported removal\n if (node.parentNode != null && // @ts-ignore\n node.tagName !== 'IFRAME' && document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return;\n }\n\n var blot = Registry.find(node);\n if (blot == null) return;\n\n if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n blot.detach();\n }\n });\n addedNodes.filter(function (node) {\n return node.parentNode == _this.domNode;\n }).sort(function (a, b) {\n if (a === b) return 0;\n\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n\n return -1;\n }).forEach(function (node) {\n var refBlot = null;\n\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n\n var blot = makeBlot(node);\n\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n\n _this.insertBefore(blot, refBlot || undefined);\n }\n });\n };\n\n return ContainerBlot;\n }(shadow_1[\"default\"]);\n\n function makeBlot(node) {\n var blot = Registry.find(node);\n\n if (blot == null) {\n try {\n blot = Registry.create(node);\n } catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n // @ts-ignore\n blot.domNode.appendChild(child);\n });\n\n if (node.parentNode) {\n node.parentNode.replaceChild(blot.domNode, node);\n }\n\n blot.attach();\n }\n }\n\n return blot;\n }\n\n exports[\"default\"] = ContainerBlot;\n /***/\n },\n /* 18 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n var store_1 = __webpack_require__(31);\n\n var container_1 = __webpack_require__(17);\n\n var Registry = __webpack_require__(1);\n\n var FormatBlot =\n /** @class */\n function (_super) {\n __extends(FormatBlot, _super);\n\n function FormatBlot(domNode) {\n var _this = _super.call(this, domNode) || this;\n\n _this.attributes = new store_1[\"default\"](_this.domNode);\n return _this;\n }\n\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n } else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n\n return undefined;\n };\n\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n\n if (format instanceof attributor_1[\"default\"]) {\n this.attributes.attribute(format, value);\n } else if (value) {\n if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n this.replaceWith(name, value);\n }\n }\n };\n\n FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n\n return formats;\n };\n\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n\n this.attributes.copy(replacement);\n return replacement;\n };\n\n FormatBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n _super.prototype.update.call(this, mutations, context);\n\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n\n return wrapper;\n };\n\n return FormatBlot;\n }(container_1[\"default\"]);\n\n exports[\"default\"] = FormatBlot;\n /***/\n },\n /* 19 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var shadow_1 = __webpack_require__(30);\n\n var Registry = __webpack_require__(1);\n\n var LeafBlot =\n /** @class */\n function (_super) {\n __extends(LeafBlot, _super);\n\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n LeafBlot.value = function (domNode) {\n return true;\n };\n\n LeafBlot.prototype.index = function (node, offset) {\n if (this.domNode === node || this.domNode.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY) {\n return Math.min(offset, 1);\n }\n\n return -1;\n };\n\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0) offset += 1;\n return [this.parent.domNode, offset];\n };\n\n LeafBlot.prototype.value = function () {\n var _a;\n\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n };\n\n LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n }(shadow_1[\"default\"]);\n\n exports[\"default\"] = LeafBlot;\n /***/\n },\n /* 20 */\n\n /***/\n function (module, exports, __webpack_require__) {\n var equal = __webpack_require__(11);\n\n var extend = __webpack_require__(3);\n\n var lib = {\n attributes: {\n compose: function compose(a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n\n return copy;\n }, {});\n }\n\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n diff: function diff(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n transform: function transform(a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n iterator: function iterator(ops) {\n return new Iterator(ops);\n },\n length: function length(op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n };\n\n function Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n }\n\n ;\n\n Iterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n };\n\n Iterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp);\n\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n\n if (typeof nextOp['delete'] === 'number') {\n return {\n 'delete': length\n };\n } else {\n var retOp = {};\n\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n\n return retOp;\n }\n } else {\n return {\n retain: Infinity\n };\n }\n };\n\n Iterator.prototype.peek = function () {\n return this.ops[this.index];\n };\n\n Iterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n };\n\n Iterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n\n return 'retain';\n };\n\n Iterator.prototype.rest = function () {\n if (!this.hasNext()) {\n return [];\n } else if (this.offset === 0) {\n return this.ops.slice(this.index);\n } else {\n var offset = this.offset;\n var index = this.index;\n var next = this.next();\n var rest = this.ops.slice(this.index);\n this.offset = offset;\n this.index = index;\n return [next].concat(rest);\n }\n };\n\n module.exports = lib;\n /***/\n },\n /* 21 */\n\n /***/\n function (module, exports) {\n var clone = function () {\n 'use strict';\n\n function _instanceof(obj, type) {\n return type != null && obj instanceof type;\n }\n\n var nativeMap;\n\n try {\n nativeMap = Map;\n } catch (_) {\n // maybe a reference error because no `Map`. Give it a dummy value that no\n // value will ever be an instanceof.\n nativeMap = function nativeMap() {};\n }\n\n var nativeSet;\n\n try {\n nativeSet = Set;\n } catch (_) {\n nativeSet = function nativeSet() {};\n }\n\n var nativePromise;\n\n try {\n nativePromise = Promise;\n } catch (_) {\n nativePromise = function nativePromise() {};\n }\n /**\n * Clones (copies) an Object using deep copying.\n *\n * This function supports circular references by default, but if you are certain\n * there are no circular references in your object, you can save some CPU time\n * by calling clone(obj, false).\n *\n * Caution: if `circular` is false and `parent` contains circular references,\n * your program may enter an infinite loop and crash.\n *\n * @param `parent` - the object to be cloned\n * @param `circular` - set to true if the object to be cloned may contain\n * circular references. (optional - true by default)\n * @param `depth` - set to a number if the object is only to be cloned to\n * a particular depth. (optional - defaults to Infinity)\n * @param `prototype` - sets the prototype to be used when cloning an object.\n * (optional - defaults to parent prototype).\n * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n * should be cloned as well. Non-enumerable properties on the prototype\n * chain will be ignored. (optional - false by default)\n */\n\n\n function clone(parent, circular, depth, prototype, includeNonEnumerable) {\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n includeNonEnumerable = circular.includeNonEnumerable;\n circular = circular.circular;\n } // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n\n\n var allParents = [];\n var allChildren = [];\n var useBuffer = typeof Buffer != 'undefined';\n if (typeof circular == 'undefined') circular = true;\n if (typeof depth == 'undefined') depth = Infinity; // recurse this function so we don't reset allParents and allChildren\n\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null) return null;\n if (depth === 0) return parent;\n var child;\n var proto;\n\n if (typeof parent != 'object') {\n return parent;\n }\n\n if (_instanceof(parent, nativeMap)) {\n child = new nativeMap();\n } else if (_instanceof(parent, nativeSet)) {\n child = new nativeSet();\n } else if (_instanceof(parent, nativePromise)) {\n child = new nativePromise(function (resolve, reject) {\n parent.then(function (value) {\n resolve(_clone(value, depth - 1));\n }, function (err) {\n reject(_clone(err, depth - 1));\n });\n });\n } else if (clone.__isArray(parent)) {\n child = [];\n } else if (clone.__isRegExp(parent)) {\n child = new RegExp(parent.source, __getRegExpFlags(parent));\n if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n } else if (clone.__isDate(parent)) {\n child = new Date(parent.getTime());\n } else if (useBuffer && Buffer.isBuffer(parent)) {\n if (Buffer.allocUnsafe) {\n // Node.js >= 4.5.0\n child = Buffer.allocUnsafe(parent.length);\n } else {\n // Older Node.js versions\n child = new Buffer(parent.length);\n }\n\n parent.copy(child);\n return child;\n } else if (_instanceof(parent, Error)) {\n child = Object.create(parent);\n } else {\n if (typeof prototype == 'undefined') {\n proto = Object.getPrototypeOf(parent);\n child = Object.create(proto);\n } else {\n child = Object.create(prototype);\n proto = prototype;\n }\n }\n\n if (circular) {\n var index = allParents.indexOf(parent);\n\n if (index != -1) {\n return allChildren[index];\n }\n\n allParents.push(parent);\n allChildren.push(child);\n }\n\n if (_instanceof(parent, nativeMap)) {\n parent.forEach(function (value, key) {\n var keyChild = _clone(key, depth - 1);\n\n var valueChild = _clone(value, depth - 1);\n\n child.set(keyChild, valueChild);\n });\n }\n\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function (value) {\n var entryChild = _clone(value, depth - 1);\n\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\n\n for (var i = 0; i < symbols.length; i++) {\n // Don't need to worry about cloning a symbol because it is a primitive,\n // like a number or string.\n var symbol = symbols[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n\n if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n\n child[symbol] = _clone(parent[symbol], depth - 1);\n\n if (!descriptor.enumerable) {\n Object.defineProperty(child, symbol, {\n enumerable: false\n });\n }\n }\n }\n\n if (includeNonEnumerable) {\n var allPropertyNames = Object.getOwnPropertyNames(parent);\n\n for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n\n if (descriptor && descriptor.enumerable) {\n continue;\n }\n\n child[propertyName] = _clone(parent[propertyName], depth - 1);\n Object.defineProperty(child, propertyName, {\n enumerable: false\n });\n }\n }\n\n return child;\n }\n\n return _clone(parent, depth);\n }\n /**\n * Simple flat clone using prototype, accepts only objects, usefull for property\n * override on FLAT configuration object (no nested props).\n *\n * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n * works.\n */\n\n\n clone.clonePrototype = function clonePrototype(parent) {\n if (parent === null) return null;\n\n var c = function c() {};\n\n c.prototype = parent;\n return new c();\n }; // private utility functions\n\n\n function __objToStr(o) {\n return Object.prototype.toString.call(o);\n }\n\n clone.__objToStr = __objToStr;\n\n function __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n }\n\n clone.__isDate = __isDate;\n\n function __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n }\n\n clone.__isArray = __isArray;\n\n function __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n }\n\n clone.__isRegExp = __isRegExp;\n\n function __getRegExpFlags(re) {\n var flags = '';\n if (re.global) flags += 'g';\n if (re.ignoreCase) flags += 'i';\n if (re.multiline) flags += 'm';\n return flags;\n }\n\n clone.__getRegExpFlags = __getRegExpFlags;\n return clone;\n }();\n\n if (typeof module === 'object' && module.exports) {\n module.exports = clone;\n }\n /***/\n\n },\n /* 22 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _container = __webpack_require__(25);\n\n var _container2 = _interopRequireDefault(_container);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n function isLine(blot) {\n return blot instanceof _block2[\"default\"] || blot instanceof _block.BlockEmbed;\n }\n\n var Scroll = function (_Parchment$Scroll) {\n _inherits(Scroll, _Parchment$Scroll);\n\n function Scroll(domNode, config) {\n _classCallCheck(this, Scroll);\n\n var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\n _this.emitter = config.emitter;\n\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n } // Some reason fixes composition issues with character languages in Windows/Chrome, Safari\n\n\n _this.domNode.addEventListener('DOMNodeInserted', function () {});\n\n _this.optimize();\n\n _this.enable();\n\n return _this;\n }\n\n _createClass(Scroll, [{\n key: 'batchStart',\n value: function batchStart() {\n this.batch = true;\n }\n }, {\n key: 'batchEnd',\n value: function batchEnd() {\n this.batch = false;\n this.optimize();\n }\n }, {\n key: 'deleteAt',\n value: function deleteAt(index, length) {\n var _line = this.line(index),\n _line2 = _slicedToArray(_line, 2),\n first = _line2[0],\n offset = _line2[1];\n\n var _line3 = this.line(index + length),\n _line4 = _slicedToArray(_line3, 1),\n last = _line4[0];\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\n if (last != null && first !== last && offset > 0) {\n if (first instanceof _block.BlockEmbed || last instanceof _block.BlockEmbed) {\n this.optimize();\n return;\n }\n\n if (first instanceof _code2[\"default\"]) {\n var newlineIndex = first.newlineIndex(first.length(), true);\n\n if (newlineIndex > -1) {\n first = first.split(newlineIndex + 1);\n\n if (first === last) {\n this.optimize();\n return;\n }\n }\n } else if (last instanceof _code2[\"default\"]) {\n var _newlineIndex = last.newlineIndex(0);\n\n if (_newlineIndex > -1) {\n last.split(_newlineIndex + 1);\n }\n }\n\n var ref = last.children.head instanceof _break2[\"default\"] ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n\n this.optimize();\n }\n }, {\n key: 'enable',\n value: function enable() {\n var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n this.domNode.setAttribute('contenteditable', enabled);\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\n this.optimize();\n }\n }, {\n key: 'insertAt',\n value: function insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\n if (index >= this.length()) {\n if (def == null || _parchment2[\"default\"].query(value, _parchment2[\"default\"].Scope.BLOCK) == null) {\n var blot = _parchment2[\"default\"].create(this.statics.defaultChild);\n\n this.appendChild(blot);\n\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2[\"default\"].create(value, def);\n\n this.appendChild(embed);\n }\n } else {\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n }\n\n this.optimize();\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot.statics.scope === _parchment2[\"default\"].Scope.INLINE_BLOT) {\n var wrapper = _parchment2[\"default\"].create(this.statics.defaultChild);\n\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n }\n }, {\n key: 'leaf',\n value: function leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n }, {\n key: 'line',\n value: function line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n\n return this.descendant(isLine, index);\n }\n }, {\n key: 'lines',\n value: function lines() {\n var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\n var getLines = function getLines(blot, index, length) {\n var lines = [],\n lengthLeft = length;\n blot.children.forEachAt(index, length, function (child, index, length) {\n if (isLine(child)) {\n lines.push(child);\n } else if (child instanceof _parchment2[\"default\"].Container) {\n lines = lines.concat(getLines(child, index, lengthLeft));\n }\n\n lengthLeft -= length;\n });\n return lines;\n };\n\n return getLines(this, index, length);\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n if (this.batch === true) return;\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations, context);\n\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2[\"default\"].events.SCROLL_OPTIMIZE, mutations, context);\n }\n }\n }, {\n key: 'path',\n value: function path(index) {\n return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n if (this.batch === true) return;\n var source = _emitter2[\"default\"].sources.USER;\n\n if (typeof mutations === 'string') {\n source = mutations;\n }\n\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2[\"default\"].events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\n\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2[\"default\"].events.SCROLL_UPDATE, source, mutations);\n }\n }\n }]);\n\n return Scroll;\n }(_parchment2[\"default\"].Scroll);\n\n Scroll.blotName = 'scroll';\n Scroll.className = 'ql-editor';\n Scroll.tagName = 'DIV';\n Scroll.defaultChild = 'block';\n Scroll.allowedChildren = [_block2[\"default\"], _block.BlockEmbed, _container2[\"default\"]];\n exports[\"default\"] = Scroll;\n /***/\n },\n /* 23 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SHORTKEY = exports[\"default\"] = undefined;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _clone = __webpack_require__(21);\n\n var _clone2 = _interopRequireDefault(_clone);\n\n var _deepEqual = __webpack_require__(11);\n\n var _deepEqual2 = _interopRequireDefault(_deepEqual);\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _op = __webpack_require__(20);\n\n var _op2 = _interopRequireDefault(_op);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2[\"default\"])('quill:keyboard');\n var SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n var Keyboard = function (_Module) {\n _inherits(Keyboard, _Module);\n\n _createClass(Keyboard, null, [{\n key: 'match',\n value: function match(evt, binding) {\n binding = normalize(binding);\n\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\n }\n\n return binding.key === (evt.which || evt.keyCode);\n }\n }]);\n\n function Keyboard(quill, options) {\n _classCallCheck(this, Keyboard);\n\n var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\n _this.bindings = {};\n Object.keys(_this.options.bindings).forEach(function (name) {\n if (name === 'list autofill' && quill.scroll.whitelist != null && !quill.scroll.whitelist['list']) {\n return;\n }\n\n if (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n\n _this.addBinding({\n key: Keyboard.keys.ENTER,\n shiftKey: null\n }, handleEnter);\n\n _this.addBinding({\n key: Keyboard.keys.ENTER,\n metaKey: null,\n ctrlKey: null,\n altKey: null\n }, function () {});\n\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE\n }, {\n collapsed: true\n }, handleBackspace);\n\n _this.addBinding({\n key: Keyboard.keys.DELETE\n }, {\n collapsed: true\n }, handleDelete);\n } else {\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE\n }, {\n collapsed: true,\n prefix: /^.?$/\n }, handleBackspace);\n\n _this.addBinding({\n key: Keyboard.keys.DELETE\n }, {\n collapsed: true,\n suffix: /^.?$/\n }, handleDelete);\n }\n\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE\n }, {\n collapsed: false\n }, handleDeleteRange);\n\n _this.addBinding({\n key: Keyboard.keys.DELETE\n }, {\n collapsed: false\n }, handleDeleteRange);\n\n _this.addBinding({\n key: Keyboard.keys.BACKSPACE,\n altKey: null,\n ctrlKey: null,\n metaKey: null,\n shiftKey: null\n }, {\n collapsed: true,\n offset: 0\n }, handleBackspace);\n\n _this.listen();\n\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n var binding = normalize(key);\n\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n\n if (typeof context === 'function') {\n context = {\n handler: context\n };\n }\n\n if (typeof handler === 'function') {\n handler = {\n handler: handler\n };\n }\n\n binding = (0, _extend2[\"default\"])(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n\n var range = _this2.quill.getSelection();\n\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2[\"default\"].Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2[\"default\"].Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2[\"default\"])(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n }(_module2[\"default\"]);\n\n Keyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n };\n Keyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2[\"default\"].sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2[\"default\"].sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2[\"default\"].sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2[\"default\"].sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2[\"default\"].sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range) {\n this.quill.history.cutoff();\n var delta = new _quillDelta2[\"default\"]().retain(range.index)[\"delete\"](range.length).insert('\\t');\n this.quill.updateContents(delta, _quill2[\"default\"].sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index + 1, _quill2[\"default\"].sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2[\"default\"].sources.USER);\n\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2[\"default\"].sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: {\n list: 'checked'\n },\n handler: function handler(range) {\n var _quill$getLine3 = this.quill.getLine(range.index),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 2),\n line = _quill$getLine4[0],\n offset = _quill$getLine4[1];\n\n var formats = (0, _extend2[\"default\"])({}, line.formats(), {\n list: 'checked'\n });\n var delta = new _quillDelta2[\"default\"]().retain(range.index).insert('\\n', formats).retain(line.length() - offset - 1).retain(1, {\n list: 'unchecked'\n });\n this.quill.updateContents(delta, _quill2[\"default\"].sources.USER);\n this.quill.setSelection(range.index + 1, _quill2[\"default\"].sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range, context) {\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 2),\n line = _quill$getLine6[0],\n offset = _quill$getLine6[1];\n\n var delta = new _quillDelta2[\"default\"]().retain(range.index).insert('\\n', context.format).retain(line.length() - offset - 1).retain(1, {\n header: null\n });\n this.quill.updateContents(delta, _quill2[\"default\"].sources.USER);\n this.quill.setSelection(range.index + 1, _quill2[\"default\"].sources.SILENT);\n this.quill.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: {\n list: false\n },\n prefix: /^\\s*?(\\d+\\.|-|\\*|\\[ ?\\]|\\[x\\])$/,\n handler: function handler(range, context) {\n var length = context.prefix.length;\n\n var _quill$getLine7 = this.quill.getLine(range.index),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 2),\n line = _quill$getLine8[0],\n offset = _quill$getLine8[1];\n\n if (offset > length) return true;\n var value = void 0;\n\n switch (context.prefix.trim()) {\n case '[]':\n case '[ ]':\n value = 'unchecked';\n break;\n\n case '[x]':\n value = 'checked';\n break;\n\n case '-':\n case '*':\n value = 'bullet';\n break;\n\n default:\n value = 'ordered';\n }\n\n this.quill.insertText(range.index, ' ', _quill2[\"default\"].sources.USER);\n this.quill.history.cutoff();\n var delta = new _quillDelta2[\"default\"]().retain(range.index - offset)[\"delete\"](length + 1).retain(line.length() - 2 - offset).retain(1, {\n list: value\n });\n this.quill.updateContents(delta, _quill2[\"default\"].sources.USER);\n this.quill.history.cutoff();\n this.quill.setSelection(range.index - length, _quill2[\"default\"].sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 2),\n line = _quill$getLine10[0],\n offset = _quill$getLine10[1];\n\n var delta = new _quillDelta2[\"default\"]().retain(range.index + line.length() - offset - 2).retain(1, {\n 'code-block': null\n })[\"delete\"](1);\n this.quill.updateContents(delta, _quill2[\"default\"].sources.USER);\n }\n },\n 'embed left': makeEmbedArrowHandler(Keyboard.keys.LEFT, false),\n 'embed left shift': makeEmbedArrowHandler(Keyboard.keys.LEFT, true),\n 'embed right': makeEmbedArrowHandler(Keyboard.keys.RIGHT, false),\n 'embed right shift': makeEmbedArrowHandler(Keyboard.keys.RIGHT, true)\n }\n };\n\n function makeEmbedArrowHandler(key, shiftKey) {\n var _ref3;\n\n var where = key === Keyboard.keys.LEFT ? 'prefix' : 'suffix';\n return _ref3 = {\n key: key,\n shiftKey: shiftKey,\n altKey: null\n }, _defineProperty(_ref3, where, /^$/), _defineProperty(_ref3, 'handler', function handler(range) {\n var index = range.index;\n\n if (key === Keyboard.keys.RIGHT) {\n index += range.length + 1;\n }\n\n var _quill$getLeaf3 = this.quill.getLeaf(index),\n _quill$getLeaf4 = _slicedToArray(_quill$getLeaf3, 1),\n leaf = _quill$getLeaf4[0];\n\n if (!(leaf instanceof _parchment2[\"default\"].Embed)) return true;\n\n if (key === Keyboard.keys.LEFT) {\n if (shiftKey) {\n this.quill.setSelection(range.index - 1, range.length + 1, _quill2[\"default\"].sources.USER);\n } else {\n this.quill.setSelection(range.index - 1, _quill2[\"default\"].sources.USER);\n }\n } else {\n if (shiftKey) {\n this.quill.setSelection(range.index, range.length + 1, _quill2[\"default\"].sources.USER);\n } else {\n this.quill.setSelection(range.index + range.length + 1, _quill2[\"default\"].sources.USER);\n }\n }\n\n return false;\n }), _ref3;\n }\n\n function handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine11 = this.quill.getLine(range.index),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n line = _quill$getLine12[0];\n\n var formats = {};\n\n if (context.offset === 0) {\n var _quill$getLine13 = this.quill.getLine(range.index - 1),\n _quill$getLine14 = _slicedToArray(_quill$getLine13, 1),\n prev = _quill$getLine14[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2[\"default\"].attributes.diff(curFormats, prevFormats) || {};\n }\n } // Check for astral symbols\n\n\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2[\"default\"].sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2[\"default\"].sources.USER);\n }\n\n this.quill.focus();\n }\n\n function handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n var formats = {},\n nextLength = 0;\n\n var _quill$getLine15 = this.quill.getLine(range.index),\n _quill$getLine16 = _slicedToArray(_quill$getLine15, 1),\n line = _quill$getLine16[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine17 = this.quill.getLine(range.index + 1),\n _quill$getLine18 = _slicedToArray(_quill$getLine17, 1),\n next = _quill$getLine18[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2[\"default\"].attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n\n this.quill.deleteText(range.index, length, _quill2[\"default\"].sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2[\"default\"].sources.USER);\n }\n }\n\n function handleDeleteRange(range) {\n var lines = this.quill.getLines(range);\n var formats = {};\n\n if (lines.length > 1) {\n var firstFormats = lines[0].formats();\n var lastFormats = lines[lines.length - 1].formats();\n formats = _op2[\"default\"].attributes.diff(lastFormats, firstFormats) || {};\n }\n\n this.quill.deleteText(range, _quill2[\"default\"].sources.USER);\n\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index, 1, formats, _quill2[\"default\"].sources.USER);\n }\n\n this.quill.setSelection(range.index, _quill2[\"default\"].sources.SILENT);\n this.quill.focus();\n }\n\n function handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2[\"default\"].query(format, _parchment2[\"default\"].Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2[\"default\"].sources.USER); // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n\n this.quill.setSelection(range.index + 1, _quill2[\"default\"].sources.SILENT);\n this.quill.focus();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n\n _this3.quill.format(name, context.format[name], _quill2[\"default\"].sources.USER);\n });\n }\n\n function makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: {\n 'code-block': true\n },\n handler: function handler(range) {\n var CodeBlock = _parchment2[\"default\"].query('code-block');\n\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n\n offset += line.length + 1;\n });\n this.quill.update(_quill2[\"default\"].sources.USER);\n this.quill.setSelection(index, length, _quill2[\"default\"].sources.SILENT);\n }\n };\n }\n\n function makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2[\"default\"].sources.USER);\n }\n };\n }\n\n function normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({\n key: binding\n });\n }\n\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2[\"default\"])(binding, false);\n }\n\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n\n return binding;\n }\n\n exports[\"default\"] = Keyboard;\n exports.SHORTKEY = SHORTKEY;\n /***/\n },\n /* 24 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Cursor = function (_Parchment$Embed) {\n _inherits(Cursor, _Parchment$Embed);\n\n _createClass(Cursor, null, [{\n key: 'value',\n value: function value() {\n return undefined;\n }\n }]);\n\n function Cursor(domNode, selection) {\n _classCallCheck(this, Cursor);\n\n var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\n _this.selection = selection;\n _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\n _this.domNode.appendChild(_this.textNode);\n\n _this._length = 0;\n return _this;\n }\n\n _createClass(Cursor, [{\n key: 'detach',\n value: function detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n }, {\n key: 'format',\n value: function format(name, value) {\n if (this._length !== 0) {\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n }\n\n var target = this,\n index = 0;\n\n while (target != null && target.statics.scope !== _parchment2[\"default\"].Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\n }\n\n if (target != null) {\n this._length = Cursor.CONTENTS.length;\n target.optimize();\n target.formatAt(index, Cursor.CONTENTS.length, name, value);\n this._length = 0;\n }\n }\n }, {\n key: 'index',\n value: function index(node, offset) {\n if (node === this.textNode) return 0;\n return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'length',\n value: function length() {\n return this._length;\n }\n }, {\n key: 'position',\n value: function position() {\n return [this.textNode, this.textNode.data.length];\n }\n }, {\n key: 'remove',\n value: function remove() {\n _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\n this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n if (this.selection.composing || this.parent == null) return;\n var textNode = this.textNode;\n var range = this.selection.getNativeRange();\n var restoreText = void 0,\n start = void 0,\n end = void 0;\n\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n var _ref = [textNode, range.start.offset, range.end.offset];\n restoreText = _ref[0];\n start = _ref[1];\n end = _ref[2];\n } // Link format will insert text outside of anchor tag\n\n\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\n if (this.next instanceof _text2[\"default\"]) {\n restoreText = this.next.domNode;\n this.next.insertAt(0, text);\n this.textNode.data = Cursor.CONTENTS;\n } else {\n this.textNode.data = text;\n this.parent.insertBefore(_parchment2[\"default\"].create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n }\n\n this.remove();\n\n if (start != null) {\n var _map = [start, end].map(function (offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n return {\n startNode: restoreText,\n startOffset: start,\n endNode: restoreText,\n endOffset: end\n };\n }\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this2.textNode;\n })) {\n var range = this.restore();\n if (range) context.range = range;\n }\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n }(_parchment2[\"default\"].Embed);\n\n Cursor.blotName = 'cursor';\n Cursor.className = 'ql-cursor';\n Cursor.tagName = 'span';\n Cursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n exports[\"default\"] = Cursor;\n /***/\n },\n /* 25 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Container = function (_Parchment$Container) {\n _inherits(Container, _Parchment$Container);\n\n function Container() {\n _classCallCheck(this, Container);\n\n return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n }\n\n return Container;\n }(_parchment2[\"default\"].Container);\n\n Container.allowedChildren = [_block2[\"default\"], _block.BlockEmbed, Container];\n exports[\"default\"] = Container;\n /***/\n },\n /* 26 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ColorAttributor = function (_Parchment$Attributor) {\n _inherits(ColorAttributor, _Parchment$Attributor);\n\n function ColorAttributor() {\n _classCallCheck(this, ColorAttributor);\n\n return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n }\n\n _createClass(ColorAttributor, [{\n key: 'value',\n value: function value(domNode) {\n var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\n if (!value.startsWith('rgb(')) return value;\n value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n return '#' + value.split(',').map(function (component) {\n return ('00' + parseInt(component).toString(16)).slice(-2);\n }).join('');\n }\n }]);\n\n return ColorAttributor;\n }(_parchment2[\"default\"].Attributor.Style);\n\n var ColorClass = new _parchment2[\"default\"].Attributor.Class('color', 'ql-color', {\n scope: _parchment2[\"default\"].Scope.INLINE\n });\n var ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2[\"default\"].Scope.INLINE\n });\n exports.ColorAttributor = ColorAttributor;\n exports.ColorClass = ColorClass;\n exports.ColorStyle = ColorStyle;\n /***/\n },\n /* 27 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.sanitize = exports[\"default\"] = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Link = function (_Inline) {\n _inherits(Link, _Inline);\n\n function Link() {\n _classCallCheck(this, Link);\n\n return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n }\n\n _createClass(Link, [{\n key: 'format',\n value: function format(name, value) {\n if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('rel', 'noopener noreferrer');\n node.setAttribute('target', '_blank');\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return domNode.getAttribute('href');\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _sanitize(url, this.PROTOCOL_WHITELIST) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n }(_inline2[\"default\"]);\n\n Link.blotName = 'link';\n Link.tagName = 'A';\n Link.SANITIZED_URL = 'about:blank';\n Link.PROTOCOL_WHITELIST = ['http', 'https', 'mailto', 'tel'];\n\n function _sanitize(url, protocols) {\n var anchor = document.createElement('a');\n anchor.href = url;\n var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n }\n\n exports[\"default\"] = Link;\n exports.sanitize = _sanitize;\n /***/\n },\n /* 28 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _keyboard = __webpack_require__(23);\n\n var _keyboard2 = _interopRequireDefault(_keyboard);\n\n var _dropdown = __webpack_require__(107);\n\n var _dropdown2 = _interopRequireDefault(_dropdown);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var optionsCounter = 0;\n\n function toggleAriaAttribute(element, attribute) {\n element.setAttribute(attribute, !(element.getAttribute(attribute) === 'true'));\n }\n\n var Picker = function () {\n function Picker(select) {\n var _this = this;\n\n _classCallCheck(this, Picker);\n\n this.select = select;\n this.container = document.createElement('span');\n this.buildPicker();\n this.select.style.display = 'none';\n this.select.parentNode.insertBefore(this.container, this.select);\n this.label.addEventListener('mousedown', function () {\n _this.togglePicker();\n });\n this.label.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to open the picker\n case _keyboard2[\"default\"].keys.ENTER:\n _this.togglePicker();\n\n break;\n // Allows the \"Escape\" key to close the picker\n\n case _keyboard2[\"default\"].keys.ESCAPE:\n _this.escape();\n\n event.preventDefault();\n break;\n\n default:\n }\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'togglePicker',\n value: function togglePicker() {\n this.container.classList.toggle('ql-expanded'); // Toggle aria-expanded and aria-hidden to make the picker accessible\n\n toggleAriaAttribute(this.label, 'aria-expanded');\n toggleAriaAttribute(this.options, 'aria-hidden');\n }\n }, {\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.tabIndex = '0';\n item.setAttribute('role', 'button');\n item.classList.add('ql-picker-item');\n\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\n });\n item.addEventListener('keydown', function (event) {\n switch (event.keyCode) {\n // Allows the \"Enter\" key to select an item\n case _keyboard2[\"default\"].keys.ENTER:\n _this2.selectItem(item, true);\n\n event.preventDefault();\n break;\n // Allows the \"Escape\" key to close the picker\n\n case _keyboard2[\"default\"].keys.ESCAPE:\n _this2.escape();\n\n event.preventDefault();\n break;\n\n default:\n }\n });\n return item;\n }\n }, {\n key: 'buildLabel',\n value: function buildLabel() {\n var label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = _dropdown2[\"default\"];\n label.tabIndex = '0';\n label.setAttribute('role', 'button');\n label.setAttribute('aria-expanded', 'false');\n this.container.appendChild(label);\n return label;\n }\n }, {\n key: 'buildOptions',\n value: function buildOptions() {\n var _this3 = this;\n\n var options = document.createElement('span');\n options.classList.add('ql-picker-options'); // Don't want screen readers to read this until options are visible\n\n options.setAttribute('aria-hidden', 'true');\n options.tabIndex = '-1'; // Need a unique id for aria-controls\n\n options.id = 'ql-picker-options-' + optionsCounter;\n optionsCounter += 1;\n this.label.setAttribute('aria-controls', options.id);\n this.options = options;\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n\n options.appendChild(item);\n\n if (option.selected === true) {\n _this3.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n }, {\n key: 'buildPicker',\n value: function buildPicker() {\n var _this4 = this;\n\n [].slice.call(this.select.attributes).forEach(function (item) {\n _this4.container.setAttribute(item.name, item.value);\n });\n this.container.classList.add('ql-picker');\n this.label = this.buildLabel();\n this.buildOptions();\n }\n }, {\n key: 'escape',\n value: function escape() {\n var _this5 = this; // Close menu and return focus to trigger label\n\n\n this.close(); // Need setTimeout for accessibility to ensure that the browser executes\n // focus on the next process thread and after any DOM content changes\n\n setTimeout(function () {\n return _this5.label.focus();\n }, 1);\n }\n }, {\n key: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n this.label.setAttribute('aria-expanded', 'false');\n this.options.setAttribute('aria-hidden', 'true');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\n if (item.hasAttribute('data-value')) {\n this.label.setAttribute('data-value', item.getAttribute('data-value'));\n } else {\n this.label.removeAttribute('data-value');\n }\n\n if (item.hasAttribute('data-label')) {\n this.label.setAttribute('data-label', item.getAttribute('data-label'));\n } else {\n this.label.removeAttribute('data-label');\n }\n\n if (trigger) {\n if (typeof Event === 'function') {\n this.select.dispatchEvent(new Event('change'));\n } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n // IE11\n var event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n\n this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\n\n if (this.select.selectedIndex > -1) {\n var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n option = this.select.options[this.select.selectedIndex];\n this.selectItem(item);\n } else {\n this.selectItem(null);\n }\n\n var isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n }]);\n\n return Picker;\n }();\n\n exports[\"default\"] = Picker;\n /***/\n },\n /* 29 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _break = __webpack_require__(16);\n\n var _break2 = _interopRequireDefault(_break);\n\n var _container = __webpack_require__(25);\n\n var _container2 = _interopRequireDefault(_container);\n\n var _cursor = __webpack_require__(24);\n\n var _cursor2 = _interopRequireDefault(_cursor);\n\n var _embed = __webpack_require__(35);\n\n var _embed2 = _interopRequireDefault(_embed);\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n var _scroll = __webpack_require__(22);\n\n var _scroll2 = _interopRequireDefault(_scroll);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n var _clipboard = __webpack_require__(55);\n\n var _clipboard2 = _interopRequireDefault(_clipboard);\n\n var _history = __webpack_require__(42);\n\n var _history2 = _interopRequireDefault(_history);\n\n var _keyboard = __webpack_require__(23);\n\n var _keyboard2 = _interopRequireDefault(_keyboard);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n _quill2[\"default\"].register({\n 'blots/block': _block2[\"default\"],\n 'blots/block/embed': _block.BlockEmbed,\n 'blots/break': _break2[\"default\"],\n 'blots/container': _container2[\"default\"],\n 'blots/cursor': _cursor2[\"default\"],\n 'blots/embed': _embed2[\"default\"],\n 'blots/inline': _inline2[\"default\"],\n 'blots/scroll': _scroll2[\"default\"],\n 'blots/text': _text2[\"default\"],\n 'modules/clipboard': _clipboard2[\"default\"],\n 'modules/history': _history2[\"default\"],\n 'modules/keyboard': _keyboard2[\"default\"]\n });\n\n _parchment2[\"default\"].register(_block2[\"default\"], _break2[\"default\"], _cursor2[\"default\"], _inline2[\"default\"], _scroll2[\"default\"], _text2[\"default\"]);\n\n exports[\"default\"] = _quill2[\"default\"];\n /***/\n },\n /* 30 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var Registry = __webpack_require__(1);\n\n var ShadowBlot =\n /** @class */\n function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode; // @ts-ignore\n\n this.domNode[Registry.DATA_KEY] = {\n blot: this\n };\n }\n\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function get() {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n\n var node;\n\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n } else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n } else {\n node = document.createElement(this.tagName[0]);\n }\n } else {\n node = document.createElement(this.tagName);\n }\n\n if (this.className) {\n node.classList.add(this.className);\n }\n\n return node;\n };\n\n ShadowBlot.prototype.attach = function () {\n if (this.parent != null) {\n this.scroll = this.parent.scroll;\n }\n };\n\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode(false);\n return Registry.create(domNode);\n };\n\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null) this.parent.removeChild(this); // @ts-ignore\n\n delete this.domNode[Registry.DATA_KEY];\n };\n\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n } else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n var parent = Registry.create(this.statics.scope);\n blot.wrap(parent);\n parent.format(name, value);\n }\n };\n\n ShadowBlot.prototype.insertAt = function (index, value, def) {\n var blot = def == null ? Registry.create('text', value) : Registry.create(value, def);\n var ref = this.split(index);\n this.parent.insertBefore(blot, ref);\n };\n\n ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (refBlot === void 0) {\n refBlot = null;\n }\n\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n\n var refDomNode = null;\n parentBlot.children.insertBefore(this, refBlot);\n\n if (refBlot != null) {\n refDomNode = refBlot.domNode;\n }\n\n if (this.domNode.parentNode != parentBlot.domNode || this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, refDomNode);\n }\n\n this.parent = parentBlot;\n this.attach();\n };\n\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) {\n root = this.parent;\n }\n\n if (this.parent == null || this == root) return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n\n ShadowBlot.prototype.optimize = function (context) {\n // TODO clean up once we use WeakMap\n // @ts-ignore\n if (this.domNode[Registry.DATA_KEY] != null) {\n // @ts-ignore\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n\n this.detach();\n };\n\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null) return;\n target.parent.insertBefore(this, target.next);\n target.remove();\n };\n\n ShadowBlot.prototype.replaceWith = function (name, value) {\n var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n replacement.replace(this);\n return replacement;\n };\n\n ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n\n ShadowBlot.prototype.update = function (mutations, context) {// Nothing to do by default\n };\n\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n\n wrapper.appendChild(this);\n return wrapper;\n };\n\n ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n }();\n\n exports[\"default\"] = ShadowBlot;\n /***/\n },\n /* 31 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n var class_1 = __webpack_require__(32);\n\n var style_1 = __webpack_require__(33);\n\n var Registry = __webpack_require__(1);\n\n var AttributorStore =\n /** @class */\n function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n\n AttributorStore.prototype.attribute = function (attribute, value) {\n // verb\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n } else {\n delete this.attributes[attribute.attrName];\n }\n }\n } else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n\n AttributorStore.prototype.build = function () {\n var _this = this;\n\n this.attributes = {};\n var attributes = attributor_1[\"default\"].keys(this.domNode);\n var classes = class_1[\"default\"].keys(this.domNode);\n var styles = style_1[\"default\"].keys(this.domNode);\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n\n if (attr instanceof attributor_1[\"default\"]) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n\n target.format(key, value);\n });\n };\n\n AttributorStore.prototype.move = function (target) {\n var _this = this;\n\n this.copy(target);\n Object.keys(this.attributes).forEach(function (key) {\n _this.attributes[key].remove(_this.domNode);\n });\n this.attributes = {};\n };\n\n AttributorStore.prototype.values = function () {\n var _this = this;\n\n return Object.keys(this.attributes).reduce(function (attributes, name) {\n attributes[name] = _this.attributes[name].value(_this.domNode);\n return attributes;\n }, {});\n };\n\n return AttributorStore;\n }();\n\n exports[\"default\"] = AttributorStore;\n /***/\n },\n /* 32 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n function match(node, prefix) {\n var className = node.getAttribute('class') || '';\n return className.split(/\\s+/).filter(function (name) {\n return name.indexOf(prefix + \"-\") === 0;\n });\n }\n\n var ClassAttributor =\n /** @class */\n function (_super) {\n __extends(ClassAttributor, _super);\n\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n ClassAttributor.keys = function (node) {\n return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n return name.split('-').slice(0, -1).join('-');\n });\n };\n\n ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value)) return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\n };\n\n ClassAttributor.prototype.remove = function (node) {\n var matches = match(node, this.keyName);\n matches.forEach(function (name) {\n node.classList.remove(name);\n });\n\n if (node.classList.length === 0) {\n node.removeAttribute('class');\n }\n };\n\n ClassAttributor.prototype.value = function (node) {\n var result = match(node, this.keyName)[0] || '';\n var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\n return this.canAdd(node, value) ? value : '';\n };\n\n return ClassAttributor;\n }(attributor_1[\"default\"]);\n\n exports[\"default\"] = ClassAttributor;\n /***/\n },\n /* 33 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var attributor_1 = __webpack_require__(12);\n\n function camelize(name) {\n var parts = name.split('-');\n var rest = parts.slice(1).map(function (part) {\n return part[0].toUpperCase() + part.slice(1);\n }).join('');\n return parts[0] + rest;\n }\n\n var StyleAttributor =\n /** @class */\n function (_super) {\n __extends(StyleAttributor, _super);\n\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n StyleAttributor.keys = function (node) {\n return (node.getAttribute('style') || '').split(';').map(function (value) {\n var arr = value.split(':');\n return arr[0].trim();\n });\n };\n\n StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value)) return false; // @ts-ignore\n\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n\n StyleAttributor.prototype.remove = function (node) {\n // @ts-ignore\n node.style[camelize(this.keyName)] = '';\n\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n\n StyleAttributor.prototype.value = function (node) {\n // @ts-ignore\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n\n return StyleAttributor;\n }(attributor_1[\"default\"]);\n\n exports[\"default\"] = StyleAttributor;\n /***/\n },\n /* 34 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Theme = function () {\n function Theme(quill, options) {\n _classCallCheck(this, Theme);\n\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n _createClass(Theme, [{\n key: 'init',\n value: function init() {\n var _this = this;\n\n Object.keys(this.options.modules).forEach(function (name) {\n if (_this.modules[name] == null) {\n _this.addModule(name);\n }\n });\n }\n }, {\n key: 'addModule',\n value: function addModule(name) {\n var moduleClass = this.quill.constructor[\"import\"]('modules/' + name);\n this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n return this.modules[name];\n }\n }]);\n\n return Theme;\n }();\n\n Theme.DEFAULTS = {\n modules: {}\n };\n Theme.themes = {\n 'default': Theme\n };\n exports[\"default\"] = Theme;\n /***/\n },\n /* 35 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _text = __webpack_require__(7);\n\n var _text2 = _interopRequireDefault(_text);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var GUARD_TEXT = \"\\uFEFF\";\n\n var Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed(node) {\n _classCallCheck(this, Embed);\n\n var _this = _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).call(this, node));\n\n _this.contentNode = document.createElement('span');\n\n _this.contentNode.setAttribute('contenteditable', false);\n\n [].slice.call(_this.domNode.childNodes).forEach(function (childNode) {\n _this.contentNode.appendChild(childNode);\n });\n _this.leftGuard = document.createTextNode(GUARD_TEXT);\n _this.rightGuard = document.createTextNode(GUARD_TEXT);\n\n _this.domNode.appendChild(_this.leftGuard);\n\n _this.domNode.appendChild(_this.contentNode);\n\n _this.domNode.appendChild(_this.rightGuard);\n\n return _this;\n }\n\n _createClass(Embed, [{\n key: 'index',\n value: function index(node, offset) {\n if (node === this.leftGuard) return 0;\n if (node === this.rightGuard) return 1;\n return _get(Embed.prototype.__proto__ || Object.getPrototypeOf(Embed.prototype), 'index', this).call(this, node, offset);\n }\n }, {\n key: 'restore',\n value: function restore(node) {\n var range = void 0,\n textNode = void 0;\n var text = node.data.split(GUARD_TEXT).join('');\n\n if (node === this.leftGuard) {\n if (this.prev instanceof _text2[\"default\"]) {\n var prevLength = this.prev.length();\n this.prev.insertAt(prevLength, text);\n range = {\n startNode: this.prev.domNode,\n startOffset: prevLength + text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2[\"default\"].create(textNode), this);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n } else if (node === this.rightGuard) {\n if (this.next instanceof _text2[\"default\"]) {\n this.next.insertAt(0, text);\n range = {\n startNode: this.next.domNode,\n startOffset: text.length\n };\n } else {\n textNode = document.createTextNode(text);\n this.parent.insertBefore(_parchment2[\"default\"].create(textNode), this.next);\n range = {\n startNode: textNode,\n startOffset: text.length\n };\n }\n }\n\n node.data = GUARD_TEXT;\n return range;\n }\n }, {\n key: 'update',\n value: function update(mutations, context) {\n var _this2 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && (mutation.target === _this2.leftGuard || mutation.target === _this2.rightGuard)) {\n var range = _this2.restore(mutation.target);\n\n if (range) context.range = range;\n }\n });\n }\n }]);\n\n return Embed;\n }(_parchment2[\"default\"].Embed);\n\n exports[\"default\"] = Embed;\n /***/\n },\n /* 36 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n var config = {\n scope: _parchment2[\"default\"].Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n };\n var AlignAttribute = new _parchment2[\"default\"].Attributor.Attribute('align', 'align', config);\n var AlignClass = new _parchment2[\"default\"].Attributor.Class('align', 'ql-align', config);\n var AlignStyle = new _parchment2[\"default\"].Attributor.Style('align', 'text-align', config);\n exports.AlignAttribute = AlignAttribute;\n exports.AlignClass = AlignClass;\n exports.AlignStyle = AlignStyle;\n /***/\n },\n /* 37 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.BackgroundStyle = exports.BackgroundClass = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _color = __webpack_require__(26);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n var BackgroundClass = new _parchment2[\"default\"].Attributor.Class('background', 'ql-bg', {\n scope: _parchment2[\"default\"].Scope.INLINE\n });\n var BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2[\"default\"].Scope.INLINE\n });\n exports.BackgroundClass = BackgroundClass;\n exports.BackgroundStyle = BackgroundStyle;\n /***/\n },\n /* 38 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n var config = {\n scope: _parchment2[\"default\"].Scope.BLOCK,\n whitelist: ['rtl']\n };\n var DirectionAttribute = new _parchment2[\"default\"].Attributor.Attribute('direction', 'dir', config);\n var DirectionClass = new _parchment2[\"default\"].Attributor.Class('direction', 'ql-direction', config);\n var DirectionStyle = new _parchment2[\"default\"].Attributor.Style('direction', 'direction', config);\n exports.DirectionAttribute = DirectionAttribute;\n exports.DirectionClass = DirectionClass;\n exports.DirectionStyle = DirectionStyle;\n /***/\n },\n /* 39 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.FontClass = exports.FontStyle = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var config = {\n scope: _parchment2[\"default\"].Scope.INLINE,\n whitelist: ['serif', 'monospace']\n };\n var FontClass = new _parchment2[\"default\"].Attributor.Class('font', 'ql-font', config);\n\n var FontStyleAttributor = function (_Parchment$Attributor) {\n _inherits(FontStyleAttributor, _Parchment$Attributor);\n\n function FontStyleAttributor() {\n _classCallCheck(this, FontStyleAttributor);\n\n return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n }\n\n _createClass(FontStyleAttributor, [{\n key: 'value',\n value: function value(node) {\n return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n }\n }]);\n\n return FontStyleAttributor;\n }(_parchment2[\"default\"].Attributor.Style);\n\n var FontStyle = new FontStyleAttributor('font', 'font-family', config);\n exports.FontStyle = FontStyle;\n exports.FontClass = FontClass;\n /***/\n },\n /* 40 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.SizeStyle = exports.SizeClass = undefined;\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n var SizeClass = new _parchment2[\"default\"].Attributor.Class('size', 'ql-size', {\n scope: _parchment2[\"default\"].Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n });\n var SizeStyle = new _parchment2[\"default\"].Attributor.Style('size', 'font-size', {\n scope: _parchment2[\"default\"].Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n });\n exports.SizeClass = SizeClass;\n exports.SizeStyle = SizeStyle;\n /***/\n },\n /* 41 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n module.exports = {\n 'align': {\n '': __webpack_require__(76),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(78),\n 'justify': __webpack_require__(79)\n },\n 'background': __webpack_require__(80),\n 'blockquote': __webpack_require__(81),\n 'bold': __webpack_require__(82),\n 'clean': __webpack_require__(83),\n 'code': __webpack_require__(58),\n 'code-block': __webpack_require__(58),\n 'color': __webpack_require__(84),\n 'direction': {\n '': __webpack_require__(85),\n 'rtl': __webpack_require__(86)\n },\n 'float': {\n 'center': __webpack_require__(87),\n 'full': __webpack_require__(88),\n 'left': __webpack_require__(89),\n 'right': __webpack_require__(90)\n },\n 'formula': __webpack_require__(91),\n 'header': {\n '1': __webpack_require__(92),\n '2': __webpack_require__(93)\n },\n 'italic': __webpack_require__(94),\n 'image': __webpack_require__(95),\n 'indent': {\n '+1': __webpack_require__(96),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(98),\n 'list': {\n 'ordered': __webpack_require__(99),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(102),\n 'super': __webpack_require__(103)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(105),\n 'video': __webpack_require__(106)\n };\n /***/\n },\n /* 42 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.getLastChangeIndex = exports[\"default\"] = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var History = function (_Module) {\n _inherits(History, _Module);\n\n function History(quill, options) {\n _classCallCheck(this, History);\n\n var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\n _this.lastRecorded = 0;\n _this.ignoreChange = false;\n\n _this.clear();\n\n _this.quill.on(_quill2[\"default\"].events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n if (eventName !== _quill2[\"default\"].events.TEXT_CHANGE || _this.ignoreChange) return;\n\n if (!_this.options.userOnly || source === _quill2[\"default\"].sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n\n _this.quill.keyboard.addBinding({\n key: 'Z',\n shortKey: true\n }, _this.undo.bind(_this));\n\n _this.quill.keyboard.addBinding({\n key: 'Z',\n shortKey: true,\n shiftKey: true\n }, _this.redo.bind(_this));\n\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({\n key: 'Y',\n shortKey: true\n }, _this.redo.bind(_this));\n }\n\n return _this;\n }\n\n _createClass(History, [{\n key: 'change',\n value: function change(source, dest) {\n if (this.stack[source].length === 0) return;\n var delta = this.stack[source].pop();\n this.stack[dest].push(delta);\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], _quill2[\"default\"].sources.USER);\n this.ignoreChange = false;\n var index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = {\n undo: [],\n redo: []\n };\n }\n }, {\n key: 'cutoff',\n value: function cutoff() {\n this.lastRecorded = 0;\n }\n }, {\n key: 'record',\n value: function record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n var undoDelta = this.quill.getContents().diff(oldDelta);\n var timestamp = Date.now();\n\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n var delta = this.stack.undo.pop();\n undoDelta = undoDelta.compose(delta.undo);\n changeDelta = delta.redo.compose(changeDelta);\n } else {\n this.lastRecorded = timestamp;\n }\n\n this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\n });\n\n if (this.stack.undo.length > this.options.maxStack) {\n this.stack.undo.shift();\n }\n }\n }, {\n key: 'redo',\n value: function redo() {\n this.change('redo', 'undo');\n }\n }, {\n key: 'transform',\n value: function transform(delta) {\n this.stack.undo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n this.stack.redo.forEach(function (change) {\n change.undo = delta.transform(change.undo, true);\n change.redo = delta.transform(change.redo, true);\n });\n }\n }, {\n key: 'undo',\n value: function undo() {\n this.change('undo', 'redo');\n }\n }]);\n\n return History;\n }(_module2[\"default\"]);\n\n History.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n };\n\n function endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n }\n\n if (lastOp.attributes != null) {\n return Object.keys(lastOp.attributes).some(function (attr) {\n return _parchment2[\"default\"].query(attr, _parchment2[\"default\"].Scope.BLOCK) != null;\n });\n }\n\n return false;\n }\n\n function getLastChangeIndex(delta) {\n var deleteLength = delta.reduce(function (length, op) {\n length += op[\"delete\"] || 0;\n return length;\n }, 0);\n var changeIndex = delta.length() - deleteLength;\n\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n\n return changeIndex;\n }\n\n exports[\"default\"] = History;\n exports.getLastChangeIndex = getLastChangeIndex;\n /***/\n },\n /* 43 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.BaseTooltip = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _keyboard = __webpack_require__(23);\n\n var _keyboard2 = _interopRequireDefault(_keyboard);\n\n var _theme = __webpack_require__(34);\n\n var _theme2 = _interopRequireDefault(_theme);\n\n var _colorPicker = __webpack_require__(59);\n\n var _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n var _iconPicker = __webpack_require__(60);\n\n var _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n var _tooltip = __webpack_require__(61);\n\n var _tooltip2 = _interopRequireDefault(_tooltip);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ALIGNS = [false, 'center', 'right', 'justify'];\n var COLORS = [\"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\", \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\", \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\", \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\", \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"];\n var FONTS = [false, 'serif', 'monospace'];\n var HEADERS = ['1', '2', '3', false];\n var SIZES = ['small', false, 'large', 'huge'];\n\n var BaseTheme = function (_Theme) {\n _inherits(BaseTheme, _Theme);\n\n function BaseTheme(quill, options) {\n _classCallCheck(this, BaseTheme);\n\n var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\n var listener = function listener(e) {\n if (!document.body.contains(quill.root)) {\n return document.body.removeEventListener('click', listener);\n }\n\n if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\n }\n\n if (_this.pickers != null) {\n _this.pickers.forEach(function (picker) {\n if (!picker.container.contains(e.target)) {\n picker.close();\n }\n });\n }\n };\n\n quill.emitter.listenDOM('click', document.body, listener);\n return _this;\n }\n\n _createClass(BaseTheme, [{\n key: 'addModule',\n value: function addModule(name) {\n var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n\n return module;\n }\n }, {\n key: 'buildButtons',\n value: function buildButtons(buttons, icons) {\n buttons.forEach(function (button) {\n var className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach(function (name) {\n if (!name.startsWith('ql-')) return;\n name = name.slice('ql-'.length);\n if (icons[name] == null) return;\n\n if (name === 'direction') {\n button.innerHTML = icons[name][''] + icons[name]['rtl'];\n } else if (typeof icons[name] === 'string') {\n button.innerHTML = icons[name];\n } else {\n var value = button.value || '';\n\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n }, {\n key: 'buildPickers',\n value: function buildPickers(selects, icons) {\n var _this2 = this;\n\n this.pickers = selects.map(function (select) {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n\n return new _iconPicker2[\"default\"](select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\n if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n }\n\n return new _colorPicker2[\"default\"](select, icons[format]);\n } else {\n if (select.querySelector('option') == null) {\n if (select.classList.contains('ql-font')) {\n fillSelect(select, FONTS);\n } else if (select.classList.contains('ql-header')) {\n fillSelect(select, HEADERS);\n } else if (select.classList.contains('ql-size')) {\n fillSelect(select, SIZES);\n }\n }\n\n return new _picker2[\"default\"](select);\n }\n });\n\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n\n this.quill.on(_emitter2[\"default\"].events.EDITOR_CHANGE, update);\n }\n }]);\n\n return BaseTheme;\n }(_theme2[\"default\"]);\n\n BaseTheme.DEFAULTS = (0, _extend2[\"default\"])(true, {}, _theme2[\"default\"].DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function formula() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function image() {\n var _this3 = this;\n\n var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\n if (fileInput == null) {\n fileInput = document.createElement('input');\n fileInput.setAttribute('type', 'file');\n fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n\n _this3.quill.updateContents(new _quillDelta2[\"default\"]().retain(range.index)[\"delete\"](range.length).insert({\n image: e.target.result\n }), _emitter2[\"default\"].sources.USER);\n\n _this3.quill.setSelection(range.index + 1, _emitter2[\"default\"].sources.SILENT);\n\n fileInput.value = \"\";\n };\n\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n });\n\n var BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\n _this4.listen();\n\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2[\"default\"].match(event, 'enter')) {\n _this5.save();\n\n event.preventDefault();\n } else if (_keyboard2[\"default\"].match(event, 'escape')) {\n _this5.cancel();\n\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2[\"default\"].sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2[\"default\"].sources.USER);\n }\n\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n\n case 'video':\n {\n value = extractVideoUrl(value);\n }\n // eslint-disable-next-line no-fallthrough\n\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n\n if (range != null) {\n var index = range.index + range.length;\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2[\"default\"].sources.USER);\n\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2[\"default\"].sources.USER);\n }\n\n this.quill.setSelection(index + 2, _emitter2[\"default\"].sources.USER);\n }\n\n break;\n }\n\n default:\n }\n\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n }(_tooltip2[\"default\"]);\n\n function extractVideoUrl(url) {\n var match = url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || url.match(/^(?:(https?):\\/\\/)?(?:(?:www|m)\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n\n if (match) {\n return (match[1] || 'https') + '://www.youtube.com/embed/' + match[2] + '?showinfo=0';\n }\n\n if (match = url.match(/^(?:(https?):\\/\\/)?(?:www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n return (match[1] || 'https') + '://player.vimeo.com/video/' + match[2] + '/';\n }\n\n return url;\n }\n\n function fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n values.forEach(function (value) {\n var option = document.createElement('option');\n\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n\n select.appendChild(option);\n });\n }\n\n exports.BaseTooltip = BaseTooltip;\n exports[\"default\"] = BaseTheme;\n /***/\n },\n /* 44 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var LinkedList =\n /** @class */\n function () {\n function LinkedList() {\n this.head = this.tail = null;\n this.length = 0;\n }\n\n LinkedList.prototype.append = function () {\n var nodes = [];\n\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n\n this.insertBefore(nodes[0], null);\n\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n\n LinkedList.prototype.contains = function (node) {\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n if (cur === node) return true;\n }\n\n return false;\n };\n\n LinkedList.prototype.insertBefore = function (node, refNode) {\n if (!node) return;\n node.next = refNode;\n\n if (refNode != null) {\n node.prev = refNode.prev;\n\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n\n refNode.prev = node;\n\n if (refNode === this.head) {\n this.head = node;\n }\n } else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n } else {\n node.prev = null;\n this.head = this.tail = node;\n }\n\n this.length += 1;\n };\n\n LinkedList.prototype.offset = function (target) {\n var index = 0,\n cur = this.head;\n\n while (cur != null) {\n if (cur === target) return index;\n index += cur.length();\n cur = cur.next;\n }\n\n return -1;\n };\n\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node)) return;\n if (node.prev != null) node.prev.next = node.next;\n if (node.next != null) node.next.prev = node.prev;\n if (node === this.head) this.head = node.next;\n if (node === this.tail) this.tail = node.prev;\n this.length -= 1;\n };\n\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) {\n curNode = this.head;\n } // TODO use yield when we can\n\n\n return function () {\n var ret = curNode;\n if (curNode != null) curNode = curNode.next;\n return ret;\n };\n };\n\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n var length = cur.length();\n\n if (index < length || inclusive && index === length && (cur.next == null || cur.next.length() !== 0)) {\n return [cur, index];\n }\n\n index -= length;\n }\n\n return [null, 0];\n };\n\n LinkedList.prototype.forEach = function (callback) {\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n callback(cur);\n }\n };\n\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0) return;\n\n var _a = this.find(index),\n startNode = _a[0],\n offset = _a[1];\n\n var cur,\n curIndex = index - offset,\n next = this.iterator(startNode);\n\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n } else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n\n curIndex += curLength;\n }\n };\n\n LinkedList.prototype.map = function (callback) {\n return this.reduce(function (memo, cur) {\n memo.push(callback(cur));\n return memo;\n }, []);\n };\n\n LinkedList.prototype.reduce = function (callback, memo) {\n var cur,\n next = this.iterator();\n\n while (cur = next()) {\n memo = callback(memo, cur);\n }\n\n return memo;\n };\n\n return LinkedList;\n }();\n\n exports[\"default\"] = LinkedList;\n /***/\n },\n /* 45 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var container_1 = __webpack_require__(17);\n\n var Registry = __webpack_require__(1);\n\n var OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n };\n var MAX_OPTIMIZE_ITERATIONS = 100;\n\n var ScrollBlot =\n /** @class */\n function (_super) {\n __extends(ScrollBlot, _super);\n\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n\n _this.scroll = _this;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\n _this.attach();\n\n return _this;\n }\n\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n\n this.observer.disconnect();\n };\n\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n } else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n\n _super.prototype.insertAt.call(this, index, value, def);\n };\n\n ScrollBlot.prototype.optimize = function (mutations, context) {\n var _this = this;\n\n if (mutations === void 0) {\n mutations = [];\n }\n\n if (context === void 0) {\n context = {};\n }\n\n _super.prototype.optimize.call(this, context); // We must modify mutations directly, cannot make copy and then modify\n\n\n var records = [].slice.call(this.observer.takeRecords()); // Array.push currently seems to be implemented by a non-tail recursive function\n // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\n while (records.length > 0) {\n mutations.push(records.pop());\n } // TODO use WeakMap\n\n\n var mark = function mark(blot, markParent) {\n if (markParent === void 0) {\n markParent = true;\n }\n\n if (blot == null || blot === _this) return;\n if (blot.domNode.parentNode == null) return; // @ts-ignore\n\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n\n if (markParent) mark(blot.parent);\n };\n\n var optimize = function optimize(blot) {\n // Post-order traversal\n if ( // @ts-ignore\n blot.domNode[Registry.DATA_KEY] == null || // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n\n if (blot instanceof container_1[\"default\"]) {\n blot.children.forEach(optimize);\n }\n\n blot.optimize(context);\n };\n\n var remaining = mutations;\n\n for (var i = 0; remaining.length > 0; i += 1) {\n if (i >= MAX_OPTIMIZE_ITERATIONS) {\n throw new Error('[Parchment] Maximum optimize iterations reached');\n }\n\n remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null) return;\n\n if (blot.domNode === mutation.target) {\n if (mutation.type === 'childList') {\n mark(Registry.find(mutation.previousSibling, false));\n [].forEach.call(mutation.addedNodes, function (node) {\n var child = Registry.find(node, false);\n mark(child, false);\n\n if (child instanceof container_1[\"default\"]) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n } else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n\n while (records.length > 0) {\n mutations.push(records.pop());\n }\n }\n };\n\n ScrollBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n if (context === void 0) {\n context = {};\n }\n\n mutations = mutations || this.observer.takeRecords(); // TODO use WeakMap\n\n mutations.map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null) return null; // @ts-ignore\n\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n } else {\n // @ts-ignore\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n }).forEach(function (blot) {\n if (blot == null || blot === _this || //@ts-ignore\n blot.domNode[Registry.DATA_KEY] == null) return; // @ts-ignore\n\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || [], context);\n }); // @ts-ignore\n\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n // @ts-ignore\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations, context);\n }\n\n this.optimize(mutations, context);\n };\n\n ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n }(container_1[\"default\"]);\n\n exports[\"default\"] = ScrollBlot;\n /***/\n },\n /* 46 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var format_1 = __webpack_require__(18);\n\n var Registry = __webpack_require__(1); // Shallow object comparison\n\n\n function isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length) return false; // @ts-ignore\n\n for (var prop in obj1) {\n // @ts-ignore\n if (obj1[prop] !== obj2[prop]) return false;\n }\n\n return true;\n }\n\n var InlineBlot =\n /** @class */\n function (_super) {\n __extends(InlineBlot, _super);\n\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName) return undefined;\n return _super.formats.call(this, domNode);\n };\n\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\n\n if (name === this.statics.blotName && !value) {\n this.children.forEach(function (child) {\n if (!(child instanceof format_1[\"default\"])) {\n child = child.wrap(InlineBlot.blotName, true);\n }\n\n _this.attributes.copy(child);\n });\n this.unwrap();\n } else {\n _super.prototype.format.call(this, name, value);\n }\n };\n\n InlineBlot.prototype.formatAt = function (index, length, name, value) {\n if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n var blot = this.isolate(index, length);\n blot.format(name, value);\n } else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n\n InlineBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n\n var formats = this.formats();\n\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n\n var next = this.next;\n\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n\n InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n }(format_1[\"default\"]);\n\n exports[\"default\"] = InlineBlot;\n /***/\n },\n /* 47 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var format_1 = __webpack_require__(18);\n\n var Registry = __webpack_require__(1);\n\n var BlockBlot =\n /** @class */\n function (_super) {\n __extends(BlockBlot, _super);\n\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName) return undefined;\n return _super.formats.call(this, domNode);\n };\n\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n } else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n } else {\n _super.prototype.format.call(this, name, value);\n }\n };\n\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n } else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n } else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n\n BlockBlot.prototype.update = function (mutations, context) {\n if (navigator.userAgent.match(/Trident/)) {\n this.build();\n } else {\n _super.prototype.update.call(this, mutations, context);\n }\n };\n\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n }(format_1[\"default\"]);\n\n exports[\"default\"] = BlockBlot;\n /***/\n },\n /* 48 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var leaf_1 = __webpack_require__(19);\n\n var EmbedBlot =\n /** @class */\n function (_super) {\n __extends(EmbedBlot, _super);\n\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n\n EmbedBlot.formats = function (domNode) {\n return undefined;\n };\n\n EmbedBlot.prototype.format = function (name, value) {\n // super.formatAt wraps, which is what we want in general,\n // but this allows subclasses to overwrite for formats\n // that just apply to particular embeds\n _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n };\n\n EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n } else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n\n return EmbedBlot;\n }(leaf_1[\"default\"]);\n\n exports[\"default\"] = EmbedBlot;\n /***/\n },\n /* 49 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var __extends = this && this.__extends || function () {\n var extendStatics = Object.setPrototypeOf || {\n __proto__: []\n } instanceof Array && function (d, b) {\n d.__proto__ = b;\n } || function (d, b) {\n for (var p in b) {\n if (b.hasOwnProperty(p)) d[p] = b[p];\n }\n };\n\n return function (d, b) {\n extendStatics(d, b);\n\n function __() {\n this.constructor = d;\n }\n\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n }();\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var leaf_1 = __webpack_require__(19);\n\n var Registry = __webpack_require__(1);\n\n var TextBlot =\n /** @class */\n function (_super) {\n __extends(TextBlot, _super);\n\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n\n TextBlot.value = function (domNode) {\n var text = domNode.data; // @ts-ignore\n\n if (text['normalize']) text = text['normalize']();\n return text;\n };\n\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n\n return -1;\n };\n\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n } else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n\n TextBlot.prototype.optimize = function (context) {\n _super.prototype.optimize.call(this, context);\n\n this.text = this.statics.value(this.domNode);\n\n if (this.text.length === 0) {\n this.remove();\n } else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) {\n inclusive = false;\n }\n\n return [this.domNode, index];\n };\n\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) {\n force = false;\n }\n\n if (!force) {\n if (index === 0) return this;\n if (index === this.length()) return this.next;\n }\n\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n\n TextBlot.prototype.update = function (mutations, context) {\n var _this = this;\n\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n\n TextBlot.prototype.value = function () {\n return this.text;\n };\n\n TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n }(leaf_1[\"default\"]);\n\n exports[\"default\"] = TextBlot;\n /***/\n },\n /* 50 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n var elem = document.createElement('div');\n elem.classList.toggle('test-class', false);\n\n if (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\n\n DOMTokenList.prototype.toggle = function (token, force) {\n if (arguments.length > 1 && !this.contains(token) === !force) {\n return force;\n } else {\n return _toggle.call(this, token);\n }\n };\n }\n\n if (!String.prototype.startsWith) {\n String.prototype.startsWith = function (searchString, position) {\n position = position || 0;\n return this.substr(position, searchString.length) === searchString;\n };\n }\n\n if (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n }\n\n if (!Array.prototype.find) {\n Object.defineProperty(Array.prototype, \"find\", {\n value: function value(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined');\n }\n\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\n }\n\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n\n if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n\n return undefined;\n }\n });\n }\n\n document.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false); // Disable automatic linkifying in IE11\n\n document.execCommand(\"autoUrlDetect\", false, false);\n });\n /***/\n },\n /* 51 */\n\n /***/\n function (module, exports) {\n /**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n /**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\n var DIFF_DELETE = -1;\n var DIFF_INSERT = 1;\n var DIFF_EQUAL = 0;\n /**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {Int} cursor_pos Expected edit position in text1 (optional)\n * @return {Array} Array of diff tuples.\n */\n\n function diff_main(text1, text2, cursor_pos) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n\n return [];\n } // Check cursor_pos within bounds\n\n\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n } // Trim off common prefix (speedup).\n\n\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength); // Trim off common suffix (speedup).\n\n commonlength = diff_commonSuffix(text1, text2);\n var commonsuffix = text1.substring(text1.length - commonlength);\n text1 = text1.substring(0, text1.length - commonlength);\n text2 = text2.substring(0, text2.length - commonlength); // Compute the diff on the middle block.\n\n var diffs = diff_compute_(text1, text2); // Restore the prefix and suffix.\n\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n\n diff_cleanupMerge(diffs);\n\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\n\n diffs = fix_emoji(diffs);\n return diffs;\n }\n\n ;\n /**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\n\n function diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)], [DIFF_EQUAL, shorttext], [DIFF_INSERT, longtext.substring(i + shorttext.length)]]; // Swap insertions for deletions if diff is reversed.\n\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n } // Check to see if the problem can be split in two.\n\n\n var hm = diff_halfMatch_(text1, text2);\n\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4]; // Send both pairs off for separate processing.\n\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b); // Merge the results.\n\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n }\n\n ;\n /**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\n\n function diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length); // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length; // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n\n var front = delta % 2 != 0; // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n\n if (k1 == -d || k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1]) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n\n var y1 = x1 - k1;\n\n while (x1 < text1_length && y1 < text2_length && text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n\n v1[k1_offset] = x1;\n\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n } // Walk the reverse path one step.\n\n\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n\n if (k2 == -d || k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1]) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n\n var y2 = x2 - k2;\n\n while (x2 < text1_length && y2 < text2_length && text1.charAt(text1_length - x2 - 1) == text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n\n v2[k2_offset] = x2;\n\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset; // Mirror x2 onto top-left coordinate system.\n\n x2 = text1_length - x2;\n\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n } // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n\n\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n ;\n /**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\n\n function diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y); // Compute both diffs serially.\n\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n return diffs.concat(diffsb);\n }\n\n ;\n /**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\n\n function diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n } // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\n\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) == text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n return pointermid;\n }\n\n ;\n /**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\n\n function diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n } // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\n\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) == text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n\n return pointermid;\n }\n\n ;\n /**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\n\n function diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n\n\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i), shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i), shorttext.substring(0, j));\n\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) + shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n } // First check if the second quarter is the seed for a half-match.\n\n\n var hm1 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 4)); // Check again based on the third quarter.\n\n var hm2 = diff_halfMatchI_(longtext, shorttext, Math.ceil(longtext.length / 2));\n var hm;\n\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n } // A half-match was found, sort out the return data.\n\n\n var text1_a, text1_b, text2_a, text2_b;\n\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n }\n\n ;\n /**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\n\n function diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n\n if (commonlength !== 0) {\n if (pointer - count_delete - count_insert > 0 && diffs[pointer - count_delete - count_insert - 1][0] == DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] += text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL, text_insert.substring(0, commonlength)]);\n pointer++;\n }\n\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n } // Factor out any common suffixies.\n\n\n commonlength = diff_commonSuffix(text_insert, text_delete);\n\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length - commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length - commonlength);\n text_delete = text_delete.substring(0, text_delete.length - commonlength);\n }\n } // Delete the offending records and add the merged ones.\n\n\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert, count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete, count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert, count_delete + count_insert, [DIFF_DELETE, text_delete], [DIFF_INSERT, text_insert]);\n }\n\n pointer = pointer - count_delete - count_insert + (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n } // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n\n\n var changes = false;\n pointer = 1; // Intentionally ignore the first and last element (don't need checking).\n\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL && diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length - diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] + diffs[pointer][1].substring(0, diffs[pointer][1].length - diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) == diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] = diffs[pointer][1].substring(diffs[pointer + 1][1].length) + diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n\n pointer++;\n } // If shifts were made, the diff needs reordering and another shift sweep.\n\n\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n }\n\n ;\n var diff = diff_main;\n diff.INSERT = DIFF_INSERT;\n diff.DELETE = DIFF_DELETE;\n diff.EQUAL = DIFF_EQUAL;\n module.exports = diff;\n /*\n * Modify a diff such that the cursor position points to the start of a change:\n * E.g.\n * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n */\n\n function cursor_normalize_diff(diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\n\n if (cursor_pos === next_pos) {\n return [i + 1, diffs];\n } else if (cursor_pos < next_pos) {\n // copy to prevent side effects\n diffs = diffs.slice(); // split d into two diff changes\n\n var split_pos = cursor_pos - current_pos;\n var d_left = [d[0], d[1].slice(0, split_pos)];\n var d_right = [d[0], d[1].slice(split_pos)];\n diffs.splice(i, 1, d_left, d_right);\n return [i + 1, diffs];\n } else {\n current_pos = next_pos;\n }\n }\n }\n\n throw new Error('cursor_pos is out of bounds!');\n }\n /*\n * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n *\n * Case 1)\n * Check if a naive shift is possible:\n * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n * Case 2)\n * Check if the following shifts are possible:\n * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n * ^ ^\n * d d_next\n *\n * @param {Array} diffs Array of diff tuples\n * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n * @return {Array} Array of diff tuples\n */\n\n\n function fix_cursor(diffs, cursor_pos) {\n var norm = cursor_normalize_diff(diffs, cursor_pos);\n var ndiffs = norm[1];\n var cursor_pointer = norm[0];\n var d = ndiffs[cursor_pointer];\n var d_next = ndiffs[cursor_pointer + 1];\n\n if (d == null) {\n // Text was deleted from end of original string,\n // cursor is now out of bounds in new string\n return diffs;\n } else if (d[0] !== DIFF_EQUAL) {\n // A modification happened at the cursor location.\n // This is the expected outcome, so we can return the original diff.\n return diffs;\n } else {\n if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n // Case 1)\n // It is possible to perform a naive shift\n ndiffs.splice(cursor_pointer, 2, d_next, d);\n return merge_tuples(ndiffs, cursor_pointer, 2);\n } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n // Case 2)\n // d[1] is a prefix of d_next[1]\n // We can assume that d_next[0] !== 0, since d[0] === 0\n // Shift edit locations..\n ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n var suffix = d_next[1].slice(d[1].length);\n\n if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n }\n\n return merge_tuples(ndiffs, cursor_pointer, 3);\n } else {\n // Not possible to perform any modification\n return diffs;\n }\n }\n }\n /*\n * Check diff did not split surrogate pairs.\n * Ex. [0, '\\uD83D'], [-1, '\\uDC36'], [1, '\\uDC2F'] -> [-1, '\\uD83D\\uDC36'], [1, '\\uD83D\\uDC2F']\n * '\\uD83D\\uDC36' === '🐶', '\\uD83D\\uDC2F' === '🐯'\n *\n * @param {Array} diffs Array of diff tuples\n * @return {Array} Array of diff tuples\n */\n\n\n function fix_emoji(diffs) {\n var compact = false;\n\n var starts_with_pair_end = function starts_with_pair_end(str) {\n return str.charCodeAt(0) >= 0xDC00 && str.charCodeAt(0) <= 0xDFFF;\n };\n\n var ends_with_pair_start = function ends_with_pair_start(str) {\n return str.charCodeAt(str.length - 1) >= 0xD800 && str.charCodeAt(str.length - 1) <= 0xDBFF;\n };\n\n for (var i = 2; i < diffs.length; i += 1) {\n if (diffs[i - 2][0] === DIFF_EQUAL && ends_with_pair_start(diffs[i - 2][1]) && diffs[i - 1][0] === DIFF_DELETE && starts_with_pair_end(diffs[i - 1][1]) && diffs[i][0] === DIFF_INSERT && starts_with_pair_end(diffs[i][1])) {\n compact = true;\n diffs[i - 1][1] = diffs[i - 2][1].slice(-1) + diffs[i - 1][1];\n diffs[i][1] = diffs[i - 2][1].slice(-1) + diffs[i][1];\n diffs[i - 2][1] = diffs[i - 2][1].slice(0, -1);\n }\n }\n\n if (!compact) {\n return diffs;\n }\n\n var fixed_diffs = [];\n\n for (var i = 0; i < diffs.length; i += 1) {\n if (diffs[i][1].length > 0) {\n fixed_diffs.push(diffs[i]);\n }\n }\n\n return fixed_diffs;\n }\n /*\n * Try to merge tuples with their neigbors in a given range.\n * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n *\n * @param {Array} diffs Array of diff tuples.\n * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n * @param {Int} length Number of consecutive elements to check.\n * @return {Array} Array of merged diff tuples.\n */\n\n\n function merge_tuples(diffs, start, length) {\n // Check from (start-1) to (start+length).\n for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n if (i + 1 < diffs.length) {\n var left_d = diffs[i];\n var right_d = diffs[i + 1];\n\n if (left_d[0] === right_d[1]) {\n diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n }\n }\n }\n\n return diffs;\n }\n /***/\n\n },\n /* 52 */\n\n /***/\n function (module, exports) {\n exports = module.exports = typeof Object.keys === 'function' ? Object.keys : shim;\n exports.shim = shim;\n\n function shim(obj) {\n var keys = [];\n\n for (var key in obj) {\n keys.push(key);\n }\n\n return keys;\n }\n /***/\n\n },\n /* 53 */\n\n /***/\n function (module, exports) {\n var supportsArgumentsClass = function () {\n return Object.prototype.toString.call(arguments);\n }() == '[object Arguments]';\n\n exports = module.exports = supportsArgumentsClass ? supported : unsupported;\n exports.supported = supported;\n\n function supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n }\n\n ;\n exports.unsupported = unsupported;\n\n function unsupported(object) {\n return object && typeof object == 'object' && typeof object.length == 'number' && Object.prototype.hasOwnProperty.call(object, 'callee') && !Object.prototype.propertyIsEnumerable.call(object, 'callee') || false;\n }\n\n ;\n /***/\n },\n /* 54 */\n\n /***/\n function (module, exports) {\n 'use strict';\n\n var has = Object.prototype.hasOwnProperty,\n prefix = '~';\n /**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @api private\n */\n\n function Events() {} //\n // We try to not inherit from `Object.prototype`. In some engines creating an\n // instance in this way is faster than calling `Object.create(null)` directly.\n // If `Object.create(null)` is not supported we prefix the event names with a\n // character to make sure that the built-in object properties are not\n // overridden or used as an attack vector.\n //\n\n\n if (Object.create) {\n Events.prototype = Object.create(null); //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n\n if (!new Events().__proto__) prefix = false;\n }\n /**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {Mixed} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @api private\n */\n\n\n function EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n }\n /**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\n\n\n function EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n }\n /**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @api public\n */\n\n\n EventEmitter.prototype.eventNames = function eventNames() {\n var names = [],\n events,\n name;\n if (this._eventsCount === 0) return names;\n\n for (name in events = this._events) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n };\n /**\n * Return the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Boolean} exists Only check if there are listeners.\n * @returns {Array|Boolean}\n * @api public\n */\n\n\n EventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event,\n available = this._events[evt];\n if (exists) return !!available;\n if (!available) return [];\n if (available.fn) return [available.fn];\n\n for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n ee[i] = available[i].fn;\n }\n\n return ee;\n };\n /**\n * Calls each of the listeners registered for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @api public\n */\n\n\n EventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return false;\n var listeners = this._events[evt],\n len = arguments.length,\n args,\n i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1:\n return listeners.fn.call(listeners.context), true;\n\n case 2:\n return listeners.fn.call(listeners.context, a1), true;\n\n case 3:\n return listeners.fn.call(listeners.context, a1, a2), true;\n\n case 4:\n return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\n case 5:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\n case 6:\n return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len - 1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length,\n j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1:\n listeners[i].fn.call(listeners[i].context);\n break;\n\n case 2:\n listeners[i].fn.call(listeners[i].context, a1);\n break;\n\n case 3:\n listeners[i].fn.call(listeners[i].context, a1, a2);\n break;\n\n case 4:\n listeners[i].fn.call(listeners[i].context, a1, a2, a3);\n break;\n\n default:\n if (!args) for (j = 1, args = new Array(len - 1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n };\n /**\n * Add a listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this),\n evt = prefix ? prefix + event : event;\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;else if (!this._events[evt].fn) this._events[evt].push(listener);else this._events[evt] = [this._events[evt], listener];\n return this;\n };\n /**\n * Add a one-time listener for a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn The listener function.\n * @param {Mixed} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true),\n evt = prefix ? prefix + event : event;\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;else if (!this._events[evt].fn) this._events[evt].push(listener);else this._events[evt] = [this._events[evt], listener];\n return this;\n };\n /**\n * Remove the listeners of a given event.\n *\n * @param {String|Symbol} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {Mixed} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n if (!this._events[evt]) return this;\n\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (listeners.fn === fn && (!once || listeners.once) && (!context || listeners.context === context)) {\n if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (listeners[i].fn !== fn || once && !listeners[i].once || context && listeners[i].context !== context) {\n events.push(listeners[i]);\n }\n } //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n\n\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;else if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n }\n\n return this;\n };\n /**\n * Remove all listeners, or those of the specified event.\n *\n * @param {String|Symbol} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @api public\n */\n\n\n EventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n }; //\n // Alias methods names because people roll like that.\n //\n\n\n EventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n EventEmitter.prototype.addListener = EventEmitter.prototype.on; //\n // This function doesn't apply anymore.\n //\n\n EventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n }; //\n // Expose the prefix.\n //\n\n\n EventEmitter.prefixed = prefix; //\n // Allow `EventEmitter` to be imported as module namespace.\n //\n\n EventEmitter.EventEmitter = EventEmitter; //\n // Expose the module.\n //\n\n if ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n }\n /***/\n\n },\n /* 55 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports[\"default\"] = undefined;\n\n var _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n };\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extend2 = __webpack_require__(3);\n\n var _extend3 = _interopRequireDefault(_extend2);\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n var _align = __webpack_require__(36);\n\n var _background = __webpack_require__(37);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _color = __webpack_require__(26);\n\n var _direction = __webpack_require__(38);\n\n var _font = __webpack_require__(39);\n\n var _size = __webpack_require__(40);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2[\"default\"])('quill:clipboard');\n var DOM_KEY = '__ql-matcher';\n var CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n var ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n }, {});\n var STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n }, {});\n\n var Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\n _this.container = _this.quill.addContainer('ql-clipboard');\n\n _this.container.setAttribute('contenteditable', true);\n\n _this.container.setAttribute('tabindex', -1);\n\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (_ref) {\n var _ref2 = _slicedToArray(_ref, 2),\n selector = _ref2[0],\n matcher = _ref2[1];\n\n if (!options.matchVisual && matcher === matchSpacing) return;\n\n _this.addMatcher(selector, matcher);\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n\n return this.convert();\n }\n\n var formats = this.quill.getFormat(this.quill.selection.savedRange.index);\n\n if (formats[_code2[\"default\"].blotName]) {\n var text = this.container.innerText;\n this.container.innerHTML = '';\n return new _quillDelta2[\"default\"]().insert(text, _defineProperty({}, _code2[\"default\"].blotName, formats[_code2[\"default\"].blotName]));\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers); // Remove trailing newline\n\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2[\"default\"]().retain(delta.length() - 1)[\"delete\"](1));\n }\n\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2[\"default\"].sources.API;\n\n if (typeof index === 'string') {\n this.quill.setContents(this.convert(index), html);\n this.quill.setSelection(0, _quill2[\"default\"].sources.SILENT);\n } else {\n var paste = this.convert(html);\n this.quill.updateContents(new _quillDelta2[\"default\"]().retain(index).concat(paste), source);\n this.quill.setSelection(index + paste.length(), _quill2[\"default\"].sources.SILENT);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2[\"default\"]().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n this.quill.selection.update(_quill2[\"default\"].sources.SILENT);\n setTimeout(function () {\n delta = delta.concat(_this2.convert())[\"delete\"](range.length);\n\n _this2.quill.updateContents(delta, _quill2[\"default\"].sources.USER); // range.length contributes to delta.length()\n\n\n _this2.quill.setSelection(delta.length() - range.length, _quill2[\"default\"].sources.SILENT);\n\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n\n _this2.quill.focus();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n }(_module2[\"default\"]);\n\n Clipboard.DEFAULTS = {\n matchers: [],\n matchVisual: true\n };\n\n function applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3[\"default\"])({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2[\"default\"]());\n }\n }\n\n function computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n }\n\n function deltaEndsWith(delta, text) {\n var endText = \"\";\n\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n\n return endText.slice(-1 * text.length) === text;\n }\n\n function isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n }\n\n function traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2[\"default\"]());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n\n return delta.concat(childrenDelta);\n }, new _quillDelta2[\"default\"]());\n } else {\n return new _quillDelta2[\"default\"]();\n }\n }\n\n function matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n }\n\n function matchAttributor(node, delta) {\n var attributes = _parchment2[\"default\"].Attributor.Attribute.keys(node);\n\n var classes = _parchment2[\"default\"].Attributor.Class.keys(node);\n\n var styles = _parchment2[\"default\"].Attributor.Style.keys(node);\n\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.ATTRIBUTE);\n\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n\n attr = STYLE_ATTRIBUTORS[name];\n\n if (attr != null && (attr.attrName === name || attr.keyName === name)) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n\n return delta;\n }\n\n function matchBlot(node, delta) {\n var match = _parchment2[\"default\"].query(node);\n\n if (match == null) return delta;\n\n if (match.prototype instanceof _parchment2[\"default\"].Embed) {\n var embed = {};\n var value = match.value(node);\n\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2[\"default\"]().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\n }\n\n return delta;\n }\n\n function matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n\n return delta;\n }\n\n function matchIgnore() {\n return new _quillDelta2[\"default\"]();\n }\n\n function matchIndent(node, delta) {\n var match = _parchment2[\"default\"].query(node);\n\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n\n var indent = -1,\n parent = node.parentNode;\n\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2[\"default\"].query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n\n parent = parent.parentNode;\n }\n\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2[\"default\"]().retain(delta.length() - 1).retain(1, {\n indent: indent\n }));\n }\n\n function matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n\n return delta;\n }\n\n function matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n\n return delta;\n }\n\n function matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n\n if (style.fontWeight && (computeStyle(node).fontWeight.startsWith('bold') || parseInt(computeStyle(node).fontWeight) >= 700)) {\n formats.bold = true;\n }\n\n if (Object.keys(formats).length > 0) {\n delta = applyFormat(delta, formats);\n }\n\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2[\"default\"]().insert('\\t').concat(delta);\n }\n\n return delta;\n }\n\n function matchText(node, delta) {\n var text = node.data; // Word represents empty line with  \n\n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n\n if (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\n return match.length < 1 && collapse ? ' ' : match;\n };\n\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n\n return delta.insert(text);\n }\n\n exports[\"default\"] = Clipboard;\n exports.matchAttributor = matchAttributor;\n exports.matchBlot = matchBlot;\n exports.matchNewline = matchNewline;\n exports.matchSpacing = matchSpacing;\n exports.matchText = matchText;\n /***/\n },\n /* 56 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Bold = function (_Inline) {\n _inherits(Bold, _Inline);\n\n function Bold() {\n _classCallCheck(this, Bold);\n\n return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n }\n\n _createClass(Bold, [{\n key: 'optimize',\n value: function optimize(context) {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this, context);\n\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n }], [{\n key: 'create',\n value: function create() {\n return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n }\n }, {\n key: 'formats',\n value: function formats() {\n return true;\n }\n }]);\n\n return Bold;\n }(_inline2[\"default\"]);\n\n Bold.blotName = 'bold';\n Bold.tagName = ['STRONG', 'B'];\n exports[\"default\"] = Bold;\n /***/\n },\n /* 57 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.addControls = exports[\"default\"] = undefined;\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _quillDelta = __webpack_require__(2);\n\n var _quillDelta2 = _interopRequireDefault(_quillDelta);\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _logger = __webpack_require__(10);\n\n var _logger2 = _interopRequireDefault(_logger);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var debug = (0, _logger2[\"default\"])('quill:toolbar');\n\n var Toolbar = function (_Module) {\n _inherits(Toolbar, _Module);\n\n function Toolbar(quill, options) {\n _classCallCheck(this, Toolbar);\n\n var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\n if (Array.isArray(_this.options.container)) {\n var container = document.createElement('div');\n addControls(container, _this.options.container);\n quill.container.parentNode.insertBefore(container, quill.container);\n _this.container = container;\n } else if (typeof _this.options.container === 'string') {\n _this.container = document.querySelector(_this.options.container);\n } else {\n _this.container = _this.options.container;\n }\n\n if (!(_this.container instanceof HTMLElement)) {\n var _ret;\n\n return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n }\n\n _this.container.classList.add('ql-toolbar');\n\n _this.controls = [];\n _this.handlers = {};\n Object.keys(_this.options.handlers).forEach(function (format) {\n _this.addHandler(format, _this.options.handlers[format]);\n });\n [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n _this.attach(input);\n });\n\n _this.quill.on(_quill2[\"default\"].events.EDITOR_CHANGE, function (type, range) {\n if (type === _quill2[\"default\"].events.SELECTION_CHANGE) {\n _this.update(range);\n }\n });\n\n _this.quill.on(_quill2[\"default\"].events.SCROLL_OPTIMIZE, function () {\n var _this$quill$selection = _this.quill.selection.getRange(),\n _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\n\n _this.update(range);\n });\n\n return _this;\n }\n\n _createClass(Toolbar, [{\n key: 'addHandler',\n value: function addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n }, {\n key: 'attach',\n value: function attach(input) {\n var _this2 = this;\n\n var format = [].find.call(input.classList, function (className) {\n return className.indexOf('ql-') === 0;\n });\n if (!format) return;\n format = format.slice('ql-'.length);\n\n if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\n }\n\n if (this.handlers[format] == null) {\n if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n debug.warn('ignoring attaching to disabled format', format, input);\n return;\n }\n\n if (_parchment2[\"default\"].query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\n\n if (selected.hasAttribute('selected')) {\n value = false;\n } else {\n value = selected.value || false;\n }\n } else {\n if (input.classList.contains('ql-active')) {\n value = false;\n } else {\n value = input.value || !input.hasAttribute('value');\n }\n\n e.preventDefault();\n }\n\n _this2.quill.focus();\n\n var _quill$selection$getR = _this2.quill.selection.getRange(),\n _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n range = _quill$selection$getR2[0];\n\n if (_this2.handlers[format] != null) {\n _this2.handlers[format].call(_this2, value);\n } else if (_parchment2[\"default\"].query(format).prototype instanceof _parchment2[\"default\"].Embed) {\n value = prompt('Enter ' + format);\n if (!value) return;\n\n _this2.quill.updateContents(new _quillDelta2[\"default\"]().retain(range.index)[\"delete\"](range.length).insert(_defineProperty({}, format, value)), _quill2[\"default\"].sources.USER);\n } else {\n _this2.quill.format(format, value, _quill2[\"default\"].sources.USER);\n }\n\n _this2.update(range);\n }); // TODO use weakmap\n\n this.controls.push([format, input]);\n }\n }, {\n key: 'update',\n value: function update(range) {\n var formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n format = _pair[0],\n input = _pair[1];\n\n if (input.tagName === 'SELECT') {\n var option = void 0;\n\n if (range == null) {\n option = null;\n } else if (formats[format] == null) {\n option = input.querySelector('option[selected]');\n } else if (!Array.isArray(formats[format])) {\n var value = formats[format];\n\n if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n\n if (option == null) {\n input.value = ''; // TODO make configurable?\n\n input.selectedIndex = -1;\n } else {\n option.selected = true;\n }\n } else {\n if (range == null) {\n input.classList.remove('ql-active');\n } else if (input.hasAttribute('value')) {\n // both being null should match (default values)\n // '1' should match with 1 (headers)\n var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n input.classList.toggle('ql-active', isActive);\n } else {\n input.classList.toggle('ql-active', formats[format] != null);\n }\n }\n });\n }\n }]);\n\n return Toolbar;\n }(_module2[\"default\"]);\n\n Toolbar.DEFAULTS = {};\n\n function addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n\n if (value != null) {\n input.value = value;\n }\n\n container.appendChild(input);\n }\n\n function addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\n }\n\n groups.forEach(function (controls) {\n var group = document.createElement('span');\n group.classList.add('ql-formats');\n controls.forEach(function (control) {\n if (typeof control === 'string') {\n addButton(group, control);\n } else {\n var format = Object.keys(control)[0];\n var value = control[format];\n\n if (Array.isArray(value)) {\n addSelect(group, format, value);\n } else {\n addButton(group, format, value);\n }\n }\n });\n container.appendChild(group);\n });\n }\n\n function addSelect(container, format, values) {\n var input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function (value) {\n var option = document.createElement('option');\n\n if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n\n input.appendChild(option);\n });\n container.appendChild(input);\n }\n\n Toolbar.DEFAULTS = {\n container: null,\n handlers: {\n clean: function clean() {\n var _this3 = this;\n\n var range = this.quill.getSelection();\n if (range == null) return;\n\n if (range.length == 0) {\n var formats = this.quill.getFormat();\n Object.keys(formats).forEach(function (name) {\n // Clean functionality in existing apps only clean inline formats\n if (_parchment2[\"default\"].query(name, _parchment2[\"default\"].Scope.INLINE) != null) {\n _this3.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, _quill2[\"default\"].sources.USER);\n }\n },\n direction: function direction(value) {\n var align = this.quill.getFormat()['align'];\n\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', _quill2[\"default\"].sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, _quill2[\"default\"].sources.USER);\n }\n\n this.quill.format('direction', value, _quill2[\"default\"].sources.USER);\n },\n indent: function indent(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n var indent = parseInt(formats.indent || 0);\n\n if (value === '+1' || value === '-1') {\n var modifier = value === '+1' ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, _quill2[\"default\"].sources.USER);\n }\n },\n link: function link(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n\n this.quill.format('link', value, _quill2[\"default\"].sources.USER);\n },\n list: function list(value) {\n var range = this.quill.getSelection();\n var formats = this.quill.getFormat(range);\n\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, _quill2[\"default\"].sources.USER);\n } else {\n this.quill.format('list', 'unchecked', _quill2[\"default\"].sources.USER);\n }\n } else {\n this.quill.format('list', value, _quill2[\"default\"].sources.USER);\n }\n }\n }\n };\n exports[\"default\"] = Toolbar;\n exports.addControls = addControls;\n /***/\n },\n /* 58 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 59 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ColorPicker = function (_Picker) {\n _inherits(ColorPicker, _Picker);\n\n function ColorPicker(select, label) {\n _classCallCheck(this, ColorPicker);\n\n var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\n _this.label.innerHTML = label;\n\n _this.container.classList.add('ql-color-picker');\n\n [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n item.classList.add('ql-primary');\n });\n return _this;\n }\n\n _createClass(ColorPicker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\n var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\n\n if (colorLabel) {\n if (colorLabel.tagName === 'line') {\n colorLabel.style.stroke = value;\n } else {\n colorLabel.style.fill = value;\n }\n }\n }\n }]);\n\n return ColorPicker;\n }(_picker2[\"default\"]);\n\n exports[\"default\"] = ColorPicker;\n /***/\n },\n /* 60 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var IconPicker = function (_Picker) {\n _inherits(IconPicker, _Picker);\n\n function IconPicker(select, icons) {\n _classCallCheck(this, IconPicker);\n\n var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\n _this.container.classList.add('ql-icon-picker');\n\n [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n _this.defaultItem = _this.container.querySelector('.ql-selected');\n\n _this.selectItem(_this.defaultItem);\n\n return _this;\n }\n\n _createClass(IconPicker, [{\n key: 'selectItem',\n value: function selectItem(item, trigger) {\n _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n }(_picker2[\"default\"]);\n\n exports[\"default\"] = IconPicker;\n /***/\n },\n /* 61 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n var Tooltip = function () {\n function Tooltip(quill, boundsContainer) {\n var _this = this;\n\n _classCallCheck(this, Tooltip);\n\n this.quill = quill;\n this.boundsContainer = boundsContainer || document.body;\n this.root = quill.addContainer('ql-tooltip');\n this.root.innerHTML = this.constructor.TEMPLATE;\n\n if (this.quill.root === this.quill.scrollingContainer) {\n this.quill.root.addEventListener('scroll', function () {\n _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + 'px';\n });\n }\n\n this.hide();\n }\n\n _createClass(Tooltip, [{\n key: 'hide',\n value: function hide() {\n this.root.classList.add('ql-hidden');\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2; // root.scrollTop should be 0 if scrollContainer !== root\n\n var top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\n this.root.classList.remove('ql-flip');\n var containerBounds = this.boundsContainer.getBoundingClientRect();\n var rootBounds = this.root.getBoundingClientRect();\n var shift = 0;\n\n if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\n }\n\n if (rootBounds.bottom > containerBounds.bottom) {\n var height = rootBounds.bottom - rootBounds.top;\n var verticalShift = reference.bottom - reference.top + height;\n this.root.style.top = top - verticalShift + 'px';\n this.root.classList.add('ql-flip');\n }\n\n return shift;\n }\n }, {\n key: 'show',\n value: function show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n }]);\n\n return Tooltip;\n }();\n\n exports[\"default\"] = Tooltip;\n /***/\n },\n /* 62 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _slicedToArray = function () {\n function sliceIterator(arr, i) {\n var _arr = [];\n var _n = true;\n var _d = false;\n var _e = undefined;\n\n try {\n for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"]) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n }\n\n return function (arr, i) {\n if (Array.isArray(arr)) {\n return arr;\n } else if (Symbol.iterator in Object(arr)) {\n return sliceIterator(arr, i);\n } else {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance\");\n }\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _base = __webpack_require__(43);\n\n var _base2 = _interopRequireDefault(_base);\n\n var _link = __webpack_require__(27);\n\n var _link2 = _interopRequireDefault(_link);\n\n var _selection = __webpack_require__(15);\n\n var _icons = __webpack_require__(41);\n\n var _icons2 = _interopRequireDefault(_icons);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TOOLBAR_CONFIG = [[{\n header: ['1', '2', '3', false]\n }], ['bold', 'italic', 'underline', 'link'], [{\n list: 'ordered'\n }, {\n list: 'bullet'\n }], ['clean']];\n\n var SnowTheme = function (_BaseTheme) {\n _inherits(SnowTheme, _BaseTheme);\n\n function SnowTheme(quill, options) {\n _classCallCheck(this, SnowTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-snow');\n\n return _this;\n }\n\n _createClass(SnowTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2[\"default\"]);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2[\"default\"]);\n this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\n if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({\n key: 'K',\n shortKey: true\n }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n }(_base2[\"default\"]);\n\n SnowTheme.DEFAULTS = (0, _extend2[\"default\"])(true, {}, _base2[\"default\"].DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (value) {\n var range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n var preview = this.quill.getText(range);\n\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n\n var tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n });\n\n var SnowTooltip = function (_BaseTooltip) {\n _inherits(SnowTooltip, _BaseTooltip);\n\n function SnowTooltip(quill, bounds) {\n _classCallCheck(this, SnowTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\n _this2.preview = _this2.root.querySelector('a.ql-preview');\n return _this2;\n }\n\n _createClass(SnowTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\n this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n if (_this3.root.classList.contains('ql-editing')) {\n _this3.save();\n } else {\n _this3.edit('link', _this3.preview.textContent);\n }\n\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n if (_this3.linkRange != null) {\n var range = _this3.linkRange;\n\n _this3.restoreFocus();\n\n _this3.quill.formatText(range, 'link', false, _emitter2[\"default\"].sources.USER);\n\n delete _this3.linkRange;\n }\n\n event.preventDefault();\n\n _this3.hide();\n });\n this.quill.on(_emitter2[\"default\"].events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\n\n if (range.length === 0 && source === _emitter2[\"default\"].sources.USER) {\n var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2[\"default\"], range.index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n link = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (link != null) {\n _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\n var preview = _link2[\"default\"].formats(link.domNode);\n\n _this3.preview.textContent = preview;\n\n _this3.preview.setAttribute('href', preview);\n\n _this3.show();\n\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\n return;\n }\n } else {\n delete _this3.linkRange;\n }\n\n _this3.hide();\n });\n }\n }, {\n key: 'show',\n value: function show() {\n _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\n this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n }(_base.BaseTooltip);\n\n SnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n exports[\"default\"] = SnowTheme;\n /***/\n },\n /* 63 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _core = __webpack_require__(29);\n\n var _core2 = _interopRequireDefault(_core);\n\n var _align = __webpack_require__(36);\n\n var _direction = __webpack_require__(38);\n\n var _indent = __webpack_require__(64);\n\n var _blockquote = __webpack_require__(65);\n\n var _blockquote2 = _interopRequireDefault(_blockquote);\n\n var _header = __webpack_require__(66);\n\n var _header2 = _interopRequireDefault(_header);\n\n var _list = __webpack_require__(67);\n\n var _list2 = _interopRequireDefault(_list);\n\n var _background = __webpack_require__(37);\n\n var _color = __webpack_require__(26);\n\n var _font = __webpack_require__(39);\n\n var _size = __webpack_require__(40);\n\n var _bold = __webpack_require__(56);\n\n var _bold2 = _interopRequireDefault(_bold);\n\n var _italic = __webpack_require__(68);\n\n var _italic2 = _interopRequireDefault(_italic);\n\n var _link = __webpack_require__(27);\n\n var _link2 = _interopRequireDefault(_link);\n\n var _script = __webpack_require__(69);\n\n var _script2 = _interopRequireDefault(_script);\n\n var _strike = __webpack_require__(70);\n\n var _strike2 = _interopRequireDefault(_strike);\n\n var _underline = __webpack_require__(71);\n\n var _underline2 = _interopRequireDefault(_underline);\n\n var _image = __webpack_require__(72);\n\n var _image2 = _interopRequireDefault(_image);\n\n var _video = __webpack_require__(73);\n\n var _video2 = _interopRequireDefault(_video);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n var _formula = __webpack_require__(74);\n\n var _formula2 = _interopRequireDefault(_formula);\n\n var _syntax = __webpack_require__(75);\n\n var _syntax2 = _interopRequireDefault(_syntax);\n\n var _toolbar = __webpack_require__(57);\n\n var _toolbar2 = _interopRequireDefault(_toolbar);\n\n var _icons = __webpack_require__(41);\n\n var _icons2 = _interopRequireDefault(_icons);\n\n var _picker = __webpack_require__(28);\n\n var _picker2 = _interopRequireDefault(_picker);\n\n var _colorPicker = __webpack_require__(59);\n\n var _colorPicker2 = _interopRequireDefault(_colorPicker);\n\n var _iconPicker = __webpack_require__(60);\n\n var _iconPicker2 = _interopRequireDefault(_iconPicker);\n\n var _tooltip = __webpack_require__(61);\n\n var _tooltip2 = _interopRequireDefault(_tooltip);\n\n var _bubble = __webpack_require__(108);\n\n var _bubble2 = _interopRequireDefault(_bubble);\n\n var _snow = __webpack_require__(62);\n\n var _snow2 = _interopRequireDefault(_snow);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n _core2[\"default\"].register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n 'attributors/class/align': _align.AlignClass,\n 'attributors/class/background': _background.BackgroundClass,\n 'attributors/class/color': _color.ColorClass,\n 'attributors/class/direction': _direction.DirectionClass,\n 'attributors/class/font': _font.FontClass,\n 'attributors/class/size': _size.SizeClass,\n 'attributors/style/align': _align.AlignStyle,\n 'attributors/style/background': _background.BackgroundStyle,\n 'attributors/style/color': _color.ColorStyle,\n 'attributors/style/direction': _direction.DirectionStyle,\n 'attributors/style/font': _font.FontStyle,\n 'attributors/style/size': _size.SizeStyle\n }, true);\n\n _core2[\"default\"].register({\n 'formats/align': _align.AlignClass,\n 'formats/direction': _direction.DirectionClass,\n 'formats/indent': _indent.IndentClass,\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n 'formats/blockquote': _blockquote2[\"default\"],\n 'formats/code-block': _code2[\"default\"],\n 'formats/header': _header2[\"default\"],\n 'formats/list': _list2[\"default\"],\n 'formats/bold': _bold2[\"default\"],\n 'formats/code': _code.Code,\n 'formats/italic': _italic2[\"default\"],\n 'formats/link': _link2[\"default\"],\n 'formats/script': _script2[\"default\"],\n 'formats/strike': _strike2[\"default\"],\n 'formats/underline': _underline2[\"default\"],\n 'formats/image': _image2[\"default\"],\n 'formats/video': _video2[\"default\"],\n 'formats/list/item': _list.ListItem,\n 'modules/formula': _formula2[\"default\"],\n 'modules/syntax': _syntax2[\"default\"],\n 'modules/toolbar': _toolbar2[\"default\"],\n 'themes/bubble': _bubble2[\"default\"],\n 'themes/snow': _snow2[\"default\"],\n 'ui/icons': _icons2[\"default\"],\n 'ui/picker': _picker2[\"default\"],\n 'ui/icon-picker': _iconPicker2[\"default\"],\n 'ui/color-picker': _colorPicker2[\"default\"],\n 'ui/tooltip': _tooltip2[\"default\"]\n }, true);\n\n exports[\"default\"] = _core2[\"default\"];\n /***/\n },\n /* 64 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports.IndentClass = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var IdentAttributor = function (_Parchment$Attributor) {\n _inherits(IdentAttributor, _Parchment$Attributor);\n\n function IdentAttributor() {\n _classCallCheck(this, IdentAttributor);\n\n return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n }\n\n _createClass(IdentAttributor, [{\n key: 'add',\n value: function add(node, value) {\n if (value === '+1' || value === '-1') {\n var indent = this.value(node) || 0;\n value = value === '+1' ? indent + 1 : indent - 1;\n }\n\n if (value === 0) {\n this.remove(node);\n return true;\n } else {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n }\n }\n }, {\n key: 'canAdd',\n value: function canAdd(node, value) {\n return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, value) || _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'canAdd', this).call(this, node, parseInt(value));\n }\n }, {\n key: 'value',\n value: function value(node) {\n return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n }\n }]);\n\n return IdentAttributor;\n }(_parchment2[\"default\"].Attributor.Class);\n\n var IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2[\"default\"].Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n });\n exports.IndentClass = IndentClass;\n /***/\n },\n /* 65 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Blockquote = function (_Block) {\n _inherits(Blockquote, _Block);\n\n function Blockquote() {\n _classCallCheck(this, Blockquote);\n\n return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n }\n\n return Blockquote;\n }(_block2[\"default\"]);\n\n Blockquote.blotName = 'blockquote';\n Blockquote.tagName = 'blockquote';\n exports[\"default\"] = Blockquote;\n /***/\n },\n /* 66 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Header = function (_Block) {\n _inherits(Header, _Block);\n\n function Header() {\n _classCallCheck(this, Header);\n\n return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n }\n\n _createClass(Header, null, [{\n key: 'formats',\n value: function formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n }]);\n\n return Header;\n }(_block2[\"default\"]);\n\n Header.blotName = 'header';\n Header.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n exports[\"default\"] = Header;\n /***/\n },\n /* 67 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.ListItem = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _block = __webpack_require__(4);\n\n var _block2 = _interopRequireDefault(_block);\n\n var _container = __webpack_require__(25);\n\n var _container2 = _interopRequireDefault(_container);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ListItem = function (_Block) {\n _inherits(ListItem, _Block);\n\n function ListItem() {\n _classCallCheck(this, ListItem);\n\n return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n }\n\n _createClass(ListItem, [{\n key: 'format',\n value: function format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(_parchment2[\"default\"].create(this.statics.scope));\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n }\n }\n }, {\n key: 'remove',\n value: function remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n }\n }\n }, {\n key: 'replaceWith',\n value: function replaceWith(name, value) {\n this.parent.isolate(this.offset(this.parent), this.length());\n\n if (name === this.parent.statics.blotName) {\n this.parent.replaceWith(name, value);\n return this;\n } else {\n this.parent.unwrap();\n return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n }\n }\n }], [{\n key: 'formats',\n value: function formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n }\n }]);\n\n return ListItem;\n }(_block2[\"default\"]);\n\n ListItem.blotName = 'list-item';\n ListItem.tagName = 'LI';\n\n var List = function (_Container) {\n _inherits(List, _Container);\n\n _createClass(List, null, [{\n key: 'create',\n value: function create(value) {\n var tagName = value === 'ordered' ? 'OL' : 'UL';\n\n var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n\n if (domNode.tagName === 'UL') {\n if (domNode.hasAttribute('data-checked')) {\n return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n } else {\n return 'bullet';\n }\n }\n\n return undefined;\n }\n }]);\n\n function List(domNode) {\n _classCallCheck(this, List);\n\n var _this2 = _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).call(this, domNode));\n\n var listEventHandler = function listEventHandler(e) {\n if (e.target.parentNode !== domNode) return;\n\n var format = _this2.statics.formats(domNode);\n\n var blot = _parchment2[\"default\"].find(e.target);\n\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n };\n\n domNode.addEventListener('touchstart', listEventHandler);\n domNode.addEventListener('mousedown', listEventHandler);\n return _this2;\n }\n\n _createClass(List, [{\n key: 'format',\n value: function format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats() {\n // We don't inherit from FormatBlot\n return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n }\n }, {\n key: 'insertBefore',\n value: function insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n } else {\n var index = ref == null ? this.length() : ref.offset(this);\n var after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n }, {\n key: 'optimize',\n value: function optimize(context) {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this, context);\n\n var next = this.next;\n\n if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && next.domNode.tagName === this.domNode.tagName && next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n }, {\n key: 'replace',\n value: function replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n var item = _parchment2[\"default\"].create(this.statics.defaultChild);\n\n target.moveChildren(item);\n this.appendChild(item);\n }\n\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n }\n }]);\n\n return List;\n }(_container2[\"default\"]);\n\n List.blotName = 'list';\n List.scope = _parchment2[\"default\"].Scope.BLOCK_BLOT;\n List.tagName = ['OL', 'UL'];\n List.defaultChild = 'list-item';\n List.allowedChildren = [ListItem];\n exports.ListItem = ListItem;\n exports[\"default\"] = List;\n /***/\n },\n /* 68 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _bold = __webpack_require__(56);\n\n var _bold2 = _interopRequireDefault(_bold);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Italic = function (_Bold) {\n _inherits(Italic, _Bold);\n\n function Italic() {\n _classCallCheck(this, Italic);\n\n return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n }\n\n return Italic;\n }(_bold2[\"default\"]);\n\n Italic.blotName = 'italic';\n Italic.tagName = ['EM', 'I'];\n exports[\"default\"] = Italic;\n /***/\n },\n /* 69 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Script = function (_Inline) {\n _inherits(Script, _Inline);\n\n function Script() {\n _classCallCheck(this, Script);\n\n return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n }\n\n _createClass(Script, null, [{\n key: 'create',\n value: function create(value) {\n if (value === 'super') {\n return document.createElement('sup');\n } else if (value === 'sub') {\n return document.createElement('sub');\n } else {\n return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n }\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n }]);\n\n return Script;\n }(_inline2[\"default\"]);\n\n Script.blotName = 'script';\n Script.tagName = ['SUB', 'SUP'];\n exports[\"default\"] = Script;\n /***/\n },\n /* 70 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Strike = function (_Inline) {\n _inherits(Strike, _Inline);\n\n function Strike() {\n _classCallCheck(this, Strike);\n\n return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n }\n\n return Strike;\n }(_inline2[\"default\"]);\n\n Strike.blotName = 'strike';\n Strike.tagName = 'S';\n exports[\"default\"] = Strike;\n /***/\n },\n /* 71 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _inline = __webpack_require__(6);\n\n var _inline2 = _interopRequireDefault(_inline);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var Underline = function (_Inline) {\n _inherits(Underline, _Inline);\n\n function Underline() {\n _classCallCheck(this, Underline);\n\n return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n }\n\n return Underline;\n }(_inline2[\"default\"]);\n\n Underline.blotName = 'underline';\n Underline.tagName = 'U';\n exports[\"default\"] = Underline;\n /***/\n },\n /* 72 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _link = __webpack_require__(27);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ATTRIBUTES = ['alt', 'height', 'width'];\n\n var Image = function (_Parchment$Embed) {\n _inherits(Image, _Parchment$Embed);\n\n function Image() {\n _classCallCheck(this, Image);\n\n return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n }\n\n _createClass(Image, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n\n return formats;\n }, {});\n }\n }, {\n key: 'match',\n value: function match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Image;\n }(_parchment2[\"default\"].Embed);\n\n Image.blotName = 'image';\n Image.tagName = 'IMG';\n exports[\"default\"] = Image;\n /***/\n },\n /* 73 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _block = __webpack_require__(4);\n\n var _link = __webpack_require__(27);\n\n var _link2 = _interopRequireDefault(_link);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var ATTRIBUTES = ['height', 'width'];\n\n var Video = function (_BlockEmbed) {\n _inherits(Video, _BlockEmbed);\n\n function Video() {\n _classCallCheck(this, Video);\n\n return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n }\n\n _createClass(Video, [{\n key: 'format',\n value: function format(name, value) {\n if (ATTRIBUTES.indexOf(name) > -1) {\n if (value) {\n this.domNode.setAttribute(name, value);\n } else {\n this.domNode.removeAttribute(name);\n }\n } else {\n _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n }\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n return ATTRIBUTES.reduce(function (formats, attribute) {\n if (domNode.hasAttribute(attribute)) {\n formats[attribute] = domNode.getAttribute(attribute);\n }\n\n return formats;\n }, {});\n }\n }, {\n key: 'sanitize',\n value: function sanitize(url) {\n return _link2[\"default\"].sanitize(url);\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('src');\n }\n }]);\n\n return Video;\n }(_block.BlockEmbed);\n\n Video.blotName = 'video';\n Video.className = 'ql-video';\n Video.tagName = 'IFRAME';\n exports[\"default\"] = Video;\n /***/\n },\n /* 74 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.FormulaBlot = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _embed = __webpack_require__(35);\n\n var _embed2 = _interopRequireDefault(_embed);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var FormulaBlot = function (_Embed) {\n _inherits(FormulaBlot, _Embed);\n\n function FormulaBlot() {\n _classCallCheck(this, FormulaBlot);\n\n return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n }\n\n _createClass(FormulaBlot, null, [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\n if (typeof value === 'string') {\n window.katex.render(value, node, {\n throwOnError: false,\n errorColor: '#f00'\n });\n node.setAttribute('data-value', value);\n }\n\n return node;\n }\n }, {\n key: 'value',\n value: function value(domNode) {\n return domNode.getAttribute('data-value');\n }\n }]);\n\n return FormulaBlot;\n }(_embed2[\"default\"]);\n\n FormulaBlot.blotName = 'formula';\n FormulaBlot.className = 'ql-formula';\n FormulaBlot.tagName = 'SPAN';\n\n var Formula = function (_Module) {\n _inherits(Formula, _Module);\n\n _createClass(Formula, null, [{\n key: 'register',\n value: function register() {\n _quill2[\"default\"].register(FormulaBlot, true);\n }\n }]);\n\n function Formula() {\n _classCallCheck(this, Formula);\n\n var _this2 = _possibleConstructorReturn(this, (Formula.__proto__ || Object.getPrototypeOf(Formula)).call(this));\n\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n\n return _this2;\n }\n\n return Formula;\n }(_module2[\"default\"]);\n\n exports.FormulaBlot = FormulaBlot;\n exports[\"default\"] = Formula;\n /***/\n },\n /* 75 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.CodeToken = exports.CodeBlock = undefined;\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _parchment = __webpack_require__(0);\n\n var _parchment2 = _interopRequireDefault(_parchment);\n\n var _quill = __webpack_require__(5);\n\n var _quill2 = _interopRequireDefault(_quill);\n\n var _module = __webpack_require__(9);\n\n var _module2 = _interopRequireDefault(_module);\n\n var _code = __webpack_require__(13);\n\n var _code2 = _interopRequireDefault(_code);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var SyntaxCodeBlock = function (_CodeBlock) {\n _inherits(SyntaxCodeBlock, _CodeBlock);\n\n function SyntaxCodeBlock() {\n _classCallCheck(this, SyntaxCodeBlock);\n\n return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n }\n\n _createClass(SyntaxCodeBlock, [{\n key: 'replaceWith',\n value: function replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n\n _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n var text = this.domNode.textContent;\n\n if (this.cachedText !== text) {\n if (text.trim().length > 0 || this.cachedText == null) {\n this.domNode.innerHTML = _highlight(text);\n this.domNode.normalize();\n this.attach();\n }\n\n this.cachedText = text;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n }(_code2[\"default\"]);\n\n SyntaxCodeBlock.className = 'ql-syntax';\n var CodeToken = new _parchment2[\"default\"].Attributor.Class('token', 'hljs', {\n scope: _parchment2[\"default\"].Scope.INLINE\n });\n\n var Syntax = function (_Module) {\n _inherits(Syntax, _Module);\n\n _createClass(Syntax, null, [{\n key: 'register',\n value: function register() {\n _quill2[\"default\"].register(CodeToken, true);\n\n _quill2[\"default\"].register(SyntaxCodeBlock, true);\n }\n }]);\n\n function Syntax(quill, options) {\n _classCallCheck(this, Syntax);\n\n var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\n if (typeof _this2.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n\n var timer = null;\n\n _this2.quill.on(_quill2[\"default\"].events.SCROLL_OPTIMIZE, function () {\n clearTimeout(timer);\n timer = setTimeout(function () {\n _this2.highlight();\n\n timer = null;\n }, _this2.options.interval);\n });\n\n _this2.highlight();\n\n return _this2;\n }\n\n _createClass(Syntax, [{\n key: 'highlight',\n value: function highlight() {\n var _this3 = this;\n\n if (this.quill.selection.composing) return;\n this.quill.update(_quill2[\"default\"].sources.USER);\n var range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n code.highlight(_this3.options.highlight);\n });\n this.quill.update(_quill2[\"default\"].sources.SILENT);\n\n if (range != null) {\n this.quill.setSelection(range, _quill2[\"default\"].sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n }(_module2[\"default\"]);\n\n Syntax.DEFAULTS = {\n highlight: function () {\n if (window.hljs == null) return null;\n return function (text) {\n var result = window.hljs.highlightAuto(text);\n return result.value;\n };\n }(),\n interval: 1000\n };\n exports.CodeBlock = SyntaxCodeBlock;\n exports.CodeToken = CodeToken;\n exports[\"default\"] = Syntax;\n /***/\n },\n /* 76 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 77 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 78 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 79 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 80 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 81 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 82 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 83 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 84 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 85 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 86 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 87 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 88 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 89 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 90 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 91 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 92 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 93 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 94 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 95 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 96 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 97 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 98 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 99 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 100 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 101 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 102 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 103 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 104 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 105 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 106 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 107 */\n\n /***/\n function (module, exports) {\n module.exports = \" \";\n /***/\n },\n /* 108 */\n\n /***/\n function (module, exports, __webpack_require__) {\n \"use strict\";\n\n Object.defineProperty(exports, \"__esModule\", {\n value: true\n });\n exports[\"default\"] = exports.BubbleTooltip = undefined;\n\n var _get = function get(object, property, receiver) {\n if (object === null) object = Function.prototype;\n var desc = Object.getOwnPropertyDescriptor(object, property);\n\n if (desc === undefined) {\n var parent = Object.getPrototypeOf(object);\n\n if (parent === null) {\n return undefined;\n } else {\n return get(parent, property, receiver);\n }\n } else if (\"value\" in desc) {\n return desc.value;\n } else {\n var getter = desc.get;\n\n if (getter === undefined) {\n return undefined;\n }\n\n return getter.call(receiver);\n }\n };\n\n var _createClass = function () {\n function defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n }\n\n return function (Constructor, protoProps, staticProps) {\n if (protoProps) defineProperties(Constructor.prototype, protoProps);\n if (staticProps) defineProperties(Constructor, staticProps);\n return Constructor;\n };\n }();\n\n var _extend = __webpack_require__(3);\n\n var _extend2 = _interopRequireDefault(_extend);\n\n var _emitter = __webpack_require__(8);\n\n var _emitter2 = _interopRequireDefault(_emitter);\n\n var _base = __webpack_require__(43);\n\n var _base2 = _interopRequireDefault(_base);\n\n var _selection = __webpack_require__(15);\n\n var _icons = __webpack_require__(41);\n\n var _icons2 = _interopRequireDefault(_icons);\n\n function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n }\n\n function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n }\n\n function _possibleConstructorReturn(self, call) {\n if (!self) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self;\n }\n\n function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass);\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass;\n }\n\n var TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{\n header: 1\n }, {\n header: 2\n }, 'blockquote']];\n\n var BubbleTheme = function (_BaseTheme) {\n _inherits(BubbleTheme, _BaseTheme);\n\n function BubbleTheme(quill, options) {\n _classCallCheck(this, BubbleTheme);\n\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n\n var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\n _this.quill.container.classList.add('ql-bubble');\n\n return _this;\n }\n\n _createClass(BubbleTheme, [{\n key: 'extendToolbar',\n value: function extendToolbar(toolbar) {\n this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n this.tooltip.root.appendChild(toolbar.container);\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2[\"default\"]);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2[\"default\"]);\n }\n }]);\n\n return BubbleTheme;\n }(_base2[\"default\"]);\n\n BubbleTheme.DEFAULTS = (0, _extend2[\"default\"])(true, {}, _base2[\"default\"].DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function link(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n });\n\n var BubbleTooltip = function (_BaseTooltip) {\n _inherits(BubbleTooltip, _BaseTooltip);\n\n function BubbleTooltip(quill, bounds) {\n _classCallCheck(this, BubbleTooltip);\n\n var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\n _this2.quill.on(_emitter2[\"default\"].events.EDITOR_CHANGE, function (type, range, oldRange, source) {\n if (type !== _emitter2[\"default\"].events.SELECTION_CHANGE) return;\n\n if (range != null && range.length > 0 && source === _emitter2[\"default\"].sources.USER) {\n _this2.show(); // Lock our width so we will expand beyond our offsetParent boundaries\n\n\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\n var lines = _this2.quill.getLines(range.index, range.length);\n\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n\n var index = _this2.quill.getIndex(lastLine);\n\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\n }\n });\n\n return _this2;\n }\n\n _createClass(BubbleTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this3 = this;\n\n _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\n this.root.querySelector('.ql-close').addEventListener('click', function () {\n _this3.root.classList.remove('ql-editing');\n });\n this.quill.on(_emitter2[\"default\"].events.SCROLL_OPTIMIZE, function () {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(function () {\n if (_this3.root.classList.contains('ql-hidden')) return;\n\n var range = _this3.quill.getSelection();\n\n if (range != null) {\n _this3.position(_this3.quill.getBounds(range));\n }\n }, 1);\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.show();\n }\n }, {\n key: 'position',\n value: function position(reference) {\n var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\n var arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n if (shift === 0) return shift;\n arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n }\n }]);\n\n return BubbleTooltip;\n }(_base.BaseTooltip);\n\n BubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n exports.BubbleTooltip = BubbleTooltip;\n exports[\"default\"] = BubbleTheme;\n /***/\n },\n /* 109 */\n\n /***/\n function (module, exports, __webpack_require__) {\n module.exports = __webpack_require__(63);\n /***/\n }\n /******/\n ])[\"default\"]\n );\n});"],"sourceRoot":""}