{"version":3,"sources":["webpack:///./node_modules/quill-image-resize-module/node_modules/quill/dist/quill.js"],"names":["root","factory","module","exports","this","modules","installedModules","__webpack_require__","moduleId","i","l","call","m","c","value","d","name","getter","o","Object","defineProperty","configurable","enumerable","get","n","__esModule","object","property","prototype","hasOwnProperty","p","s","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","default","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","__extends","extendStatics","setPrototypeOf","__proto__","Array","b","__","constructor","ParchmentError","_super","message","_this","Error","attributes","classes","tags","types","input","match","BlotClass","node","Node","bubble","DATA_KEY","blot","parentNode","scope","ANY","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","split","tagName","TYPE","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","filter","predicate","partition","passed","failed","target","reduce","initial","chop","pop","elem","slice","start","end","Infinity","iter","iterator","hasNext","nextOp","next","compose","other","thisIter","otherIter","delta","peekType","Math","min","peekLength","thisOp","otherOp","concat","strings","prep","join","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","peek","indexOf","transform","priority","transformPosition","offset","nextType","hasOwn","toStr","toString","arr","isPlainObject","obj","key","hasOwnConstructor","hasIsPrototypeOf","options","src","copy","copyIsArray","clone","deep","BlockEmbed","bubbleFormats","undefined","_createClass","defineProperties","props","descriptor","writable","Constructor","protoProps","staticProps","_get","receiver","Function","desc","getOwnPropertyDescriptor","parent","getPrototypeOf","_extend","_extend2","_interopRequireDefault","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_embed","_embed2","_inline","_inline2","_text","_text2","_classCallCheck","instance","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","NEWLINE_LENGTH","_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","child","force","statics","defaultChild","allowedChildren","_eventemitter","_eventemitter2","_logger","_logger2","debug","Emitter","_EventEmitter","on","error","log","events","EDITOR_CHANGE","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SCROLL_UPDATE","SELECTION_CHANGE","TEXT_CHANGE","sources","API","SILENT","USER","overload","expandConfig","_typeof","Symbol","_slicedToArray","sliceIterator","_arr","_n","_d","_e","_s","done","err","_editor","_editor2","_emitter3","_emitter4","_module","_module2","_selection","_selection2","_theme","_theme2","_defineProperty","Quill","container","html","innerHTML","trim","classList","add","__quill","addContainer","scrollingContainer","emitter","scroll","whitelist","editor","selection","theme","keyboard","addModule","clipboard","history","init","type","toggle","isBlank","source","mutations","range","lastRange","modify","update","contents","convert","setContents","clear","placeholder","setAttribute","readOnly","disable","limit","level","imports","path","overwrite","warn","startsWith","refNode","document","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","scrollTop","focus","scrollIntoView","_this4","getSelection","change","formatLine","formatText","setSelection","_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","delete","ret","_overload15","_overload16","Range","_this11","userConfig","DEFAULTS","import","themeConfig","config","moduleNames","moduleConfig","moduleClass","toolbar","querySelector","modifier","strict","isEnabled","oldDelta","shiftRange","_emitter","_emitter2","args","emit","_map","pos","_map2","_map3","max","_map4","version","_Parchment$Embed","_Parchment$Inline","compare","BLOT","isolate","wrap","moveChildren","selfIndex","order","otherIndex","Module","quill","levels","method","_len","_key","console","namespace","ns","logger","bind","newLevel","pSlice","objectKeys","isArguments","deepEqual","actual","expected","opts","Date","getTime","objEquiv","isUndefinedOrNull","isBuffer","x","a","ka","kb","e","sort","TextBlot","_Parchment$Text","attributeBit","ATTRIBUTE","item","canAdd","removeAttribute","_op","_op2","_code","_code2","_cursor","_cursor2","_block","_block2","_clone","_clone2","_deepEqual","_deepEqual2","Editor","getDelta","consumeNextNewline","scrollLength","batch","normalizeDelta","_scroll$line","_scroll$line2","_line$descendant","descendant","_line$descendant2","formatAt","deleteAt","optimize","lengthRemaining","lineLength","codeIndex","codeLength","newlineIndex","leaves","_path","formatsArr","blots","combineFormats","replace","_scroll$line3","_scroll$line4","suffixLength","suffix","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","combined","merged","image","list","bullet","_toConsumableArray","arr2","from","Selection","composing","addEventListener","cursor","savedRange","eventName","setTimeout","native","getNativeRange","textNode","setNativeRange","ignored","_format","nativeRange","collapsed","after","attach","data","_scroll$leaf","_scroll$leaf2","_leaf$position","position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","side","rect","rangeCount","getRangeAt","startContainer","endContainer","startOffset","endOffset","childNodes","lastChild","info","positions","indexes","_position","activeElement","first","last","scroller","scrollBounds","startNode","endNode","removeAllRanges","addRange","blur","body","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","oldRange","_getRange","_getRange2","restore","Code","_Inline","CodeBlock","_Block","textContent","frag","_descendant","_descendant2","nextNewline","prevNewline","isolateLength","_descendant3","_descendant4","searchIndex","reverse","lastIndexOf","appendChild","prev","querySelectorAll","removeChild","unwrap","TAB","Break","_container","_container2","isLine","_Parchment$Scroll","_line","_line2","_line3","_line4","INLINE_BLOT","wrapper","getLines","lengthLeft","forEachAt","observer","takeRecords","_instanceof","nativeMap","nativeSet","nativePromise","Map","_","Set","Promise","circular","depth","includeNonEnumerable","allParents","allChildren","useBuffer","Buffer","proto","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","keyChild","valueChild","set","entryChild","attrs","getOwnPropertySymbols","symbols","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","clonePrototype","lib","keepNull","Iterator","retOp","substr","linked_list_1","shadow_1","ContainerBlot","makeBlot","criteria","_a","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","build","move","LeafBlot","_Parchment$Container","Cursor","createTextNode","_length","restoreText","_ref","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","parseInt","sanitize","Link","url","_sanitize","SANITIZED_URL","protocols","anchor","href","protocol","_dropdown","_dropdown2","Picker","select","buildPicker","style","display","label","option","hasAttribute","selectItem","buildItem","buildLabel","buildOptions","trigger","selected","selectedIndex","Event","dispatchEvent","event","createEvent","initEvent","close","isActive","Theme","themes","SHORTKEY","_quill","_quill2","test","navigator","platform","Keyboard","_Module","bindings","addBinding","ENTER","shiftKey","handleEnter","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","handleBackspace","handleDelete","prefix","handleDeleteRange","empty","shortKey","listen","evt","binding","normalize","which","keyCode","context","handler","defaultPrevented","_quill$getLine","getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","prevented","every","preventDefault","_quill$getLine5","_quill$getLine6","curFormats","prevFormats","lineFormats","makeCodeBlockHandler","indent","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","charCodeAt","ESCAPE","LEFT","UP","RIGHT","DOWN","blockquote","_quill$getLine3","_quill$getLine4","ClassAttributor","matches","result","AttributorStore","styles","attr","camelize","parts","rest","part","StyleAttributor","ShadowBlot","cloneNode","parentBlot","refDomNode","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","_keyboard","_keyboard2","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","getLastChangeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","updateContents","changeDelta","undoDelta","timestamp","now","delay","maxStack","endsWithNewlineChange","deleteLength","changeIndex","_toggle","DOMTokenList","token","searchString","subjectString","isFinite","floor","thisArg","execCommand","Bold","matchText","matchSpacing","matchNewline","matchBlot","matchAttributor","_align","_background","_direction","_font","_size","DOM_KEY","CLIPBOARD_CONFIG","TEXT_NODE","matchBreak","ELEMENT_NODE","matchStyles","matchAlias","matchIgnore","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","Clipboard","onPaste","matchers","pair","addMatcher","selector","matcher","_prepareMatching","prepareMatching","_prepareMatching2","elementMatchers","textMatchers","traverse","deltaEndsWith","paste","_pair","computeStyle","nodeType","window","getComputedStyle","endText","childNode","childrenDelta","nextElementSibling","nodeHeight","offsetHeight","parseFloat","marginTop","marginBottom","offsetTop","fontStyle","italic","fontWeight","bold","textIndent","whiteSpace","replacer","collapse","previousSibling","addControls","Toolbar","_ret","controls","handlers","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","addButton","groups","group","control","addSelect","clean","direction","align","link","BaseTooltip","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_picker","_picker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","removeEventListener","tooltip","textbox","hide","pickers","picker","extendToolbar","buttons","icons","button","selects","fillSelect","formula","edit","fileInput","files","reader","FileReader","onload","readAsDataURL","click","video","_Tooltip","boundsContainer","save","cancel","mode","preview","linkRange","restoreFocus","defaultValue","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","defaultItem","Tooltip","TEMPLATE","reference","offsetWidth","rootBounds","verticalShift","supportsArgumentsClass","supported","unsupported","propertyIsEnumerable","shim","has","Events","EE","fn","EventEmitter","_events","_eventsCount","eventNames","listeners","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","j","removeAllListeners","addListener","setMaxListeners","prefixed","DIFF_DELETE","DIFF_INSERT","DIFF_EQUAL","diff_main","text1","text2","cursor_pos","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","longtext","shorttext","hm","diff_halfMatch_","text1_a","text1_b","text2_a","text2_b","mid_common","diffs_a","diffs_b","diff_bisect_","text1_length","text2_length","max_d","ceil","v_offset","v_length","v1","v2","front","k1start","k1end","k2start","k2end","k1","k1_offset","x1","y1","charAt","k2_offset","x2","diff_bisectSplit_","k2","y2","y","text1a","text2a","text1b","text2b","diffsb","pointermin","pointermax","pointermid","pointerstart","pointerend","diff_halfMatchI_","best_longtext_a","best_longtext_b","best_shorttext_a","best_shorttext_b","seed","best_common","prefixLength","hm1","hm2","pointer","count_delete","count_insert","text_delete","text_insert","changes","cursor_normalize_diff","current_pos","next_pos","split_pos","d_left","d_right","norm","ndiffs","cursor_pointer","d_next","merge_tuples","left_d","right_d","BlockBlot","EmbedBlot","isEqual","obj1","obj2","prop","InlineBlot","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","remaining","grandChild","splitText","LinkedList","append","nodes","cur","curNode","callback","curIndex","curLength","_core","_core2","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_bold","_bold2","_italic","_italic2","_link","_link2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_icons","_icons2","_bubble","_bubble2","_snow","_snow2","IndentClass","ListItem","_base","_base2","TOOLBAR_CONFIG","header","SnowTheme","_BaseTheme","buildButtons","buildPickers","SnowTooltip","_BaseTooltip","show","Blockquote","Header","ATTRIBUTES","Image","IdentAttributor","Italic","_Bold","List","_Container","Script","Strike","Underline","Video","_BlockEmbed","FormulaBlot","katex","render","Formula","CodeToken","SyntaxCodeBlock","_CodeBlock","_highlight","cachedHTML","Syntax","highlight","timer","code","hljs","highlightAuto","BubbleTooltip","BubbleTheme","lastLine","_bounds","arrow","marginLeft"],"mappings":"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","file":"js/chunk-2d216bb6.8f66f099.js","sourcesContent":["/*!\n * Quill Editor v1.2.3\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 136);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(21);\nvar format_1 = __webpack_require__(22);\nvar leaf_1 = __webpack_require__(23);\nvar scroll_1 = __webpack_require__(59);\nvar inline_1 = __webpack_require__(58);\nvar block_1 = __webpack_require__(56);\nvar embed_1 = __webpack_require__(57);\nvar text_1 = __webpack_require__(60);\nvar attributor_1 = __webpack_require__(13);\nvar class_1 = __webpack_require__(31);\nvar style_1 = __webpack_require__(33);\nvar store_1 = __webpack_require__(32);\nvar Registry = __webpack_require__(1);\nvar 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};\nexports.default = Parchment;\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar ParchmentError = (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _this = this;\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 return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\nvar Scope;\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;\nfunction create(input, value) {\n var match = query(input);\n if (match == null) {\n throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n }\n var BlotClass = match;\n var node = input instanceof Node ? input : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n }\n else if (query instanceof Text) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\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 }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\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 return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(54);\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\nvar op = __webpack_require__(20);\n\n\nvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\n\nvar Delta = function (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\nDelta.prototype.insert = function (text, attributes) {\n var newOp = {};\n if (text.length === 0) return this;\n newOp.insert = text;\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype['delete'] = function (length) {\n if (length <= 0) return this;\n return this.push({ 'delete': length });\n};\n\nDelta.prototype.retain = function (length, attributes) {\n if (length <= 0) return this;\n var newOp = { retain: length };\n if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n newOp.attributes = attributes;\n }\n return this.push(newOp);\n};\n\nDelta.prototype.push = function (newOp) {\n var index = this.ops.length;\n var lastOp = this.ops[index - 1];\n newOp = extend(true, {}, newOp);\n if (typeof lastOp === 'object') {\n if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n return this;\n }\n // Since it does not matter if we insert before or after deleting at the same index,\n // always prefer to insert first\n if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n index -= 1;\n lastOp = this.ops[index - 1];\n if (typeof lastOp !== 'object') {\n this.ops.unshift(newOp);\n return this;\n }\n }\n if (equal(newOp.attributes, lastOp.attributes)) {\n if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\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] = { retain: lastOp.retain + newOp.retain };\n if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n return this;\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 return this;\n};\n\nDelta.prototype.filter = function (predicate) {\n return this.ops.filter(predicate);\n};\n\nDelta.prototype.forEach = function (predicate) {\n this.ops.forEach(predicate);\n};\n\nDelta.prototype.map = function (predicate) {\n return this.ops.map(predicate);\n};\n\nDelta.prototype.partition = function (predicate) {\n var passed = [], failed = [];\n this.forEach(function(op) {\n var target = predicate(op) ? passed : failed;\n target.push(op);\n });\n return [passed, failed];\n};\n\nDelta.prototype.reduce = function (predicate, initial) {\n return this.ops.reduce(predicate, initial);\n};\n\nDelta.prototype.chop = function () {\n var lastOp = this.ops[this.ops.length - 1];\n if (lastOp && lastOp.retain && !lastOp.attributes) {\n this.ops.pop();\n }\n return this;\n};\n\nDelta.prototype.length = function () {\n return this.reduce(function (length, elem) {\n return length + op.length(elem);\n }, 0);\n};\n\nDelta.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 while (index < end && iter.hasNext()) {\n var nextOp;\n if (index < start) {\n nextOp = iter.next(start - index);\n } else {\n nextOp = iter.next(end - index);\n ops.push(nextOp);\n }\n index += op.length(nextOp);\n }\n return new Delta(ops);\n};\n\n\nDelta.prototype.compose = function (other) {\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\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 if (typeof otherOp.retain === 'number') {\n var newOp = {};\n if (typeof thisOp.retain === 'number') {\n newOp.retain = length;\n } else {\n newOp.insert = thisOp.insert;\n }\n // Preserve null when composing with a retain, otherwise remove it for inserts\n var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n if (attributes) newOp.attributes = attributes;\n delta.push(newOp);\n // Other op should be delete, we could be an insert or retain\n // Insert + delete cancels out\n } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n delta.push(otherOp);\n }\n }\n }\n return delta.chop();\n};\n\nDelta.prototype.concat = function (other) {\n var delta = new Delta(this.ops.slice());\n if (other.ops.length > 0) {\n delta.push(other.ops[0]);\n delta.ops = delta.ops.concat(other.ops.slice(1));\n }\n return delta;\n};\n\nDelta.prototype.diff = function (other, index) {\n if (this.ops === other.ops) {\n return new Delta();\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 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 while (length > 0) {\n var opLength = 0;\n switch (component[0]) {\n case diff.INSERT:\n opLength = Math.min(otherIter.peekLength(), length);\n delta.push(otherIter.next(opLength));\n break;\n case diff.DELETE:\n opLength = Math.min(length, thisIter.peekLength());\n thisIter.next(opLength);\n delta['delete'](opLength);\n break;\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 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 break;\n }\n length -= opLength;\n }\n });\n return delta.chop();\n};\n\nDelta.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 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' ?\n thisOp.insert.indexOf(newline, start) - start : -1;\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 i += 1;\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {}, i);\n }\n};\n\nDelta.prototype.transform = function (other, priority) {\n priority = !!priority;\n if (typeof other === 'number') {\n return this.transformPosition(other, priority);\n }\n var thisIter = op.iterator(this.ops);\n var otherIter = op.iterator(other.ops);\n var delta = new Delta();\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 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 return delta.chop();\n};\n\nDelta.prototype.transformPosition = function (index, priority) {\n priority = !!priority;\n var thisIter = op.iterator(this.ops);\n var offset = 0;\n while (thisIter.hasNext() && offset <= index) {\n var length = thisIter.peekLength();\n var nextType = thisIter.peekType();\n thisIter.next();\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 offset += length;\n }\n return index;\n};\n\n\nmodule.exports = Delta;\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) {/**/}\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0],\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(17);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(12);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar NEWLINE_LENGTH = 1;\n\nvar BlockEmbed = function (_Embed) {\n _inherits(BlockEmbed, _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 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 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 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}(_embed2.default);\n\nBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nvar 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 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 this.cache = {};\n }\n }, {\n key: 'formatAt',\n value: function formatAt(index, length, name, value) {\n if (length <= 0) return;\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 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 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 this.cache = {};\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 _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n if (head instanceof _break2.default) {\n head.remove();\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 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 this.cache = {};\n }\n }, {\n key: 'optimize',\n value: function optimize() {\n _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);\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 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 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 this.cache = {};\n return next;\n }\n }\n }]);\n\n return Block;\n}(_parchment2.default.Block);\n\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [_inline2.default, _embed2.default, _text2.default];\n\nfunction bubbleFormats(blot) {\n var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = (0, _extend2.default)(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\nexports.bubbleFormats = bubbleFormats;\nexports.BlockEmbed = BlockEmbed;\nexports.default = Block;\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _eventemitter = __webpack_require__(53);\n\nvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:events');\n\nvar 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.on('error', debug.error);\n return _this;\n }\n\n _createClass(Emitter, [{\n key: 'emit',\n value: function emit() {\n debug.log.apply(debug, arguments);\n _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n }\n }]);\n\n return Emitter;\n}(_eventemitter2.default);\n\nEmitter.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};\nEmitter.sources = {\n API: 'api',\n SILENT: 'silent',\n USER: 'user'\n};\n\nexports.default = Emitter;\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.overload = exports.expandConfig = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\n__webpack_require__(43);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(14);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(5);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(15);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(29);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill');\n\nvar Quill = function () {\n _createClass(Quill, null, [{\n key: 'debug',\n value: function debug(limit) {\n if (limit === true) {\n limit = 'log';\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 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 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 this.imports[path] = target;\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 if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (this.options.debug) {\n Quill.debug(this.options.debug);\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.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 scrollingContainer: this.scrollingContainer,\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 if (this.options.placeholder) {\n this.root.setAttribute('data-placeholder', this.options.placeholder);\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 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\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\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.selection.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\n return modify.call(this, function () {\n var range = _this4.getSelection(true);\n var change = new _quillDelta2.default();\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 return change;\n } else {\n change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n }\n _this4.setSelection(range, _emitter4.default.sources.SILENT);\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\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\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\n var bounds = void 0;\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 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\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();\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\n if (focus) this.focus();\n this.update(); // Make sure we access getRange with editor in consistent state\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\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\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\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\n return modify.call(this, function () {\n return _this9.editor.removeFormat(index, length);\n }, source, index);\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\n return modify.call(this, function () {\n delta = new _quillDelta2.default(delta);\n var length = _this10.getLength();\n var deleted = _this10.editor.deleteText(0, length);\n var applied = _this10.editor.applyDelta(delta);\n var lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n _this10.editor.deleteText(_this10.getLength() - 1, 1);\n applied.delete(1);\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\n this.selection.setRange(new _selection.Range(index, length), source);\n }\n if (source !== _emitter4.default.sources.SILENT) {\n this.selection.scrollIntoView();\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\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\n var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\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\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\nQuill.DEFAULTS = {\n bounds: null,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n scrollingContainer: null,\n strict: true,\n theme: 'default'\n};\nQuill.events = _emitter4.default.events;\nQuill.sources = _emitter4.default.sources;\n// eslint-disable-next-line no-undef\nQuill.version = false ? 'dev' : \"1.2.3\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction 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 if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\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 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 return config;\n }, {});\n // Special case toolbar shorthand\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 userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, 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 return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\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 }\n // Handle format being object, two format name/value strings or excluded\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 }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\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 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 return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 7 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Embed = function (_Parchment$Embed) {\n _inherits(Embed, _Parchment$Embed);\n\n function Embed() {\n _classCallCheck(this, Embed);\n\n return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));\n }\n\n return Embed;\n}(_parchment2.default.Embed);\n\nexports.default = Embed;\n\n/***/ }),\n/* 8 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _text = __webpack_require__(12);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 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() {\n _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);\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 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\nInline.allowedChildren = [Inline, _embed2.default, _text2.default];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = ['cursor', 'inline', // Must be lower\n'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher\n];\n\nexports.default = Inline;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar 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\nModule.DEFAULTS = {};\n\nexports.default = Module;\n\n/***/ }),\n/* 10 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nvar levels = ['error', 'warn', 'log', 'info'];\nvar level = 'warn';\n\nfunction debug(method) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\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[method].apply(console, args); // eslint-disable-line no-console\n }\n}\n\nfunction namespace(ns) {\n return levels.reduce(function (logger, method) {\n logger[method] = debug.bind(console, method, ns);\n return logger;\n }, {});\n}\n\ndebug.level = namespace.level = function (newLevel) {\n level = newLevel;\n};\n\nexports.default = namespace;\n\n/***/ }),\n/* 11 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(52);\nvar isArguments = __webpack_require__(51);\n\nvar deepEqual = module.exports = function (actual, expected, opts) {\n if (!opts) opts = {};\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n\n } else if (actual instanceof Date && expected instanceof Date) {\n return actual.getTime() === expected.getTime();\n\n // 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;\n\n // 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\nfunction isUndefinedOrNull(value) {\n return value === null || value === undefined;\n}\n\nfunction isBuffer (x) {\n if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n return false;\n }\n if (x.length > 0 && typeof x[0] !== 'number') return false;\n return true;\n}\n\nfunction objEquiv(a, b, opts) {\n var i, key;\n if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n return false;\n // an identical 'prototype' property.\n if (a.prototype !== b.prototype) return false;\n //~~~I've managed to break Object.keys through screwy arguments passing.\n // Converting to array solves the problem.\n if (isArguments(a)) {\n if (!isArguments(b)) {\n return false;\n }\n a = pSlice.call(a);\n b = pSlice.call(b);\n return deepEqual(a, b, opts);\n }\n if (isBuffer(a)) {\n if (!isBuffer(b)) {\n return false;\n }\n if (a.length !== b.length) return false;\n for (i = 0; i < a.length; i++) {\n if (a[i] !== b[i]) return false;\n }\n return true;\n }\n try {\n var ka = objectKeys(a),\n kb = objectKeys(b);\n } catch (e) {//happens when one is a string literal and the other isn't\n return false;\n }\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length != kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] != kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\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 return typeof a === typeof b;\n}\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nexports.default = TextBlot;\n\n/***/ }),\n/* 13 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar Attributor = (function () {\n function Attributor(attrName, keyName, options) {\n if (options === void 0) { options = {}; }\n this.attrName = attrName;\n this.keyName = keyName;\n var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n if (options.scope != null) {\n // Ignore type bits, force attribute bit\n this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n }\n else {\n this.scope = Registry.Scope.ATTRIBUTE;\n }\n if (options.whitelist != null)\n this.whitelist = options.whitelist;\n }\n Attributor.keys = function (node) {\n return [].map.call(node.attributes, function (item) {\n return item.name;\n });\n };\n Attributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.setAttribute(this.keyName, value);\n return true;\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 && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n return true;\n }\n return false;\n };\n Attributor.prototype.remove = function (node) {\n node.removeAttribute(this.keyName);\n };\n Attributor.prototype.value = function (node) {\n var value = node.getAttribute(this.keyName);\n return this.canAdd(node, value) ? value : '';\n };\n return Attributor;\n}());\nexports.default = Attributor;\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(16);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(25);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _clone = __webpack_require__(19);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar 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.batch = true;\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 if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\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 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 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 if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\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 return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batch = false;\n this.scroll.optimize();\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\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\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 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\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\n var lines = [],\n leaves = [];\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 var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\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 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\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 child = this.scroll.children.head;\n return child.length() <= 1 && Object.keys(child.formats()).length == 0;\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 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 suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\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\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\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 if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\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 return merged;\n }, {});\n}\n\nfunction 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({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\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 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 return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 15 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Range = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _clone = __webpack_require__(19);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(5);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar debug = (0, _logger2.default)('quill:selection');\n\nvar 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\nvar 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.root = this.scroll.domNode;\n this.root.addEventListener('compositionstart', function () {\n _this.composing = true;\n });\n this.root.addEventListener('compositionend', function () {\n _this.composing = false;\n });\n this.cursor = _parchment2.default.create('cursor', this);\n // savedRange is last non-null range\n this.lastRange = this.savedRange = new Range(0, 0);\n ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {\n _this.root.addEventListener(eventName, function () {\n // When range used to be a selection and user click within the selection,\n // the range now being a cursor has not updated yet without setTimeout\n setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);\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 var native = _this.getNativeRange();\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 _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.update(_emitter4.default.sources.SILENT);\n }\n\n _createClass(Selection, [{\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 if (nativeRange.start.node !== this.cursor.textNode) {\n var blot = _parchment2.default.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\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 this.cursor.attach();\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\n var scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\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 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\n var range = document.createRange();\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\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\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n var side = 'left';\n var rect = void 0;\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 rect = range.getBoundingClientRect();\n } else {\n rect = leaf.domNode.getBoundingClientRect();\n if (offset > 0) side = 'right';\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 if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n return null;\n }\n var range = {\n start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n native: nativeRange\n };\n [range.start, range.end].forEach(function (position) {\n var node = position.node,\n offset = position.offset;\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 position.node = node, position.offset = offset;\n });\n debug.info('getNativeRange', range);\n return range;\n }\n }, {\n key: 'getRange',\n value: function getRange() {\n var _this2 = this;\n\n var range = this.getNativeRange();\n if (range == null) return [null, null];\n var positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\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 var index = blot.offset(_this2.scroll);\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 start = Math.min.apply(Math, _toConsumableArray(indexes)),\n end = Math.max.apply(Math, _toConsumableArray(indexes));\n end = Math.min(end, this.scroll.length() - 1);\n return [new Range(start, end - start), range];\n }\n }, {\n key: 'hasFocus',\n value: function hasFocus() {\n return document.activeElement === this.root;\n }\n }, {\n key: 'scrollIntoView',\n value: function scrollIntoView() {\n var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;\n\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 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 if (first == null || last == null) return;\n var scroller = this.scroll.scrollingContainer;\n var scrollBounds = scroller.getBoundingClientRect();\n if (bounds.top < scrollBounds.top) {\n scroller.scrollTop -= scrollBounds.top - bounds.top;\n } else if (bounds.bottom > scrollBounds.bottom) {\n scroller.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\n debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n return;\n }\n var selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n var native = (this.getNativeRange() || {}).native;\n if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\n if (startNode.tagName == \"BR\") {\n startOffset = [].indexOf.call(startNode.parentNode.childNodes, startNode);\n startNode = startNode.parentNode;\n }\n if (endNode.tagName == \"BR\") {\n endOffset = [].indexOf.call(endNode.parentNode.childNodes, endNode);\n endNode = endNode.parentNode;\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 _this3 = this;\n\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 debug.info('setRange', range);\n if (range != null) {\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 var node = void 0,\n _scroll$leaf5 = _this3.scroll.leaf(index),\n _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n leaf = _scroll$leaf6[0],\n offset = _scroll$leaf6[1];\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\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n this.setNativeRange.apply(this, _toConsumableArray(args).concat([force]));\n } else {\n this.setNativeRange(null);\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\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 if (this.lastRange != null) {\n this.savedRange = this.lastRange;\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 var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\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\nfunction contains(parent, descendant) {\n try {\n // Firefox inserts inaccessible nodes around video elements\n descendant.parentNode;\n } catch (e) {\n return false;\n }\n // IE11 has bug with Text nodes\n // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n if (descendant instanceof Text) {\n descendant = descendant.parentNode;\n }\n return parent.contains(descendant);\n}\n\nexports.Range = Range;\nexports.default = Selection;\n\n/***/ }),\n/* 16 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.Code = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(12);\n\nvar _text2 = _interopRequireDefault(_text);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\nvar 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 if (text.endsWith('\\n')) {\n // Should always be true\n text = text.slice(0, -1);\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 _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 if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n return;\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 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 if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\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() {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(_parchment2.default.create('text', '\\n'));\n }\n _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);\n var next = this.next;\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();\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 [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n var blot = _parchment2.default.find(node);\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 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\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\nexports.Code = Code;\nexports.default = CodeBlock;\n\n/***/ }),\n/* 17 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Break = function (_Embed) {\n _inherits(Break, _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}(_embed2.default);\n\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\nexports.default = Break;\n\n/***/ }),\n/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _emitter = __webpack_require__(5);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(17);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(24);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _code = __webpack_require__(16);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nfunction isLine(blot) {\n return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n}\n\nvar 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 _this.scrollingContainer = config.scrollingContainer;\n if (Array.isArray(config.whitelist)) {\n _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n whitelist[format] = true;\n return whitelist;\n }, {});\n }\n _this.optimize();\n _this.enable();\n return _this;\n }\n\n _createClass(Scroll, [{\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 if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {\n if (last instanceof _code2.default) {\n last.deleteAt(last.length() - 1, 1);\n }\n var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\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\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 _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\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 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 this.appendChild(blot);\n if (def == null && value.endsWith('\\n')) {\n value = value.slice(0, -1);\n }\n blot.insertAt(0, value, def);\n } else {\n var embed = _parchment2.default.create(value, def);\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 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 wrapper.appendChild(blot);\n blot = wrapper;\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 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 lengthLeft -= length;\n });\n return lines;\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\n if (this.batch === true) return;\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);\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 if (typeof mutations === 'string') {\n source = mutations;\n }\n if (!Array.isArray(mutations)) {\n mutations = this.observer.takeRecords();\n }\n if (mutations.length > 0) {\n this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\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\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\nexports.default = Scroll;\n\n/***/ }),\n/* 19 */\n/***/ (function(module, exports) {\n\nvar clone = (function() {\n'use strict';\n\nfunction _instanceof(obj, type) {\n return type != null && obj instanceof type;\n}\n\nvar nativeMap;\ntry {\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() {};\n}\n\nvar nativeSet;\ntry {\n nativeSet = Set;\n} catch(_) {\n nativeSet = function() {};\n}\n\nvar nativePromise;\ntry {\n nativePromise = Promise;\n} catch(_) {\n nativePromise = function() {};\n}\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*/\nfunction 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 }\n // maintain two arrays for circular references, where corresponding parents\n // and children have the same index\n var allParents = [];\n var allChildren = [];\n\n var useBuffer = typeof Buffer != 'undefined';\n\n if (typeof circular == 'undefined')\n circular = true;\n\n if (typeof depth == 'undefined')\n depth = Infinity;\n\n // recurse this function so we don't reset allParents and allChildren\n function _clone(parent, depth) {\n // cloning null always returns null\n if (parent === null)\n return null;\n\n if (depth === 0)\n return parent;\n\n var child;\n var proto;\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 child = new Buffer(parent.length);\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 }\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 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 var valueChild = _clone(value, depth - 1);\n child.set(keyChild, valueChild);\n });\n }\n if (_instanceof(parent, nativeSet)) {\n parent.forEach(function(value) {\n var entryChild = _clone(value, depth - 1);\n child.add(entryChild);\n });\n }\n\n for (var i in parent) {\n var attrs;\n if (proto) {\n attrs = Object.getOwnPropertyDescriptor(proto, i);\n }\n\n if (attrs && attrs.set == null) {\n continue;\n }\n child[i] = _clone(parent[i], depth - 1);\n }\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(parent);\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 if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n continue;\n }\n child[symbol] = _clone(parent[symbol], depth - 1);\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 for (var i = 0; i < allPropertyNames.length; i++) {\n var propertyName = allPropertyNames[i];\n var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n if (descriptor && descriptor.enumerable) {\n continue;\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/**\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 */\nclone.clonePrototype = function clonePrototype(parent) {\n if (parent === null)\n return null;\n\n var c = function () {};\n c.prototype = parent;\n return new c();\n};\n\n// private utility functions\n\nfunction __objToStr(o) {\n return Object.prototype.toString.call(o);\n}\nclone.__objToStr = __objToStr;\n\nfunction __isDate(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Date]';\n}\nclone.__isDate = __isDate;\n\nfunction __isArray(o) {\n return typeof o === 'object' && __objToStr(o) === '[object Array]';\n}\nclone.__isArray = __isArray;\n\nfunction __isRegExp(o) {\n return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n}\nclone.__isRegExp = __isRegExp;\n\nfunction __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}\nclone.__getRegExpFlags = __getRegExpFlags;\n\nreturn clone;\n})();\n\nif (typeof module === 'object' && module.exports) {\n module.exports = clone;\n}\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(11);\nvar extend = __webpack_require__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(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 return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (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 var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (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\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\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 if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\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 return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.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\nIterator.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 return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 21 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar linked_list_1 = __webpack_require__(61);\nvar shadow_1 = __webpack_require__(34);\nvar Registry = __webpack_require__(1);\nvar ContainerBlot = (function (_super) {\n __extends(ContainerBlot, _super);\n function ContainerBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ContainerBlot.prototype.appendChild = function (other) {\n this.insertBefore(other);\n };\n ContainerBlot.prototype.attach = function () {\n var _this = this;\n _super.prototype.attach.call(this);\n this.children = new linked_list_1.default();\n // Need to be reversed for if DOM nodes already in order\n [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n try {\n var child = makeBlot(node);\n _this.insertBefore(child, _this.children.head);\n }\n catch (err) {\n if (err instanceof Registry.ParchmentError)\n return;\n else\n throw err;\n }\n });\n };\n ContainerBlot.prototype.deleteAt = function (index, length) {\n if (index === 0 && length === this.length()) {\n return this.remove();\n }\n this.children.forEachAt(index, length, function (child, offset, length) {\n child.deleteAt(offset, length);\n });\n };\n ContainerBlot.prototype.descendant = function (criteria, index) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n return [child, offset];\n }\n else if (child instanceof ContainerBlot) {\n return child.descendant(criteria, offset);\n }\n else {\n return [null, -1];\n }\n };\n ContainerBlot.prototype.descendants = function (criteria, index, length) {\n if (index === void 0) { index = 0; }\n if (length === void 0) { length = Number.MAX_VALUE; }\n var descendants = [], lengthLeft = length;\n this.children.forEachAt(index, length, function (child, index, length) {\n if ((criteria.blotName == null && criteria(child)) ||\n (criteria.blotName != null && child instanceof criteria)) {\n descendants.push(child);\n }\n if (child instanceof ContainerBlot) {\n descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n }\n lengthLeft -= length;\n });\n return descendants;\n };\n ContainerBlot.prototype.detach = function () {\n this.children.forEach(function (child) {\n child.detach();\n });\n _super.prototype.detach.call(this);\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 ContainerBlot.prototype.insertAt = function (index, value, def) {\n var _a = this.children.find(index), child = _a[0], offset = _a[1];\n if (child) {\n child.insertAt(offset, value, def);\n }\n else {\n var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n this.appendChild(blot);\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 childBlot.insertInto(this, refBlot);\n };\n ContainerBlot.prototype.length = function () {\n return this.children.reduce(function (memo, child) {\n return memo + child.length();\n }, 0);\n };\n ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n this.children.forEach(function (child) {\n targetParent.insertBefore(child, refNode);\n });\n };\n ContainerBlot.prototype.optimize = function () {\n _super.prototype.optimize.call(this);\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();\n }\n else {\n this.remove();\n }\n }\n };\n ContainerBlot.prototype.path = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n var position = [[this, index]];\n if (child instanceof ContainerBlot) {\n return position.concat(child.path(offset, inclusive));\n }\n else if (child != null) {\n position.push([child, offset]);\n }\n return position;\n };\n ContainerBlot.prototype.removeChild = function (child) {\n this.children.remove(child);\n };\n ContainerBlot.prototype.replace = function (target) {\n if (target instanceof ContainerBlot) {\n target.moveChildren(this);\n }\n _super.prototype.replace.call(this, target);\n };\n ContainerBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\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 ContainerBlot.prototype.unwrap = function () {\n this.moveChildren(this.parent, this.next);\n this.remove();\n };\n ContainerBlot.prototype.update = function (mutations) {\n var _this = this;\n var addedNodes = [], 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 && node.tagName !== 'IFRAME' &&\n (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n return;\n }\n var blot = Registry.find(node);\n if (blot == null)\n return;\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)\n return 0;\n if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n return 1;\n }\n return -1;\n }).forEach(function (node) {\n var refBlot = null;\n if (node.nextSibling != null) {\n refBlot = Registry.find(node.nextSibling);\n }\n var blot = makeBlot(node);\n if (blot.next != refBlot || blot.next == null) {\n if (blot.parent != null) {\n blot.parent.removeChild(_this);\n }\n _this.insertBefore(blot, refBlot);\n }\n });\n };\n return ContainerBlot;\n}(shadow_1.default));\nfunction makeBlot(node) {\n var blot = Registry.find(node);\n if (blot == null) {\n try {\n blot = Registry.create(node);\n }\n catch (e) {\n blot = Registry.create(Registry.Scope.INLINE);\n [].slice.call(node.childNodes).forEach(function (child) {\n blot.domNode.appendChild(child);\n });\n node.parentNode.replaceChild(blot.domNode, node);\n blot.attach();\n }\n }\n return blot;\n}\nexports.default = ContainerBlot;\n\n\n/***/ }),\n/* 22 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(13);\nvar store_1 = __webpack_require__(32);\nvar container_1 = __webpack_require__(21);\nvar Registry = __webpack_require__(1);\nvar FormatBlot = (function (_super) {\n __extends(FormatBlot, _super);\n function FormatBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n FormatBlot.formats = function (domNode) {\n if (typeof this.tagName === 'string') {\n return true;\n }\n else if (Array.isArray(this.tagName)) {\n return domNode.tagName.toLowerCase();\n }\n return undefined;\n };\n FormatBlot.prototype.attach = function () {\n _super.prototype.attach.call(this);\n this.attributes = new store_1.default(this.domNode);\n };\n FormatBlot.prototype.format = function (name, value) {\n var format = Registry.query(name);\n if (format instanceof attributor_1.default) {\n this.attributes.attribute(format, value);\n }\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 FormatBlot.prototype.formats = function () {\n var formats = this.attributes.values();\n var format = this.statics.formats(this.domNode);\n if (format != null) {\n formats[this.statics.blotName] = format;\n }\n return formats;\n };\n FormatBlot.prototype.replaceWith = function (name, value) {\n var replacement = _super.prototype.replaceWith.call(this, name, value);\n this.attributes.copy(replacement);\n return replacement;\n };\n FormatBlot.prototype.update = function (mutations) {\n var _this = this;\n _super.prototype.update.call(this, mutations);\n if (mutations.some(function (mutation) {\n return mutation.target === _this.domNode && mutation.type === 'attributes';\n })) {\n this.attributes.build();\n }\n };\n FormatBlot.prototype.wrap = function (name, value) {\n var wrapper = _super.prototype.wrap.call(this, name, value);\n if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n this.attributes.move(wrapper);\n }\n return wrapper;\n };\n return FormatBlot;\n}(container_1.default));\nexports.default = FormatBlot;\n\n\n/***/ }),\n/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar shadow_1 = __webpack_require__(34);\nvar Registry = __webpack_require__(1);\nvar LeafBlot = (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n LeafBlot.value = function (domNode) {\n return true;\n };\n LeafBlot.prototype.index = function (node, offset) {\n if (node !== this.domNode)\n return -1;\n return Math.min(offset, 1);\n };\n LeafBlot.prototype.position = function (index, inclusive) {\n var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n if (index > 0)\n offset += 1;\n return [this.parent.domNode, offset];\n };\n LeafBlot.prototype.value = function () {\n return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n var _a;\n };\n return LeafBlot;\n}(shadow_1.default));\nLeafBlot.scope = Registry.Scope.INLINE_BLOT;\nexports.default = LeafBlot;\n\n\n/***/ }),\n/* 24 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\nexports.default = Container;\n\n/***/ }),\n/* 25 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _text = __webpack_require__(12);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _emitter = __webpack_require__(5);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar Cursor = function (_Embed) {\n _inherits(Cursor, _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 _this.domNode.appendChild(_this.textNode);\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 var target = this,\n index = 0;\n while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n index += target.offset(target.parent);\n target = target.parent;\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 this.parent = null;\n }\n }, {\n key: 'restore',\n value: function restore() {\n var _this2 = this;\n\n if (this.selection.composing) return;\n if (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 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 }\n // Link format will insert text outside of anchor tag\n while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n }\n if (this.textNode.data !== Cursor.CONTENTS) {\n var text = this.textNode.data.split(Cursor.CONTENTS).join('');\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 this.remove();\n if (start == null) return;\n this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\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\n _this2.selection.setNativeRange(restoreText, start, restoreText, end);\n });\n }\n }, {\n key: 'update',\n value: function update(mutations) {\n var _this3 = this;\n\n mutations.forEach(function (mutation) {\n if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {\n _this3.restore();\n }\n });\n }\n }, {\n key: 'value',\n value: function value() {\n return '';\n }\n }]);\n\n return Cursor;\n}(_embed2.default);\n\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\n\nexports.default = Cursor;\n\n/***/ }),\n/* 26 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 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\nvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar ColorStyle = new ColorAttributor('color', 'color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.ColorAttributor = ColorAttributor;\nexports.ColorClass = ColorClass;\nexports.ColorStyle = ColorStyle;\n\n/***/ }),\n/* 27 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.sanitize = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 value = this.sanitize(value);\n node.setAttribute('href', value);\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, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n }\n }]);\n\n return Link;\n}(_inline2.default);\n\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\n\nfunction _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\nexports.default = Link;\nexports.sanitize = _sanitize;\n\n/***/ }),\n/* 28 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _dropdown = __webpack_require__(88);\n\nvar _dropdown2 = _interopRequireDefault(_dropdown);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar 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.container.classList.toggle('ql-expanded');\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n _createClass(Picker, [{\n key: 'buildItem',\n value: function buildItem(option) {\n var _this2 = this;\n\n var item = document.createElement('span');\n item.classList.add('ql-picker-item');\n if (option.hasAttribute('value')) {\n item.setAttribute('data-value', option.getAttribute('value'));\n }\n if (option.textContent) {\n item.setAttribute('data-label', option.textContent);\n }\n item.addEventListener('click', function () {\n _this2.selectItem(item, true);\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 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');\n [].slice.call(this.select.options).forEach(function (option) {\n var item = _this3.buildItem(option);\n options.appendChild(item);\n if (option.hasAttribute('selected')) {\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: 'close',\n value: function close() {\n this.container.classList.remove('ql-expanded');\n }\n }, {\n key: 'selectItem',\n value: function selectItem(item) {\n var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\n var selected = this.container.querySelector('.ql-selected');\n if (item === selected) return;\n if (selected != null) {\n selected.classList.remove('ql-selected');\n }\n if (item == null) return;\n item.classList.add('ql-selected');\n this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\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 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 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 this.close();\n }\n }\n }, {\n key: 'update',\n value: function update() {\n var option = void 0;\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 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\nexports.default = Picker;\n\n/***/ }),\n/* 29 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar 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\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\nexports.default = Theme;\n\n/***/ }),\n/* 30 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SHORTKEY = exports.default = undefined;\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _clone = __webpack_require__(19);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(11);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _op = __webpack_require__(20);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:keyboard');\n\nvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\nvar 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 if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n return !!binding[key] !== evt[key] && binding[key] !== null;\n })) {\n return false;\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 (_this.options.bindings[name]) {\n _this.addBinding(_this.options.bindings[name]);\n }\n });\n _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n if (/Firefox/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n // this.addBinding({ key: Keyboard.keys.BACKSPACE }, { ctrlKey: true }, function() {});\n // this.addBinding({ key: Keyboard.keys.DELETE }, { ctrlKey: true }, function() {});\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { empty: true, shortKey: true }, handleBackspace);\n _this.listen();\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\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\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 var range = _this2.quill.getSelection();\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 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 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 if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.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\nKeyboard.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 format: ['blockquote', '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.blockquote != null) {\n this.quill.format('blockquote', false, _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, context) {\n if (!context.collapsed) {\n this.quill.scroll.deleteAt(range.index, range.length);\n }\n this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\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 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: { list: 'checked' },\n handler: function handler(range) {\n this.quill.scroll.insertAt(range.index, '\\n');\n\n var _quill$getLine3 = this.quill.getLine(range.index + 1),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 1),\n line = _quill$getLine4[0];\n\n line.format('list', 'unchecked');\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range) {\n this.quill.scroll.insertAt(range.index, '\\n');\n this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(1\\.|-|\\[ \\]|\\[x\\])$/,\n handler: function handler(range, context) {\n if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;\n var length = context.prefix.length;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.scroll.deleteAt(range.index - length, length);\n this.quill.formatLine(range.index - length, 1, 'list', value, _quill2.default.sources.USER);\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 this.quill.format('code-block', false, _quill2.default.sources.USER);\n this.quill.deleteText(range.index - 2, 1, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 1),\n line = _quill$getLine6[0];\n\n var formats = {};\n if (context.offset === 0) {\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 var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.selection.scrollIntoView();\n}\n\nfunction 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 this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n}\n\nfunction handleDeleteRange(range) {\n this.quill.deleteText(range, _quill2.default.sources.USER);\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n}\n\nfunction 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 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 return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\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 _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\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 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 if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\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\nfunction 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\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\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 if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 31 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(13);\nfunction 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}\nvar ClassAttributor = (function (_super) {\n __extends(ClassAttributor, _super);\n function ClassAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\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 ClassAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n this.remove(node);\n node.classList.add(this.keyName + \"-\" + value);\n return true;\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 if (node.classList.length === 0) {\n node.removeAttribute('class');\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 return this.canAdd(node, value) ? value : '';\n };\n return ClassAttributor;\n}(attributor_1.default));\nexports.default = ClassAttributor;\n\n\n/***/ }),\n/* 32 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(13);\nvar class_1 = __webpack_require__(31);\nvar style_1 = __webpack_require__(33);\nvar Registry = __webpack_require__(1);\nvar AttributorStore = (function () {\n function AttributorStore(domNode) {\n this.attributes = {};\n this.domNode = domNode;\n this.build();\n }\n AttributorStore.prototype.attribute = function (attribute, value) {\n if (value) {\n if (attribute.add(this.domNode, value)) {\n if (attribute.value(this.domNode) != null) {\n this.attributes[attribute.attrName] = attribute;\n }\n else {\n delete this.attributes[attribute.attrName];\n }\n }\n }\n else {\n attribute.remove(this.domNode);\n delete this.attributes[attribute.attrName];\n }\n };\n AttributorStore.prototype.build = function () {\n var _this = this;\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 if (attr instanceof attributor_1.default) {\n _this.attributes[attr.attrName] = attr;\n }\n });\n };\n AttributorStore.prototype.copy = function (target) {\n var _this = this;\n Object.keys(this.attributes).forEach(function (key) {\n var value = _this.attributes[key].value(_this.domNode);\n target.format(key, value);\n });\n };\n AttributorStore.prototype.move = function (target) {\n var _this = this;\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 AttributorStore.prototype.values = function () {\n var _this = this;\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 return AttributorStore;\n}());\nexports.default = AttributorStore;\n\n\n/***/ }),\n/* 33 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = __webpack_require__(13);\nfunction 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}\nvar StyleAttributor = (function (_super) {\n __extends(StyleAttributor, _super);\n function StyleAttributor() {\n return _super !== null && _super.apply(this, arguments) || this;\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 StyleAttributor.prototype.add = function (node, value) {\n if (!this.canAdd(node, value))\n return false;\n node.style[camelize(this.keyName)] = value;\n return true;\n };\n StyleAttributor.prototype.remove = function (node) {\n node.style[camelize(this.keyName)] = '';\n if (!node.getAttribute('style')) {\n node.removeAttribute('style');\n }\n };\n StyleAttributor.prototype.value = function (node) {\n var value = node.style[camelize(this.keyName)];\n return this.canAdd(node, value) ? value : '';\n };\n return StyleAttributor;\n}(attributor_1.default));\nexports.default = StyleAttributor;\n\n\n/***/ }),\n/* 34 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = __webpack_require__(1);\nvar ShadowBlot = (function () {\n function ShadowBlot(domNode) {\n this.domNode = domNode;\n this.attach();\n }\n Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n // Hack for accessing inherited static methods\n get: function () {\n return this.constructor;\n },\n enumerable: true,\n configurable: true\n });\n ShadowBlot.create = function (value) {\n if (this.tagName == null) {\n throw new Registry.ParchmentError('Blot definition missing tagName');\n }\n var node;\n if (Array.isArray(this.tagName)) {\n if (typeof value === 'string') {\n value = value.toUpperCase();\n if (parseInt(value).toString() === value) {\n value = parseInt(value);\n }\n }\n if (typeof value === 'number') {\n node = document.createElement(this.tagName[value - 1]);\n }\n else if (this.tagName.indexOf(value) > -1) {\n node = document.createElement(value);\n }\n else {\n node = document.createElement(this.tagName[0]);\n }\n }\n else {\n node = document.createElement(this.tagName);\n }\n if (this.className) {\n node.classList.add(this.className);\n }\n return node;\n };\n ShadowBlot.prototype.attach = function () {\n this.domNode[Registry.DATA_KEY] = { blot: this };\n };\n ShadowBlot.prototype.clone = function () {\n var domNode = this.domNode.cloneNode();\n return Registry.create(domNode);\n };\n ShadowBlot.prototype.detach = function () {\n if (this.parent != null)\n this.parent.removeChild(this);\n delete this.domNode[Registry.DATA_KEY];\n };\n ShadowBlot.prototype.deleteAt = function (index, length) {\n var blot = this.isolate(index, length);\n blot.remove();\n };\n ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n var blot = this.isolate(index, length);\n if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n blot.wrap(name, value);\n }\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 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 ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n if (this.parent != null) {\n this.parent.children.remove(this);\n }\n parentBlot.children.insertBefore(this, refBlot);\n if (refBlot != null) {\n var refDomNode = refBlot.domNode;\n }\n if (this.next == null || this.domNode.nextSibling != refDomNode) {\n parentBlot.domNode.insertBefore(this.domNode, (typeof refDomNode !== 'undefined') ? refDomNode : null);\n }\n this.parent = parentBlot;\n };\n ShadowBlot.prototype.isolate = function (index, length) {\n var target = this.split(index);\n target.split(length);\n return target;\n };\n ShadowBlot.prototype.length = function () {\n return 1;\n };\n ;\n ShadowBlot.prototype.offset = function (root) {\n if (root === void 0) { root = this.parent; }\n if (this.parent == null || this == root)\n return 0;\n return this.parent.children.offset(this) + this.parent.offset(root);\n };\n ShadowBlot.prototype.optimize = function () {\n // TODO clean up once we use WeakMap\n if (this.domNode[Registry.DATA_KEY] != null) {\n delete this.domNode[Registry.DATA_KEY].mutations;\n }\n };\n ShadowBlot.prototype.remove = function () {\n if (this.domNode.parentNode != null) {\n this.domNode.parentNode.removeChild(this.domNode);\n }\n this.detach();\n };\n ShadowBlot.prototype.replace = function (target) {\n if (target.parent == null)\n return;\n target.parent.insertBefore(this, target.next);\n target.remove();\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 ShadowBlot.prototype.split = function (index, force) {\n return index === 0 ? this : this.next;\n };\n ShadowBlot.prototype.update = function (mutations) {\n if (mutations === void 0) { mutations = []; }\n // Nothing to do by default\n };\n ShadowBlot.prototype.wrap = function (name, value) {\n var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n if (this.parent != null) {\n this.parent.insertBefore(wrapper, this.next);\n }\n wrapper.appendChild(this);\n return wrapper;\n };\n return ShadowBlot;\n}());\nShadowBlot.blotName = 'abstract';\nexports.default = ShadowBlot;\n\n\n/***/ }),\n/* 35 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(17);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(24);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(25);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(18);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(12);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(45);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(42);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(30);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\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\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\nmodule.exports = _quill2.default;\n\n/***/ }),\n/* 36 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\nvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\nvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\nexports.AlignAttribute = AlignAttribute;\nexports.AlignClass = AlignClass;\nexports.AlignStyle = AlignStyle;\n\n/***/ }),\n/* 37 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.BackgroundStyle = exports.BackgroundClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _color = __webpack_require__(26);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n scope: _parchment2.default.Scope.INLINE\n});\nvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nexports.BackgroundClass = BackgroundClass;\nexports.BackgroundStyle = BackgroundStyle;\n\n/***/ }),\n/* 38 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar config = {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\nvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\nvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\nexports.DirectionAttribute = DirectionAttribute;\nexports.DirectionClass = DirectionClass;\nexports.DirectionStyle = DirectionStyle;\n\n/***/ }),\n/* 39 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.FontClass = exports.FontStyle = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar config = {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\nvar 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\nvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexports.FontStyle = FontStyle;\nexports.FontClass = FontClass;\n\n/***/ }),\n/* 40 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.SizeStyle = exports.SizeClass = undefined;\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n scope: _parchment2.default.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexports.SizeClass = SizeClass;\nexports.SizeStyle = SizeStyle;\n\n/***/ }),\n/* 41 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(79),\n 'center': __webpack_require__(77),\n 'right': __webpack_require__(80),\n 'justify': __webpack_require__(78)\n },\n 'background': __webpack_require__(81),\n 'blockquote': __webpack_require__(82),\n 'bold': __webpack_require__(83),\n 'clean': __webpack_require__(84),\n 'code': __webpack_require__(55),\n 'code-block': __webpack_require__(55),\n 'color': __webpack_require__(85),\n 'direction': {\n '': __webpack_require__(86),\n 'rtl': __webpack_require__(87)\n },\n 'float': {\n 'center': __webpack_require__(89),\n 'full': __webpack_require__(90),\n 'left': __webpack_require__(91),\n 'right': __webpack_require__(92)\n },\n 'formula': __webpack_require__(93),\n 'header': {\n '1': __webpack_require__(95),\n '2': __webpack_require__(94)\n },\n 'italic': __webpack_require__(98),\n 'image': __webpack_require__(96),\n 'indent': {\n '+1': __webpack_require__(97),\n '-1': __webpack_require__(103)\n },\n 'link': __webpack_require__(99),\n 'list': {\n 'ordered': __webpack_require__(102),\n 'bullet': __webpack_require__(100),\n 'check': __webpack_require__(101)\n },\n 'script': {\n 'sub': __webpack_require__(105),\n 'super': __webpack_require__(106)\n },\n 'strike': __webpack_require__(104),\n 'underline': __webpack_require__(107),\n 'video': __webpack_require__(108)\n};\n\n/***/ }),\n/* 42 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getLastChangeIndex = exports.default = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 _this.clear();\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 if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n _this.record(delta, oldDelta);\n } else {\n _this.transform(delta);\n }\n });\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n if (/Win/i.test(navigator.platform)) {\n _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\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.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 this.quill.selection.scrollIntoView();\n this.stack[dest].push(delta);\n }\n }, {\n key: 'clear',\n value: function clear() {\n this.stack = { undo: [], redo: [] };\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 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 this.stack.undo.push({\n redo: changeDelta,\n undo: undoDelta\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\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n var lastOp = delta.ops[delta.ops.length - 1];\n if (lastOp == null) return false;\n if (lastOp.insert != null) {\n return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\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 return false;\n}\n\nfunction 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 if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\nexports.default = History;\nexports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ }),\n/* 43 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n var _toggle = DOMTokenList.prototype.toggle;\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\nif (!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\nif (!String.prototype.endsWith) {\n String.prototype.endsWith = function (searchString, position) {\n var subjectString = this.toString();\n if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n position = subjectString.length;\n }\n position -= searchString.length;\n var lastIndex = subjectString.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n };\n}\n\nif (!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 if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function');\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 if (predicate.call(thisArg, value, i, list)) {\n return value;\n }\n }\n return undefined;\n }\n });\n}\n\n// Disable resizing in Firefox\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n document.execCommand(\"enableObjectResizing\", false, false);\n});\n\n/***/ }),\n/* 44 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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() {\n _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);\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\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexports.default = Bold;\n\n/***/ }),\n/* 45 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(36);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _direction = __webpack_require__(38);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:clipboard');\n\nvar DOM_KEY = '__ql-matcher';\n\nvar CLIPBOARD_CONFIG = [[Node.TEXT_NODE, matchText], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar 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\nvar 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 _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n _this.addMatcher.apply(_this, _toConsumableArray(pair));\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;\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);\n // Remove trailing newline\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 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 return this.quill.setContents(this.convert(index), html);\n } else {\n var paste = this.convert(html);\n return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\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 setTimeout(function () {\n _this2.quill.selection.update(_quill2.default.sources.SILENT);\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.selection.scrollIntoView();\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 case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\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\nClipboard.DEFAULTS = {\n matchers: []\n};\n\nfunction 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\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\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 return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction 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 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 return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n if (STYLE_ATTRIBUTORS[name] != null) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\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 var formats = _defineProperty({}, match.blotName, match.formats(node));\n delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchNewline(node, delta) {\n if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction 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 if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\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 return match.length < 1 && collapse ? ' ' : match;\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 if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\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 return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 46 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.addControls = exports.default = undefined;\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar debug = (0, _logger2.default)('quill:toolbar');\n\nvar 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 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 _this.container.classList.add('ql-toolbar');\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 _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 _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 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 if (input.tagName === 'BUTTON') {\n input.setAttribute('type', 'button');\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 if (_parchment2.default.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, function (e) {\n var value = void 0;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n var selected = input.options[input.selectedIndex];\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 e.preventDefault();\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 _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 _this2.update(range);\n });\n // TODO use weakmap\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 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 if (typeof value === 'string') {\n value = value.replace(/\\\"/g, '\\\\\"');\n }\n option = input.querySelector('option[value=\"' + value + '\"]');\n }\n if (option == null) {\n input.value = ''; // TODO make configurable?\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\nToolbar.DEFAULTS = {};\n\nfunction addButton(container, format, value) {\n var input = document.createElement('button');\n input.setAttribute('type', 'button');\n input.classList.add('ql-' + format);\n if (value != null) {\n input.value = value;\n }\n container.appendChild(input);\n}\n\nfunction addControls(container, groups) {\n if (!Array.isArray(groups[0])) {\n groups = [groups];\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 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\nfunction 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 if (value !== false) {\n option.setAttribute('value', value);\n } else {\n option.setAttribute('selected', 'selected');\n }\n input.appendChild(option);\n });\n container.appendChild(input);\n}\n\nToolbar.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 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 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 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 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 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 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\nexports.default = Toolbar;\nexports.addControls = addControls;\n\n/***/ }),\n/* 47 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BaseTooltip = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(2);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(5);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(30);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(29);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(48);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(49);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(50);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ALIGNS = [false, 'center', 'right', 'justify'];\n\nvar 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\nvar FONTS = [false, 'serif', 'monospace'];\n\nvar HEADERS = ['1', '2', '3', false];\n\nvar SIZES = ['small', false, 'large', 'huge'];\n\nvar 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 if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n _this.tooltip.hide();\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 document.body.addEventListener('click', 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 if (name === 'toolbar') {\n this.extendToolbar(module);\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 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 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 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 if (select.querySelector('option') == null) {\n fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\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 return new _picker2.default(select);\n }\n });\n var update = function update() {\n _this2.pickers.forEach(function (picker) {\n picker.update();\n });\n };\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);\n }\n }]);\n\n return BaseTheme;\n}(_theme2.default);\n\nBaseTheme.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 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, image/svg+xml');\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 reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar 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 _this4.listen();\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 event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\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\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\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 switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\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 this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n var match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n }\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n var index = range.index + range.length;\n if (range != null) {\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 48 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 _this.container.classList.add('ql-color-picker');\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 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 var colorLabel = this.label.querySelector('.ql-color-label');\n var value = item ? item.getAttribute('data-value') || '' : '';\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\nexports.default = ColorPicker;\n\n/***/ }),\n/* 49 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 [].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 _this.selectItem(_this.defaultItem);\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 item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n }]);\n\n return IconPicker;\n}(_picker2.default);\n\nexports.default = IconPicker;\n\n/***/ }),\n/* 50 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar 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 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 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;\n // root.scrollTop should be 0 if scrollContainer !== root\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 if (rootBounds.right > containerBounds.right) {\n shift = containerBounds.right - rootBounds.right;\n this.root.style.left = left + shift + 'px';\n }\n if (rootBounds.left < containerBounds.left) {\n shift = containerBounds.left - rootBounds.left;\n this.root.style.left = left + shift + 'px';\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 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\nexports.default = Tooltip;\n\n/***/ }),\n/* 51 */\n/***/ (function(module, exports) {\n\nvar supportsArgumentsClass = (function(){\n return Object.prototype.toString.call(arguments)\n})() == '[object Arguments]';\n\nexports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\nexports.supported = supported;\nfunction supported(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n};\n\nexports.unsupported = unsupported;\nfunction unsupported(object){\n return object &&\n typeof object == 'object' &&\n typeof object.length == 'number' &&\n Object.prototype.hasOwnProperty.call(object, 'callee') &&\n !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n false;\n};\n\n\n/***/ }),\n/* 52 */\n/***/ (function(module, exports) {\n\nexports = module.exports = typeof Object.keys === 'function'\n ? Object.keys : shim;\n\nexports.shim = shim;\nfunction shim (obj) {\n var keys = [];\n for (var key in obj) keys.push(key);\n return keys;\n}\n\n\n/***/ }),\n/* 53 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\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 */\nfunction Events() {}\n\n//\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//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\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 if (!new Events().__proto__) prefix = false;\n}\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 */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @api public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\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 */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\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/**\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 */\nEventEmitter.prototype.listeners = function listeners(event, exists) {\n var evt = prefix ? prefix + event : event\n , available = this._events[evt];\n\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/**\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 */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\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: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: 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: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\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 */\nEventEmitter.prototype.on = function on(event, fn, context) {\n var listener = new EE(fn, context || this)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\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 */\nEventEmitter.prototype.once = function once(event, fn, context) {\n var listener = new EE(fn, context || this, true)\n , evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n else if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [this._events[evt], listener];\n\n return this;\n};\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 */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn\n && (!once || listeners.once)\n && (!context || listeners.context === context)\n ) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn\n || (once && !listeners[i].once)\n || (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n\n return this;\n};\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 */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) {\n if (--this._eventsCount === 0) this._events = new Events();\n else delete this._events[evt];\n }\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// This function doesn't apply anymore.\n//\nEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n return this;\n};\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n\n\n/***/ }),\n/* 54 */\n/***/ (function(module, exports) {\n\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/**\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 */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\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 */\nfunction 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 return [];\n }\n\n // Check cursor_pos within bounds\n if (cursor_pos < 0 || text1.length < cursor_pos) {\n cursor_pos = null;\n }\n\n // Trim off common prefix (speedup).\n var commonlength = diff_commonPrefix(text1, text2);\n var commonprefix = text1.substring(0, commonlength);\n text1 = text1.substring(commonlength);\n text2 = text2.substring(commonlength);\n\n // Trim off common suffix (speedup).\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);\n\n // Compute the diff on the middle block.\n var diffs = diff_compute_(text1, text2);\n\n // Restore the prefix and suffix.\n if (commonprefix) {\n diffs.unshift([DIFF_EQUAL, commonprefix]);\n }\n if (commonsuffix) {\n diffs.push([DIFF_EQUAL, commonsuffix]);\n }\n diff_cleanupMerge(diffs);\n if (cursor_pos != null) {\n diffs = fix_cursor(diffs, cursor_pos);\n }\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 */\nfunction 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 if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\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 }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\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];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\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 */\nfunction 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);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\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 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 var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\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 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 if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\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 var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\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 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;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\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 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 */\nfunction 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);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\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 */\nfunction 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 }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\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 */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\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 */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\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 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 while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n 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 if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\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 }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\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 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 */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\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 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 case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\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 if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (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 count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\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 var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n 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 -\n 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] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n 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) ==\n 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] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\nmodule.exports = diff;\n\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 */\nfunction cursor_normalize_diff (diffs, cursor_pos) {\n if (cursor_pos === 0) {\n return [DIFF_EQUAL, diffs];\n }\n for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n var d = diffs[i];\n if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n var next_pos = current_pos + d[1].length;\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();\n // split d into two diff changes\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 throw new Error('cursor_pos is out of bounds!')\n}\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 */\nfunction 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 if (suffix.length > 0) {\n ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\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\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 */\nfunction 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 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 return diffs;\n}\n\n\n/***/ }),\n/* 55 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 56 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(22);\nvar Registry = __webpack_require__(1);\nvar BlockBlot = (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n BlockBlot.formats = function (domNode) {\n var tagName = Registry.query(BlockBlot.blotName).tagName;\n if (domNode.tagName === tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n BlockBlot.prototype.format = function (name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n return;\n }\n else if (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\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 }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\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 }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.prototype.update = function (mutations) {\n if (navigator.userAgent.match(/Trident/)) {\n this.attach();\n }\n else {\n _super.prototype.update.call(this, mutations);\n }\n };\n return BlockBlot;\n}(format_1.default));\nBlockBlot.blotName = 'block';\nBlockBlot.scope = Registry.Scope.BLOCK_BLOT;\nBlockBlot.tagName = 'P';\nexports.default = BlockBlot;\n\n\n/***/ }),\n/* 57 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(23);\nvar EmbedBlot = (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n EmbedBlot.formats = function (domNode) {\n return undefined;\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 EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n if (index === 0 && length === this.length()) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n EmbedBlot.prototype.formats = function () {\n return this.statics.formats(this.domNode);\n };\n return EmbedBlot;\n}(leaf_1.default));\nexports.default = EmbedBlot;\n\n\n/***/ }),\n/* 58 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar format_1 = __webpack_require__(22);\nvar Registry = __webpack_require__(1);\n// Shallow object comparison\nfunction isEqual(obj1, obj2) {\n if (Object.keys(obj1).length !== Object.keys(obj2).length)\n return false;\n for (var prop in obj1) {\n if (obj1[prop] !== obj2[prop])\n return false;\n }\n return true;\n}\nvar InlineBlot = (function (_super) {\n __extends(InlineBlot, _super);\n function InlineBlot() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n InlineBlot.formats = function (domNode) {\n if (domNode.tagName === InlineBlot.tagName)\n return undefined;\n return _super.formats.call(this, domNode);\n };\n InlineBlot.prototype.format = function (name, value) {\n var _this = this;\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 _this.attributes.copy(child);\n });\n this.unwrap();\n }\n else {\n _super.prototype.format.call(this, name, value);\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 }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n InlineBlot.prototype.optimize = function () {\n _super.prototype.optimize.call(this);\n var formats = this.formats();\n if (Object.keys(formats).length === 0) {\n return this.unwrap(); // unformatted span\n }\n var next = this.next;\n if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n next.moveChildren(this);\n next.remove();\n }\n };\n return InlineBlot;\n}(format_1.default));\nInlineBlot.blotName = 'inline';\nInlineBlot.scope = Registry.Scope.INLINE_BLOT;\nInlineBlot.tagName = 'SPAN';\nexports.default = InlineBlot;\n\n\n/***/ }),\n/* 59 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = __webpack_require__(21);\nvar Registry = __webpack_require__(1);\nvar OBSERVER_CONFIG = {\n attributes: true,\n characterData: true,\n characterDataOldValue: true,\n childList: true,\n subtree: true\n};\nvar MAX_OPTIMIZE_ITERATIONS = 100;\nvar ScrollBlot = (function (_super) {\n __extends(ScrollBlot, _super);\n function ScrollBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.parent = null;\n _this.observer = new MutationObserver(function (mutations) {\n _this.update(mutations);\n });\n _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n return _this;\n }\n ScrollBlot.prototype.detach = function () {\n _super.prototype.detach.call(this);\n this.observer.disconnect();\n };\n ScrollBlot.prototype.deleteAt = function (index, length) {\n this.update();\n if (index === 0 && length === this.length()) {\n this.children.forEach(function (child) {\n child.remove();\n });\n }\n else {\n _super.prototype.deleteAt.call(this, index, length);\n }\n };\n ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n this.update();\n _super.prototype.formatAt.call(this, index, length, name, value);\n };\n ScrollBlot.prototype.insertAt = function (index, value, def) {\n this.update();\n _super.prototype.insertAt.call(this, index, value, def);\n };\n ScrollBlot.prototype.optimize = function (mutations) {\n var _this = this;\n if (mutations === void 0) { mutations = []; }\n _super.prototype.optimize.call(this);\n // We must modify mutations directly, cannot make copy and then modify\n var records = [].slice.call(this.observer.takeRecords());\n // 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 while (records.length > 0)\n mutations.push(records.pop());\n // TODO use WeakMap\n var mark = function (blot, markParent) {\n if (markParent === void 0) { markParent = true; }\n if (blot == null || blot === _this)\n return;\n if (blot.domNode.parentNode == null)\n return;\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n blot.domNode[Registry.DATA_KEY].mutations = [];\n }\n if (markParent)\n mark(blot.parent);\n };\n var optimize = function (blot) {\n if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n return;\n }\n if (blot instanceof container_1.default) {\n blot.children.forEach(optimize);\n }\n blot.optimize();\n };\n var remaining = mutations;\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 remaining.forEach(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\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 if (child instanceof container_1.default) {\n child.children.forEach(function (grandChild) {\n mark(grandChild, false);\n });\n }\n });\n }\n else if (mutation.type === 'attributes') {\n mark(blot.prev);\n }\n }\n mark(blot);\n });\n this.children.forEach(optimize);\n remaining = [].slice.call(this.observer.takeRecords());\n records = remaining.slice();\n while (records.length > 0)\n mutations.push(records.pop());\n }\n };\n ScrollBlot.prototype.update = function (mutations) {\n var _this = this;\n mutations = mutations || this.observer.takeRecords();\n // TODO use WeakMap\n mutations.map(function (mutation) {\n var blot = Registry.find(mutation.target, true);\n if (blot == null)\n return;\n if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n return blot;\n }\n else {\n blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n return null;\n }\n }).forEach(function (blot) {\n if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n return;\n blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n });\n if (this.domNode[Registry.DATA_KEY].mutations != null) {\n _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n }\n this.optimize(mutations);\n };\n return ScrollBlot;\n}(container_1.default));\nScrollBlot.blotName = 'scroll';\nScrollBlot.defaultChild = 'block';\nScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\nScrollBlot.tagName = 'DIV';\nexports.default = ScrollBlot;\n\n\n/***/ }),\n/* 60 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nvar __extends = (this && this.__extends) || (function () {\n var extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar leaf_1 = __webpack_require__(23);\nvar Registry = __webpack_require__(1);\nvar TextBlot = (function (_super) {\n __extends(TextBlot, _super);\n function TextBlot(node) {\n var _this = _super.call(this, node) || this;\n _this.text = _this.statics.value(_this.domNode);\n return _this;\n }\n TextBlot.create = function (value) {\n return document.createTextNode(value);\n };\n TextBlot.value = function (domNode) {\n return domNode.data;\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 TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\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 }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function () {\n _super.prototype.optimize.call(this);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\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 TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\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 TextBlot.prototype.update = function (mutations) {\n var _this = this;\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 TextBlot.prototype.value = function () {\n return this.text;\n };\n return TextBlot;\n}(leaf_1.default));\nTextBlot.blotName = 'text';\nTextBlot.scope = Registry.Scope.INLINE_BLOT;\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 61 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar LinkedList = (function () {\n function LinkedList() {\n this.head = this.tail = undefined;\n this.length = 0;\n }\n LinkedList.prototype.append = function () {\n var nodes = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n nodes[_i] = arguments[_i];\n }\n this.insertBefore(nodes[0], undefined);\n if (nodes.length > 1) {\n this.append.apply(this, nodes.slice(1));\n }\n };\n LinkedList.prototype.contains = function (node) {\n var cur, next = this.iterator();\n while (cur = next()) {\n if (cur === node)\n return true;\n }\n return false;\n };\n LinkedList.prototype.insertBefore = function (node, refNode) {\n node.next = refNode;\n if (refNode != null) {\n node.prev = refNode.prev;\n if (refNode.prev != null) {\n refNode.prev.next = node;\n }\n refNode.prev = node;\n if (refNode === this.head) {\n this.head = node;\n }\n }\n else if (this.tail != null) {\n this.tail.next = node;\n node.prev = this.tail;\n this.tail = node;\n }\n else {\n node.prev = undefined;\n this.head = this.tail = node;\n }\n this.length += 1;\n };\n LinkedList.prototype.offset = function (target) {\n var index = 0, cur = this.head;\n while (cur != null) {\n if (cur === target)\n return index;\n index += cur.length();\n cur = cur.next;\n }\n return -1;\n };\n LinkedList.prototype.remove = function (node) {\n if (!this.contains(node))\n return;\n if (node.prev != null)\n node.prev.next = node.next;\n if (node.next != null)\n node.next.prev = node.prev;\n if (node === this.head)\n this.head = node.next;\n if (node === this.tail)\n this.tail = node.prev;\n this.length -= 1;\n };\n LinkedList.prototype.iterator = function (curNode) {\n if (curNode === void 0) { curNode = this.head; }\n // TODO use yield when we can\n return function () {\n var ret = curNode;\n if (curNode != null)\n curNode = curNode.next;\n return ret;\n };\n };\n LinkedList.prototype.find = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n var cur, next = this.iterator();\n while (cur = next()) {\n var length = cur.length();\n if (index < length || (inclusive && index === length && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length;\n }\n return [null, 0];\n };\n LinkedList.prototype.forEach = function (callback) {\n var cur, next = this.iterator();\n while (cur = next()) {\n callback(cur);\n }\n };\n LinkedList.prototype.forEachAt = function (index, length, callback) {\n if (length <= 0)\n return;\n var _a = this.find(index), startNode = _a[0], offset = _a[1];\n var cur, curIndex = index - offset, next = this.iterator(startNode);\n while ((cur = next()) && curIndex < index + length) {\n var curLength = cur.length();\n if (index > curIndex) {\n callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n }\n else {\n callback(cur, 0, Math.min(curLength, index + length - curIndex));\n }\n curIndex += curLength;\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 LinkedList.prototype.reduce = function (callback, memo) {\n var cur, next = this.iterator();\n while (cur = next()) {\n memo = callback(memo, cur);\n }\n return memo;\n };\n return LinkedList;\n}());\nexports.default = LinkedList;\n\n\n/***/ }),\n/* 62 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _core = __webpack_require__(35);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(36);\n\nvar _direction = __webpack_require__(38);\n\nvar _indent = __webpack_require__(67);\n\nvar _blockquote = __webpack_require__(64);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(65);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(69);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(37);\n\nvar _color = __webpack_require__(26);\n\nvar _font = __webpack_require__(39);\n\nvar _size = __webpack_require__(40);\n\nvar _bold = __webpack_require__(44);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(68);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(70);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(71);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(72);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(66);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(73);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(16);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(74);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(75);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(46);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(28);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(48);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(49);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(50);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(76);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(63);\n\nvar _snow2 = _interopRequireDefault(_snow);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n_core2.default.register({\n 'attributors/attribute/direction': _direction.DirectionAttribute,\n\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\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\n 'formats/background': _background.BackgroundStyle,\n 'formats/color': _color.ColorStyle,\n 'formats/font': _font.FontClass,\n 'formats/size': _size.SizeClass,\n\n 'formats/blockquote': _blockquote2.default,\n 'formats/code-block': _code2.default,\n 'formats/header': _header2.default,\n 'formats/list': _list2.default,\n\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\n 'formats/image': _image2.default,\n 'formats/video': _video2.default,\n\n 'formats/list/item': _list.ListItem,\n\n 'modules/formula': _formula2.default,\n 'modules/syntax': _syntax2.default,\n 'modules/toolbar': _toolbar2.default,\n\n 'themes/bubble': _bubble2.default,\n 'themes/snow': _snow2.default,\n\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\nmodule.exports = _core2.default;\n\n/***/ }),\n/* 63 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _slicedToArray = function () { function sliceIterator(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"]) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; } return function (arr, i) { if (Array.isArray(arr)) { return arr; } else if (Symbol.iterator in Object(arr)) { return sliceIterator(arr, i); } else { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); } }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(5);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(47);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\nvar 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 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 if (toolbar.container.querySelector('.ql-link')) {\n this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n toolbar.handlers['link'].call(toolbar, !context.format.link);\n });\n }\n }\n }]);\n\n return SnowTheme;\n}(_base2.default);\n\nSnowTheme.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 if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\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\nvar 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 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 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 _this3.restoreFocus();\n _this3.quill.formatText(range, 'link', false, _emitter2.default.sources.USER);\n delete _this3.linkRange;\n }\n event.preventDefault();\n _this3.hide();\n });\n this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range, oldRange, source) {\n if (range == null) return;\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 var preview = _link2.default.formats(link.domNode);\n _this3.preview.textContent = preview;\n _this3.preview.setAttribute('href', preview);\n _this3.show();\n _this3.position(_this3.quill.getBounds(_this3.linkRange));\n return;\n }\n } else {\n delete _this3.linkRange;\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 this.root.removeAttribute('data-mode');\n }\n }]);\n\n return SnowTooltip;\n}(_base.BaseTooltip);\n\nSnowTooltip.TEMPLATE = ['', '', '', ''].join('');\n\nexports.default = SnowTheme;\n\n/***/ }),\n/* 64 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\nexports.default = Blockquote;\n\n/***/ }),\n/* 65 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\nexports.default = Header;\n\n/***/ }),\n/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _link = __webpack_require__(27);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['alt', 'height', 'width'];\n\nvar Image = function (_Embed) {\n _inherits(Image, _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 if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\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 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 }, {\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}(_embed2.default);\n\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\nexports.default = Image;\n\n/***/ }),\n/* 67 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.IndentClass = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 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\nvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: _parchment2.default.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexports.IndentClass = IndentClass;\n\n/***/ }),\n/* 68 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _bold = __webpack_require__(44);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexports.default = Italic;\n\n/***/ }),\n/* 69 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.ListItem = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(4);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(24);\n\nvar _container2 = _interopRequireDefault(_container);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 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\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\nvar 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 var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n }, {\n key: 'formats',\n value: function formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\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 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 domNode.addEventListener('click', function (e) {\n if (e.target.parentNode !== domNode) return;\n var format = _this2.statics.formats(domNode);\n var blot = _parchment2.default.find(e.target);\n if (format === 'checked') {\n blot.format('list', 'unchecked');\n } else if (format === 'unchecked') {\n blot.format('list', 'checked');\n }\n });\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() {\n _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);\n var next = this.next;\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 target.moveChildren(item);\n this.appendChild(item);\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\nList.blotName = 'list';\nList.scope = _parchment2.default.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\nexports.ListItem = ListItem;\nexports.default = List;\n\n/***/ }),\n/* 70 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexports.default = Script;\n\n/***/ }),\n/* 71 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexports.default = Strike;\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _inline = __webpack_require__(8);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexports.default = Underline;\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _block = __webpack_require__(4);\n\nvar _link = __webpack_require__(27);\n\nvar _link2 = _interopRequireDefault(_link);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ATTRIBUTES = ['height', 'width'];\n\nvar 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 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 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\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\nexports.default = Video;\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.FormulaBlot = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _embed = __webpack_require__(7);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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, [{\n key: 'index',\n value: function index() {\n return 1;\n }\n }], [{\n key: 'create',\n value: function create(value) {\n var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n if (typeof value === 'string') {\n window.katex.render(value, node);\n node.setAttribute('data-value', value);\n }\n node.setAttribute('contenteditable', false);\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\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\nvar 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 return _this2;\n }\n\n return Formula;\n}(_module2.default);\n\nexports.FormulaBlot = FormulaBlot;\nexports.default = Formula;\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(6);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(9);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(16);\n\nvar _code2 = _interopRequireDefault(_code);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar 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 _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n }\n }, {\n key: 'highlight',\n value: function highlight(_highlight) {\n if (this.cachedHTML !== this.domNode.innerHTML) {\n var text = this.domNode.textContent;\n if (text.trim().length > 0 || this.cachedHTML == null) {\n this.domNode.innerHTML = _highlight(text);\n this.attach();\n }\n this.cachedHTML = this.domNode.innerHTML;\n }\n }\n }]);\n\n return SyntaxCodeBlock;\n}(_code2.default);\n\nSyntaxCodeBlock.className = 'ql-syntax';\n\nvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n scope: _parchment2.default.Scope.INLINE\n});\n\nvar 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 _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 var timer = null;\n _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n if (timer != null) return;\n timer = setTimeout(function () {\n _this2.highlight();\n timer = null;\n }, 100);\n });\n _this2.highlight();\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 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 if (range != null) {\n this.quill.setSelection(range, _quill2.default.sources.SILENT);\n }\n }\n }]);\n\n return Syntax;\n}(_module2.default);\n\nSyntax.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};\n\nexports.CodeBlock = SyntaxCodeBlock;\nexports.CodeToken = CodeToken;\nexports.default = Syntax;\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BubbleTooltip = undefined;\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(5);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(47);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(15);\n\nvar _icons = __webpack_require__(41);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\nvar 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 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\nBubbleTheme.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\nvar 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 if (range != null && range.length > 0 && source === _emitter2.default.sources.USER) {\n _this2.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n _this2.root.style.left = '0px';\n _this2.root.style.width = '';\n _this2.root.style.width = _this2.root.offsetWidth + 'px';\n var lines = _this2.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n _this2.position(_this2.quill.getBounds(range));\n } else {\n var lastLine = lines[lines.length - 1];\n var index = _this2.quill.getIndex(lastLine);\n var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n _this2.position(_bounds);\n }\n } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n _this2.hide();\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 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 var range = _this3.quill.getSelection();\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 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\nBubbleTooltip.TEMPLATE = ['', '
', '', '', '
'].join('');\n\nexports.BubbleTooltip = BubbleTooltip;\nexports.default = BubbleTheme;\n\n/***/ }),\n/* 77 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 78 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 79 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 80 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 81 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 82 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 83 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 84 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 85 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 86 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 87 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 88 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 89 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 90 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 91 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 92 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 93 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 94 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 95 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 96 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 97 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 98 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 99 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 100 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 101 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 102 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 103 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 104 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 105 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 106 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 107 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 108 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 109 */,\n/* 110 */,\n/* 111 */,\n/* 112 */,\n/* 113 */,\n/* 114 */,\n/* 115 */,\n/* 116 */,\n/* 117 */,\n/* 118 */,\n/* 119 */,\n/* 120 */,\n/* 121 */,\n/* 122 */,\n/* 123 */,\n/* 124 */,\n/* 125 */,\n/* 126 */,\n/* 127 */,\n/* 128 */,\n/* 129 */,\n/* 130 */,\n/* 131 */,\n/* 132 */,\n/* 133 */,\n/* 134 */,\n/* 135 */,\n/* 136 */\n/***/ (function(module, exports, __webpack_require__) {\n\nmodule.exports = __webpack_require__(62);\n\n\n/***/ })\n/******/ ]);\n});"],"sourceRoot":""}