{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap c1b60fb132dcddd9508b","webpack:///./~/parchment/src/parchment.ts","webpack:///./~/parchment/src/registry.ts","webpack:///./~/extend/index.js","webpack:///./blots/block.js","webpack:///./blots/inline.js","webpack:///./blots/embed.js","webpack:///./core/emitter.js","webpack:///./core/module.js","webpack:///./core/quill.js","webpack:///./~/quill-delta/lib/delta.js","webpack:///./core/logger.js","webpack:///./blots/text.js","webpack:///./~/deep-equal/index.js","webpack:///./~/parchment/src/attributor/attributor.ts","webpack:///./formats/code.js","webpack:///./formats/link.js","webpack:///./ui/picker.js","webpack:///./formats/color.js","webpack:///./ui/icons.js","webpack:///./blots/break.js","webpack:///./blots/container.js","webpack:///./core/selection.js","webpack:///./~/clone/clone.js","webpack:///./~/quill-delta/lib/op.js","webpack:///./~/parchment/src/blot/abstract/container.ts","webpack:///./~/parchment/src/blot/abstract/format.ts","webpack:///./~/parchment/src/blot/abstract/leaf.ts","webpack:///./formats/align.js","webpack:///./formats/background.js","webpack:///./formats/bold.js","webpack:///./formats/direction.js","webpack:///./formats/font.js","webpack:///./formats/size.js","webpack:///./ui/color-picker.js","webpack:///./ui/icon-picker.js","webpack:///./ui/tooltip.js","webpack:///./blots/cursor.js","webpack:///./core/theme.js","webpack:///./modules/keyboard.js","webpack:///./themes/base.js","webpack:///./assets/icons/code.svg","webpack:///./~/parchment/src/attributor/class.ts","webpack:///./~/parchment/src/attributor/store.ts","webpack:///./~/parchment/src/attributor/style.ts","webpack:///./~/parchment/src/blot/abstract/shadow.ts","webpack:///./core.js","webpack:///./formats/blockquote.js","webpack:///./formats/header.js","webpack:///./formats/image.js","webpack:///./formats/indent.js","webpack:///./formats/italic.js","webpack:///./formats/list.js","webpack:///./formats/script.js","webpack:///./formats/strike.js","webpack:///./formats/underline.js","webpack:///./formats/video.js","webpack:///./modules/formula.js","webpack:///./modules/syntax.js","webpack:///./modules/toolbar.js","webpack:///./themes/bubble.js","webpack:///./themes/snow.js","webpack:///./blots/scroll.js","webpack:///./core/editor.js","webpack:///./core/polyfill.js","webpack:///./modules/clipboard.js","webpack:///./modules/history.js","webpack:///./quill.js","webpack:///./~/deep-equal/lib/is_arguments.js","webpack:///./~/deep-equal/lib/keys.js","webpack:///./~/eventemitter3/index.js","webpack:///./~/fast-diff/diff.js","webpack:///./assets/icons/align-center.svg","webpack:///./assets/icons/align-justify.svg","webpack:///./assets/icons/align-left.svg","webpack:///./assets/icons/align-right.svg","webpack:///./assets/icons/background.svg","webpack:///./assets/icons/blockquote.svg","webpack:///./assets/icons/bold.svg","webpack:///./assets/icons/clean.svg","webpack:///./assets/icons/color.svg","webpack:///./assets/icons/direction-ltr.svg","webpack:///./assets/icons/direction-rtl.svg","webpack:///./assets/icons/dropdown.svg","webpack:///./assets/icons/float-center.svg","webpack:///./assets/icons/float-full.svg","webpack:///./assets/icons/float-left.svg","webpack:///./assets/icons/float-right.svg","webpack:///./assets/icons/formula.svg","webpack:///./assets/icons/header-2.svg","webpack:///./assets/icons/header.svg","webpack:///./assets/icons/image.svg","webpack:///./assets/icons/indent.svg","webpack:///./assets/icons/italic.svg","webpack:///./assets/icons/link.svg","webpack:///./assets/icons/list-bullet.svg","webpack:///./assets/icons/list-check.svg","webpack:///./assets/icons/list-ordered.svg","webpack:///./assets/icons/outdent.svg","webpack:///./assets/icons/strike.svg","webpack:///./assets/icons/subscript.svg","webpack:///./assets/icons/superscript.svg","webpack:///./assets/icons/underline.svg","webpack:///./assets/icons/video.svg","webpack:///./~/parchment/src/blot/block.ts","webpack:///./~/parchment/src/blot/embed.ts","webpack:///./~/parchment/src/blot/inline.ts","webpack:///./~/parchment/src/blot/scroll.ts","webpack:///./~/parchment/src/blot/text.ts","webpack:///./~/parchment/src/collection/linked-list.ts"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","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","input","match","ParchmentError","BlotClass","Node","TEXT_NODE","node","bubble","DATA_KEY","blot","parentNode","scope","ANY","types","attributes","LEVEL","BLOCK","INLINE","HTMLElement","names","getAttribute","split","classes","tags","tagName","TYPE","Definitions","_i","arguments","length","map","Definition","blotName","attrName","keyName","className","Array","isArray","toUpperCase","tagNames","forEach","tag","__extends","extendStatics","setPrototypeOf","__proto__","b","__","constructor","_super","message","_this","Error","hasOwn","toStr","toString","arr","isPlainObject","obj","hasOwnConstructor","hasIsPrototypeOf","key","extend","options","src","copy","copyIsArray","clone","target","deep","_interopRequireDefault","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","writable","bubbleFormats","formats","undefined","_extend2","parent","statics","BlockEmbed","_createClass","defineProperties","props","descriptor","protoProps","staticProps","_get","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","_extend","_quillDelta","_quillDelta2","_parchment","_parchment2","_break","_break2","_embed","_embed2","_inline","_inline2","_text","_text2","_Embed","apply","domNode","insert","values","attribute","BLOCK_ATTRIBUTE","index","format","def","endsWith","block","insertBefore","next","insertAt","slice","BLOCK_BLOT","_Parchment$Block","_this2","cache","delta","descendants","reduce","leaf","Math","min","lines","text","shift","children","tail","line","ref","head","remove","child","force","defaultChild","allowedChildren","_Parchment$Inline","compare","BLOT","isolate","wrap","offset","moveChildren","other","selfIndex","order","indexOf","otherIndex","_Parchment$Embed","_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","Module","quill","DEFAULTS","_defineProperty","expandConfig","container","userConfig","clipboard","keyboard","history","theme","Quill","import","_theme2","themeConfig","config","keys","moduleNames","concat","moduleConfig","moduleClass","toolbar","document","querySelector","modify","modifier","source","strict","isEnabled","_emitter4","range","getSelection","oldDelta","editor","change","shiftRange","setSelection","_emitter","args","emitter","emit","_emitter2","overload","_typeof","start","end","_map","pos","transformPosition","_map2","_slicedToArray","_map3","max","_map4","_selection","Range","Symbol","iterator","sliceIterator","_arr","_n","_d","_e","_s","done","push","err","_editor","_editor2","_emitter3","_module","_module2","_selection2","_theme","html","innerHTML","trim","classList","add","__quill","addContainer","scrollingContainer","scroll","whitelist","selection","addModule","init","type","toggle","isBlank","mutations","lastRange","update","contents","convert","setContents","clear","placeholder","setAttribute","readOnly","disable","limit","level","imports","path","overwrite","warn","startsWith","refNode","createElement","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","scrollTop","focus","scrollIntoView","_this4","formatLine","formatText","_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","lastOp","ops","delete","compose","_overload15","_overload16","_this11","version","parchment","core/module","core/theme","diff","equal","op","NULL_CHARACTER","String","fromCharCode","Delta","newOp","retain","unshift","splice","filter","predicate","partition","passed","failed","initial","chop","pop","elem","Infinity","iter","hasNext","nextOp","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","strings","prep","join","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","peek","transform","priority","nextType","method","levels","_len","_key","console","namespace","ns","logger","bind","newLevel","TextBlot","_Parchment$Text","isUndefinedOrNull","isBuffer","x","objEquiv","a","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","e","sort","actual","expected","Date","getTime","attributeBit","ATTRIBUTE","item","canAdd","removeAttribute","Code","_block","_block2","_Inline","CodeBlock","_Block","textContent","frag","_descendant","descendant","_descendant2","deleteAt","nextNewline","newlineIndex","prevNewline","isolateLength","formatAt","_descendant3","_descendant4","searchIndex","lastIndexOf","appendChild","prev","optimize","querySelectorAll","removeChild","unwrap","TAB","sanitize","url","protocols","anchor","href","protocol","Link","SANITIZED_URL","_dropdown","_dropdown2","Picker","select","buildPicker","style","display","label","addEventListener","option","hasAttribute","selectItem","buildItem","buildLabel","buildOptions","trigger","selected","selectedIndex","Event","dispatchEvent","event","createEvent","initEvent","close","isActive","ColorStyle","ColorClass","ColorAttributor","_Parchment$Attributor","replace","parseInt","align","","center","justify","background","blockquote","bold","clean","code","code-block","color","direction","rtl","float","full","formula","header","1","2","italic","image","indent","+1","-1","link","list","ordered","bullet","check","script","sub","super","strike","underline","video","Break","_Parchment$Container","_toConsumableArray","arr2","from","_clone","_clone2","_deepEqual","_deepEqual2","Selection","composing","cursor","savedRange","eventName","setTimeout","native","getNativeRange","textNode","setNativeRange","ignored","nativeRange","collapsed","after","attach","data","scrollLength","_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","_scroll$line","_scroll$line2","first","last","_scroll$line3","scroller","scrollBounds","startNode","endNode","removeAllRanges","addRange","blur","body","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","oldRange","_getRange","_getRange2","restore","_instanceof","circular","depth","includeNonEnumerable","proto","nativeMap","nativeSet","nativePromise","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","lastIndex","__isDate","useBuffer","Buffer","allParents","allChildren","keyChild","valueChild","set","entryChild","attrs","getOwnPropertySymbols","symbols","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","re","flags","global","ignoreCase","multiline","Map","_","Set","Promise","clonePrototype","Iterator","lib","keepNull","retOp","substr","makeBlot","replaceChild","linked_list_1","shadow_1","ContainerBlot","reverse","forEachAt","criteria","_a","lengthLeft","detach","childBlot","refBlot","some","insertInto","memo","targetParent","inclusive","addedNodes","removedNodes","mutation","compareDocumentPosition","DOCUMENT_POSITION_CONTAINED_BY","DOCUMENT_POSITION_FOLLOWING","nextSibling","FormatBlot","toLowerCase","replaceWith","replacement","build","wrapper","move","LeafBlot","INLINE_BLOT","AlignStyle","AlignClass","AlignAttribute","BackgroundStyle","BackgroundClass","_color","Bold","DirectionStyle","DirectionClass","DirectionAttribute","FontClass","FontStyle","FontStyleAttributor","SizeStyle","SizeClass","_picker","_picker2","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","marginTop","hide","reference","offsetWidth","rootBounds","verticalShift","Cursor","createTextNode","CONTENTS","_length","restoreText","_ref","Theme","themes","handleBackspace","context","_quill$getLine5","getLine","_quill$getLine6","_quill$getLine7","_quill$getLine8","curFormats","prevFormats","_op2","test","prefix","_quill2","handleDelete","suffix","nextLength","_quill$getLine9","_quill$getLine10","_quill$getLine11","_quill$getLine12","nextFormats","handleDeleteRange","handleEnter","lineFormats","makeCodeBlockHandler","Keyboard","shiftKey","handler","_quill$scroll$descend","_quill$scroll$descend2","scrollIndex","getIndex","makeFormatHandler","shortKey","normalize","binding","charCodeAt","SHORTKEY","_op","_quill","navigator","platform","_Module","bindings","addBinding","ENTER","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","listen","evt","which","keyCode","defaultPrevented","_quill$getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","every","preventDefault","ESCAPE","LEFT","UP","RIGHT","DOWN","outdent","outdent backspace","indent code-block","outdent code-block","remove tab","tab","list empty enter","checklist enter","_quill$getLine3","header enter","list autofill","code exit","fillSelect","defaultValue","BaseTooltip","_keyboard","_keyboard2","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_tooltip","_tooltip2","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","listener","removeEventListener","tooltip","textbox","pickers","picker","extendToolbar","buttons","button","selects","handlers","edit","fileInput","files","reader","FileReader","onload","updateContents","result","readAsDataURL","click","_Tooltip","save","cancel","mode","preview","linkRange","restoreFocus","ClassAttributor","AttributorStore","styles","attr","camelize","parts","rest","part","StyleAttributor","ShadowBlot","cloneNode","parentBlot","refDomNode","_container","_container2","_cursor","_cursor2","_scroll","_scroll2","_clipboard","_clipboard2","_history","_history2","blots/block","blots/block/embed","blots/break","blots/container","blots/cursor","blots/embed","blots/inline","blots/scroll","blots/text","modules/clipboard","modules/history","modules/keyboard","Blockquote","Header","_link","ATTRIBUTES","Image","IndentClass","IdentAttributor","_bold","_bold2","Italic","_Bold","ListItem","List","_Container","Script","Strike","Underline","_link2","Video","_BlockEmbed","FormulaBlot","window","katex","render","Formula","CodeToken","_code","_code2","SyntaxCodeBlock","_CodeBlock","highlight","cachedHTML","Syntax","timer","hljs","highlightAuto","addButton","addControls","groups","controls","group","control","addSelect","Toolbar","_ret","addHandler","_this$quill$selection","_this$quill$selection2","_quill$selection$getR","_quill$selection$getR2","prompt","pair","_pair","BubbleTooltip","_base","_base2","_icons","_icons2","TOOLBAR_CONFIG","BubbleTheme","_BaseTheme","buildButtons","buildPickers","_BaseTooltip","show","getLines","lastLine","arrow","marginLeft","SnowTheme","SnowTooltip","isLine","_Parchment$Scroll","_line","_line2","_line3","_line4","batch","observer","takeRecords","combineFormats","combined","merged","normalizeDelta","Editor","getDelta","consumeNextNewline","_line$descendant","_line$descendant2","lengthRemaining","lineLength","codeIndex","codeLength","leaves","_path","formatsArr","blots","_scroll$line4","suffixLength","cursorIndex","textBlot","oldValue","oldText","newText","_toggle","DOMTokenList","token","searchString","subjectString","isFinite","floor","thisArg","execCommand","applyFormat","_extend3","computeStyle","nodeType","ELEMENT_NODE","getComputedStyle","deltaEndsWith","endText","traverse","elementMatchers","textMatchers","matcher","childNode","childrenDelta","DOM_KEY","matchAlias","matchAttributor","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","matchIndent","matchNewline","matchSpacing","nextElementSibling","nodeHeight","offsetHeight","parseFloat","marginBottom","offsetTop","matchStyles","fontStyle","fontWeight","textIndent","matchText","whiteSpace","replacer","collapse","previousSibling","_align","_background","_direction","_font","_size","CLIPBOARD_CONFIG","Clipboard","onPaste","matchers","addMatcher","selector","_prepareMatching","prepareMatching","_prepareMatching2","paste","endsWithNewlineChange","getLastChangeIndex","deleteLength","changeIndex","History","lastRecorded","ignoreChange","userOnly","record","undo","redo","dest","stack","changeDelta","undoDelta","timestamp","now","delay","maxStack","_core","_core2","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_italic","_italic2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_bubble","_bubble2","_snow","_snow2","attributors/attribute/direction","attributors/class/align","attributors/class/background","attributors/class/color","attributors/class/direction","attributors/class/font","attributors/class/size","attributors/style/align","attributors/style/background","attributors/style/color","attributors/style/direction","attributors/style/font","attributors/style/size","formats/align","formats/direction","formats/indent","formats/background","formats/color","formats/font","formats/size","formats/blockquote","formats/code-block","formats/header","formats/list","formats/bold","formats/code","formats/italic","formats/link","formats/script","formats/strike","formats/underline","formats/image","formats/video","formats/list/item","modules/formula","modules/syntax","modules/toolbar","themes/bubble","themes/snow","ui/icons","ui/picker","ui/icon-picker","ui/color-picker","ui/tooltip","supported","unsupported","propertyIsEnumerable","supportsArgumentsClass","shim","Events","EE","fn","EventEmitter","_events","_eventsCount","has","eventNames","listeners","exists","available","ee","a1","a2","a3","a4","a5","len","removeListener","j","removeAllListeners","addListener","setMaxListeners","prefixed","diff_main","text1","text2","cursor_pos","DIFF_EQUAL","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","fix_cursor","DIFF_INSERT","DIFF_DELETE","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","x1","k1_offset","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","ScrollBlot","MutationObserver","observe","disconnect","records","mark","markParent","remaining","grandChild","splitText","LinkedList","append","nodes","cur","curNode","ret","callback","curIndex","curLength"],"mappings":"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","file":"quill.min.js","sourcesContent":["(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 \n\n\n// WEBPACK FOOTER //\n// webpack/universalModuleDefinition","/*!\n * Quill Editor v1.2.4\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/******/ \t\t}\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 = 66);\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__(24);\nvar format_1 = __webpack_require__(25);\nvar leaf_1 = __webpack_require__(26);\nvar scroll_1 = __webpack_require__(106);\nvar inline_1 = __webpack_require__(105);\nvar block_1 = __webpack_require__(103);\nvar embed_1 = __webpack_require__(104);\nvar text_1 = __webpack_require__(107);\nvar attributor_1 = __webpack_require__(13);\nvar class_1 = __webpack_require__(41);\nvar style_1 = __webpack_require__(43);\nvar store_1 = __webpack_require__(42);\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['nodeType'] === Node.TEXT_NODE) ?\n input :\n 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 || query['nodeType'] === Node.TEXT_NODE) {\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) {\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/* 3 */\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__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _break = __webpack_require__(19);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _embed = __webpack_require__(5);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(4);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(11);\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/* 4 */\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__(5);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _text = __webpack_require__(11);\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/* 5 */\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/* 6 */\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__(69);\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/* 7 */\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/* 8 */\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__(63);\n\nvar _quillDelta = __webpack_require__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _editor = __webpack_require__(62);\n\nvar _editor2 = _interopRequireDefault(_editor);\n\nvar _emitter3 = __webpack_require__(6);\n\nvar _emitter4 = _interopRequireDefault(_emitter3);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _selection = __webpack_require__(21);\n\nvar _selection2 = _interopRequireDefault(_selection);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _theme = __webpack_require__(37);\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.4\";\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/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(70);\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(2);\nvar op = __webpack_require__(23);\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/* 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\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/* 12 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar pSlice = Array.prototype.slice;\nvar objectKeys = __webpack_require__(68);\nvar isArguments = __webpack_require__(67);\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/* 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});\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__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _inline = __webpack_require__(4);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _text = __webpack_require__(11);\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/* 15 */\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__(4);\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/* 16 */\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__(82);\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/* 17 */\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/* 18 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nmodule.exports = {\n 'align': {\n '': __webpack_require__(73),\n 'center': __webpack_require__(71),\n 'right': __webpack_require__(74),\n 'justify': __webpack_require__(72)\n },\n 'background': __webpack_require__(75),\n 'blockquote': __webpack_require__(76),\n 'bold': __webpack_require__(77),\n 'clean': __webpack_require__(78),\n 'code': __webpack_require__(40),\n 'code-block': __webpack_require__(40),\n 'color': __webpack_require__(79),\n 'direction': {\n '': __webpack_require__(80),\n 'rtl': __webpack_require__(81)\n },\n 'float': {\n 'center': __webpack_require__(83),\n 'full': __webpack_require__(84),\n 'left': __webpack_require__(85),\n 'right': __webpack_require__(86)\n },\n 'formula': __webpack_require__(87),\n 'header': {\n '1': __webpack_require__(89),\n '2': __webpack_require__(88)\n },\n 'italic': __webpack_require__(92),\n 'image': __webpack_require__(90),\n 'indent': {\n '+1': __webpack_require__(91),\n '-1': __webpack_require__(97)\n },\n 'link': __webpack_require__(93),\n 'list': {\n 'ordered': __webpack_require__(96),\n 'bullet': __webpack_require__(94),\n 'check': __webpack_require__(95)\n },\n 'script': {\n 'sub': __webpack_require__(99),\n 'super': __webpack_require__(100)\n },\n 'strike': __webpack_require__(98),\n 'underline': __webpack_require__(101),\n 'video': __webpack_require__(102)\n};\n\n/***/ }),\n/* 19 */\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__(5);\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/* 20 */\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__(3);\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/* 21 */\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__(22);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _emitter3 = __webpack_require__(6);\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 if (!_this.hasFocus()) return;\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/* 22 */\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/* 23 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(2);\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/* 24 */\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__(108);\nvar shadow_1 = __webpack_require__(44);\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/* 25 */\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__(42);\nvar container_1 = __webpack_require__(24);\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/* 26 */\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__(44);\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/* 27 */\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/* 28 */\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__(17);\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/* 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\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__(4);\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/* 30 */\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/* 31 */\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/* 32 */\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/* 33 */\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__(16);\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/* 34 */\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__(16);\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/* 35 */\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/* 36 */\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__(5);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _text = __webpack_require__(11);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _emitter = __webpack_require__(6);\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/* 37 */\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/* 38 */\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__(22);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _op = __webpack_require__(23);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\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 }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null }, { collapsed: true, offset: 0 }, 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 shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\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 '[]':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 _quill$getLine7 = this.quill.getLine(range.index - 1),\n _quill$getLine8 = _slicedToArray(_quill$getLine7, 1),\n prev = _quill$getLine8[0];\n\n if (prev != null && prev.length() > 1) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n }\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 var formats = {},\n nextLength = 0;\n\n var _quill$getLine9 = this.quill.getLine(range.index),\n _quill$getLine10 = _slicedToArray(_quill$getLine9, 1),\n line = _quill$getLine10[0];\n\n if (context.offset >= line.length() - 1) {\n var _quill$getLine11 = this.quill.getLine(range.index + 1),\n _quill$getLine12 = _slicedToArray(_quill$getLine11, 1),\n next = _quill$getLine12[0];\n\n if (next) {\n var curFormats = line.formats();\n var nextFormats = this.quill.getFormat(range.index, 1);\n formats = _op2.default.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, _quill2.default.sources.USER);\n }\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/* 39 */\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__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _emitter = __webpack_require__(6);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _keyboard = __webpack_require__(38);\n\nvar _keyboard2 = _interopRequireDefault(_keyboard);\n\nvar _theme = __webpack_require__(37);\n\nvar _theme2 = _interopRequireDefault(_theme);\n\nvar _colorPicker = __webpack_require__(33);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(34);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _tooltip = __webpack_require__(35);\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');\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/* 40 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 41 */\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/* 42 */\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__(41);\nvar style_1 = __webpack_require__(43);\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/* 43 */\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/* 44 */\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/* 45 */\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__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(19);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(20);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _cursor = __webpack_require__(36);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _embed = __webpack_require__(5);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _inline = __webpack_require__(4);\n\nvar _inline2 = _interopRequireDefault(_inline);\n\nvar _scroll = __webpack_require__(61);\n\nvar _scroll2 = _interopRequireDefault(_scroll);\n\nvar _text = __webpack_require__(11);\n\nvar _text2 = _interopRequireDefault(_text);\n\nvar _clipboard = __webpack_require__(64);\n\nvar _clipboard2 = _interopRequireDefault(_clipboard);\n\nvar _history = __webpack_require__(65);\n\nvar _history2 = _interopRequireDefault(_history);\n\nvar _keyboard = __webpack_require__(38);\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/* 46 */\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__(3);\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/* 47 */\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__(3);\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/* 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 _embed = __webpack_require__(5);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _link = __webpack_require__(15);\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/* 49 */\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/* 50 */\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__(29);\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/* 51 */\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__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _container = __webpack_require__(20);\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/* 52 */\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__(4);\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/* 53 */\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__(4);\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/* 54 */\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__(4);\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/* 55 */\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__(3);\n\nvar _link = __webpack_require__(15);\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/* 56 */\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__(5);\n\nvar _embed2 = _interopRequireDefault(_embed);\n\nvar _quill = __webpack_require__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\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/* 57 */\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__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _code = __webpack_require__(14);\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/* 58 */\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__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\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/* 59 */\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__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(6);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(39);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _selection = __webpack_require__(21);\n\nvar _icons = __webpack_require__(18);\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/* 60 */\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__(2);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _emitter = __webpack_require__(6);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _base = __webpack_require__(39);\n\nvar _base2 = _interopRequireDefault(_base);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _selection = __webpack_require__(21);\n\nvar _icons = __webpack_require__(18);\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/* 61 */\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__(6);\n\nvar _emitter2 = _interopRequireDefault(_emitter);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _break = __webpack_require__(19);\n\nvar _break2 = _interopRequireDefault(_break);\n\nvar _container = __webpack_require__(20);\n\nvar _container2 = _interopRequireDefault(_container);\n\nvar _code = __webpack_require__(14);\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/* 62 */\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__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _op = __webpack_require__(23);\n\nvar _op2 = _interopRequireDefault(_op);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _code = __webpack_require__(14);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _cursor = __webpack_require__(36);\n\nvar _cursor2 = _interopRequireDefault(_cursor);\n\nvar _block = __webpack_require__(3);\n\nvar _block2 = _interopRequireDefault(_block);\n\nvar _clone = __webpack_require__(22);\n\nvar _clone2 = _interopRequireDefault(_clone);\n\nvar _deepEqual = __webpack_require__(12);\n\nvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\nvar _extend = __webpack_require__(2);\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/* 63 */\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\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n/***/ }),\n/* 64 */\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 _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 _extend2 = __webpack_require__(2);\n\nvar _extend3 = _interopRequireDefault(_extend2);\n\nvar _quillDelta = __webpack_require__(9);\n\nvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\nvar _parchment = __webpack_require__(0);\n\nvar _parchment2 = _interopRequireDefault(_parchment);\n\nvar _quill = __webpack_require__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _logger = __webpack_require__(10);\n\nvar _logger2 = _interopRequireDefault(_logger);\n\nvar _module = __webpack_require__(7);\n\nvar _module2 = _interopRequireDefault(_module);\n\nvar _align = __webpack_require__(27);\n\nvar _background = __webpack_require__(28);\n\nvar _color = __webpack_require__(17);\n\nvar _direction = __webpack_require__(30);\n\nvar _font = __webpack_require__(31);\n\nvar _size = __webpack_require__(32);\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], [Node.TEXT_NODE, matchNewline], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['li', matchIndent], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\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.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\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 applyFormat(delta, format, value) {\n if ((typeof format === 'undefined' ? 'undefined' : _typeof(format)) === 'object') {\n return Object.keys(format).reduce(function (delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function (delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, (0, _extend3.default)({}, _defineProperty({}, format, value), op.attributes));\n }\n }, new _quillDelta2.default());\n }\n}\n\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 applyFormat(delta, 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 = applyFormat(delta, 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 delta = applyFormat(delta, match.blotName, match.formats(node));\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 matchIndent(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n var indent = -1,\n parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((_parchment2.default.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new _quillDelta2.default().retain(delta.length() - 1).retain(1, { indent: indent }));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || delta.length() > 0 && node.nextSibling && isLine(node.nextSibling)) {\n delta.insert('\\n');\n }\n }\n 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 = applyFormat(delta, 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 (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\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/* 65 */\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__(8);\n\nvar _quill2 = _interopRequireDefault(_quill);\n\nvar _module = __webpack_require__(7);\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/* 66 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nvar _core = __webpack_require__(45);\n\nvar _core2 = _interopRequireDefault(_core);\n\nvar _align = __webpack_require__(27);\n\nvar _direction = __webpack_require__(30);\n\nvar _indent = __webpack_require__(49);\n\nvar _blockquote = __webpack_require__(46);\n\nvar _blockquote2 = _interopRequireDefault(_blockquote);\n\nvar _header = __webpack_require__(47);\n\nvar _header2 = _interopRequireDefault(_header);\n\nvar _list = __webpack_require__(51);\n\nvar _list2 = _interopRequireDefault(_list);\n\nvar _background = __webpack_require__(28);\n\nvar _color = __webpack_require__(17);\n\nvar _font = __webpack_require__(31);\n\nvar _size = __webpack_require__(32);\n\nvar _bold = __webpack_require__(29);\n\nvar _bold2 = _interopRequireDefault(_bold);\n\nvar _italic = __webpack_require__(50);\n\nvar _italic2 = _interopRequireDefault(_italic);\n\nvar _link = __webpack_require__(15);\n\nvar _link2 = _interopRequireDefault(_link);\n\nvar _script = __webpack_require__(52);\n\nvar _script2 = _interopRequireDefault(_script);\n\nvar _strike = __webpack_require__(53);\n\nvar _strike2 = _interopRequireDefault(_strike);\n\nvar _underline = __webpack_require__(54);\n\nvar _underline2 = _interopRequireDefault(_underline);\n\nvar _image = __webpack_require__(48);\n\nvar _image2 = _interopRequireDefault(_image);\n\nvar _video = __webpack_require__(55);\n\nvar _video2 = _interopRequireDefault(_video);\n\nvar _code = __webpack_require__(14);\n\nvar _code2 = _interopRequireDefault(_code);\n\nvar _formula = __webpack_require__(56);\n\nvar _formula2 = _interopRequireDefault(_formula);\n\nvar _syntax = __webpack_require__(57);\n\nvar _syntax2 = _interopRequireDefault(_syntax);\n\nvar _toolbar = __webpack_require__(58);\n\nvar _toolbar2 = _interopRequireDefault(_toolbar);\n\nvar _icons = __webpack_require__(18);\n\nvar _icons2 = _interopRequireDefault(_icons);\n\nvar _picker = __webpack_require__(16);\n\nvar _picker2 = _interopRequireDefault(_picker);\n\nvar _colorPicker = __webpack_require__(33);\n\nvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\nvar _iconPicker = __webpack_require__(34);\n\nvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\nvar _tooltip = __webpack_require__(35);\n\nvar _tooltip2 = _interopRequireDefault(_tooltip);\n\nvar _bubble = __webpack_require__(59);\n\nvar _bubble2 = _interopRequireDefault(_bubble);\n\nvar _snow = __webpack_require__(60);\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/* 67 */\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/* 68 */\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/* 69 */\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/* 70 */\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/* 71 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 72 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 73 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 74 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 75 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\n\n/***/ }),\n/* 76 */\n/***/ (function(module, exports) {\n\nmodule.exports = \" \";\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, __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__(25);\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/* 104 */\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__(26);\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/* 105 */\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__(25);\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/* 106 */\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__(24);\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/* 107 */\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__(26);\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 var text = domNode.data;\n if (text[\"normalize\"])\n text = text[\"normalize\"]();\n return text;\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/* 108 */\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/******/ ]);\n});\n\n\n// WEBPACK FOOTER //\n// quill.min.js"," \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 \t\t}\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 = 66);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap c1b60fb132dcddd9508b","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar container_1 = require(\"./blot/abstract/container\");\nvar format_1 = require(\"./blot/abstract/format\");\nvar leaf_1 = require(\"./blot/abstract/leaf\");\nvar scroll_1 = require(\"./blot/scroll\");\nvar inline_1 = require(\"./blot/inline\");\nvar block_1 = require(\"./blot/block\");\nvar embed_1 = require(\"./blot/embed\");\nvar text_1 = require(\"./blot/text\");\nvar attributor_1 = require(\"./attributor/attributor\");\nvar class_1 = require(\"./attributor/class\");\nvar style_1 = require(\"./attributor/style\");\nvar store_1 = require(\"./attributor/store\");\nvar Registry = require(\"./registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/parchment.ts\n// module id = 0\n// module chunks = 0","\"use strict\";\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['nodeType'] === Node.TEXT_NODE) ?\n input :\n 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 || query['nodeType'] === Node.TEXT_NODE) {\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/registry.ts\n// module id = 1\n// module chunks = 0","'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//////////////////\n// WEBPACK FOOTER\n// ./~/extend/index.js\n// module id = 2\n// module chunks = 0","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Embed from './embed';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(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 let 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 insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize() {\n super.optimize();\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let 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 let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(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\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n\n\n\n// WEBPACK FOOTER //\n// ./blots/block.js","import Embed from './embed';\nimport Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let 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 formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize() {\n super.optimize();\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'code', 'underline', 'strike', 'italic', 'bold', 'script',\n 'link' // Must be higher\n];\n\n\nexport default Inline;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/inline.js","import Parchment from 'parchment';\n\nclass Embed extends Parchment.Embed { }\n\nexport default Embed;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/embed.js","import EventEmitter from 'eventemitter3';\nimport logger from './logger';\n\nlet debug = logger('quill:events');\n\n\nclass Emitter extends EventEmitter {\n constructor() {\n super();\n this.on('error', debug.error);\n }\n\n emit() {\n debug.log.apply(debug, arguments);\n super.emit.apply(this, arguments);\n }\n}\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\n\nexport default Emitter;\n\n\n\n// WEBPACK FOOTER //\n// ./core/emitter.js","class Module {\n constructor(quill, options = {}) {\n this.quill = quill;\n this.options = options;\n }\n}\nModule.DEFAULTS = {};\n\n\nexport default Module;\n\n\n\n// WEBPACK FOOTER //\n// ./core/module.js","import './polyfill';\nimport Delta from 'quill-delta';\nimport Editor from './editor';\nimport Emitter from './emitter';\nimport Module from './module';\nimport Parchment from 'parchment';\nimport Selection, { Range } from './selection';\nimport extend from 'extend';\nimport logger from './logger';\nimport Theme from './theme';\n\nlet debug = logger('quill');\n\n\nclass Quill {\n static debug(limit) {\n if (limit === true) {\n limit = 'log';\n }\n logger.level(limit);\n }\n\n static find(node) {\n return node.__quill || Parchment.find(node);\n }\n\n static 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 static register(path, target, overwrite = false) {\n if (typeof path !== 'string') {\n let 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((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/')) &&\n target.blotName !== 'abstract') {\n Parchment.register(target);\n } else if (path.startsWith('modules') && typeof target.register === 'function') {\n target.register();\n }\n }\n }\n\n constructor(container, options = {}) {\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 let 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 Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n scrollingContainer: this.scrollingContainer,\n whitelist: this.options.formats\n });\n this.editor = new Editor(this.scroll);\n this.selection = new Selection(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(Emitter.events.EDITOR_CHANGE, (type) => {\n if (type === Emitter.events.TEXT_CHANGE) {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n }\n });\n this.emitter.on(Emitter.events.SCROLL_UPDATE, (source, mutations) => {\n let range = this.selection.lastRange;\n let index = range && range.length === 0 ? range.index : undefined;\n modify.call(this, () => {\n return this.editor.update(null, mutations, index);\n }, source);\n });\n let 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 addContainer(container, refNode = null) {\n if (typeof container === 'string') {\n let 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 blur() {\n this.selection.setRange(null);\n }\n\n deleteText(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.deleteText(index, length);\n }, source, index, -1*length);\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.scroll.enable(enabled);\n this.container.classList.toggle('ql-disabled', !enabled);\n }\n\n focus() {\n let scrollTop = this.scrollingContainer.scrollTop;\n this.selection.focus();\n this.scrollingContainer.scrollTop = scrollTop;\n this.selection.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n return modify.call(this, () => {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) {\n return change;\n } else if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.editor.formatLine(range.index, range.length, { [name]: value });\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.editor.formatText(range.index, range.length, { [name]: value });\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }, source);\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatLine(index, length, formats);\n }, source, index, 0);\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n return modify.call(this, () => {\n return this.editor.formatText(index, length, formats);\n }, source, index, 0);\n }\n\n getBounds(index, length = 0) {\n let bounds;\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 let 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 getContents(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getContents(index, length);\n }\n\n getFormat(index = this.getSelection(), length = 0) {\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 getIndex(blot) {\n return blot.offset(this.scroll);\n }\n\n getLength() {\n return this.scroll.length();\n }\n\n getLeaf(index) {\n return this.scroll.leaf(index);\n }\n\n getLine(index) {\n return this.scroll.line(index);\n }\n\n getLines(index = 0, length = Number.MAX_VALUE) {\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 getModule(name) {\n return this.theme.modules[name];\n }\n\n getSelection(focus = false) {\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 getText(index = 0, length = this.getLength() - index) {\n [index, length] = overload(index, length);\n return this.editor.getText(index, length);\n }\n\n hasFocus() {\n return this.selection.hasFocus();\n }\n\n insertEmbed(index, embed, value, source = Quill.sources.API) {\n return modify.call(this, () => {\n return this.editor.insertEmbed(index, embed, value);\n }, source, index);\n }\n\n insertText(index, text, name, value, source) {\n let formats;\n [index, , formats, source] = overload(index, 0, name, value, source);\n return modify.call(this, () => {\n return this.editor.insertText(index, text, formats);\n }, source, index, text.length);\n }\n\n isEnabled() {\n return !this.container.classList.contains('ql-disabled');\n }\n\n off() {\n return this.emitter.off.apply(this.emitter, arguments);\n }\n\n on() {\n return this.emitter.on.apply(this.emitter, arguments);\n }\n\n once() {\n return this.emitter.once.apply(this.emitter, arguments);\n }\n\n pasteHTML(index, html, source) {\n this.clipboard.dangerouslyPasteHTML(index, html, source);\n }\n\n removeFormat(index, length, source) {\n [index, length, , source] = overload(index, length, source);\n return modify.call(this, () => {\n return this.editor.removeFormat(index, length);\n }, source, index);\n }\n\n setContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n let length = this.getLength();\n let deleted = this.editor.deleteText(0, length);\n let applied = this.editor.applyDelta(delta);\n let lastOp = applied.ops[applied.ops.length - 1];\n if (lastOp != null && typeof(lastOp.insert) === 'string' && lastOp.insert[lastOp.insert.length-1] === '\\n') {\n this.editor.deleteText(this.getLength() - 1, 1);\n applied.delete(1);\n }\n let ret = deleted.compose(applied);\n return ret;\n }, source);\n }\n\n setSelection(index, length, source) {\n if (index == null) {\n this.selection.setRange(null, length || Quill.sources.API);\n } else {\n [index, length, , source] = overload(index, length, source);\n this.selection.setRange(new Range(index, length), source);\n }\n if (source !== Emitter.sources.SILENT) {\n this.selection.scrollIntoView();\n }\n }\n\n setText(text, source = Emitter.sources.API) {\n let delta = new Delta().insert(text);\n return this.setContents(delta, source);\n }\n\n update(source = Emitter.sources.USER) {\n let 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 updateContents(delta, source = Emitter.sources.API) {\n return modify.call(this, () => {\n delta = new Delta(delta);\n return this.editor.applyDelta(delta, source);\n }, source, true);\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 = Emitter.events;\nQuill.sources = Emitter.sources;\n// eslint-disable-next-line no-undef\nQuill.version = typeof(QUILL_VERSION) === 'undefined' ? 'dev' : QUILL_VERSION;\n\nQuill.imports = {\n 'delta' : Delta,\n 'parchment' : Parchment,\n 'core/module' : Module,\n 'core/theme' : Theme\n};\n\n\nfunction expandConfig(container, userConfig) {\n userConfig = extend(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 = Theme;\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 let themeConfig = extend(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 let moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n let moduleConfig = moduleNames.reduce(function(config, name) {\n let 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 &&\n userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = extend(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 === Emitter.sources.USER) {\n return new Delta();\n }\n let range = index == null ? null : this.getSelection();\n let oldDelta = this.editor.delta;\n let 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, Emitter.sources.SILENT);\n }\n if (change.length() > 0) {\n let args = [Emitter.events.TEXT_CHANGE, change, oldDelta, source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n let 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 === '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 || Emitter.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n let start, end;\n if (index instanceof Delta) {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n return index.transformPosition(pos, source === Emitter.sources.USER);\n });\n } else {\n [start, end] = [range.index, range.index + range.length].map(function(pos) {\n if (pos < index || (pos === index && source !== Emitter.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 return new Range(start, end - start);\n}\n\n\nexport { expandConfig, overload, Quill as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/quill.js","var diff = require('fast-diff');\nvar equal = require('deep-equal');\nvar extend = require('extend');\nvar op = require('./op');\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//////////////////\n// WEBPACK FOOTER\n// ./~/quill-delta/lib/delta.js\n// module id = 9\n// module chunks = 0","let levels = ['error', 'warn', 'log', 'info'];\nlet level = 'warn';\n\nfunction debug(method, ...args) {\n if (levels.indexOf(method) <= levels.indexOf(level)) {\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\n\nexport default namespace;\n\n\n\n// WEBPACK FOOTER //\n// ./core/logger.js","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/text.js","var pSlice = Array.prototype.slice;\nvar objectKeys = require('./lib/keys.js');\nvar isArguments = require('./lib/is_arguments.js');\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//////////////////\n// WEBPACK FOOTER\n// ./~/deep-equal/index.js\n// module id = 12\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/attributor.ts\n// module id = 13\n// module chunks = 0","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Inline from '../blots/inline';\nimport TextBlot from '../blots/text';\n\n\nclass Code extends Inline {}\nCode.blotName = 'code';\nCode.tagName = 'CODE';\n\n\nclass CodeBlock extends Block {\n static create(value) {\n let domNode = super.create(value);\n domNode.setAttribute('spellcheck', false);\n return domNode;\n }\n\n static formats() {\n return true;\n }\n\n delta() {\n let text = this.domNode.textContent;\n if (text.endsWith('\\n')) { // Should always be true\n text = text.slice(0, -1);\n }\n return text.split('\\n').reduce((delta, frag) => {\n return delta.insert(frag).insert('\\n', this.formats());\n }, new Delta());\n }\n\n format(name, value) {\n if (name === this.statics.blotName && value) return;\n let [text, ] = this.descendant(TextBlot, this.length() - 1);\n if (text != null) {\n text.deleteAt(text.length() - 1, 1);\n }\n super.format(name, value);\n }\n\n formatAt(index, length, name, value) {\n if (length === 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK) == null ||\n (name === this.statics.blotName && value === this.statics.formats(this.domNode))) {\n return;\n }\n let nextNewline = this.newlineIndex(index);\n if (nextNewline < 0 || nextNewline >= index + length) return;\n let prevNewline = this.newlineIndex(index, true) + 1;\n let isolateLength = nextNewline - prevNewline + 1;\n let blot = this.isolate(prevNewline, isolateLength);\n let 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 insertAt(index, value, def) {\n if (def != null) return;\n let [text, offset] = this.descendant(TextBlot, index);\n text.insertAt(offset, value);\n }\n\n length() {\n let length = this.domNode.textContent.length;\n if (!this.domNode.textContent.endsWith('\\n')) {\n return length + 1;\n }\n return length;\n }\n\n newlineIndex(searchIndex, reverse = false) {\n if (!reverse) {\n let 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 optimize() {\n if (!this.domNode.textContent.endsWith('\\n')) {\n this.appendChild(Parchment.create('text', '\\n'));\n }\n super.optimize();\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n next.optimize();\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n super.replace(target);\n [].slice.call(this.domNode.querySelectorAll('*')).forEach(function(node) {\n let blot = Parchment.find(node);\n if (blot == null) {\n node.parentNode.removeChild(node);\n } else if (blot instanceof Parchment.Embed) {\n blot.remove();\n } else {\n blot.unwrap();\n }\n });\n }\n}\nCodeBlock.blotName = 'code-block';\nCodeBlock.tagName = 'PRE';\nCodeBlock.TAB = ' ';\n\n\nexport { Code, CodeBlock as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/code.js","import Inline from '../blots/inline';\n\n\nclass Link extends Inline {\n static create(value) {\n let node = super.create(value);\n value = this.sanitize(value);\n node.setAttribute('href', value);\n node.setAttribute('target', '_blank');\n return node;\n }\n\n static formats(domNode) {\n return domNode.getAttribute('href');\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n }\n\n format(name, value) {\n if (name !== this.statics.blotName || !value) return super.format(name, value);\n value = this.constructor.sanitize(value);\n this.domNode.setAttribute('href', value);\n }\n}\nLink.blotName = 'link';\nLink.tagName = 'A';\nLink.SANITIZED_URL = 'about:blank';\n\n\nfunction sanitize(url, protocols) {\n let anchor = document.createElement('a');\n anchor.href = url;\n let protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n return protocols.indexOf(protocol) > -1;\n}\n\n\nexport { Link as default, sanitize };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/link.js","import DropdownIcon from '../assets/icons/dropdown.svg';\n\n\nclass Picker {\n constructor(select) {\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', () => {\n this.container.classList.toggle('ql-expanded');\n });\n this.select.addEventListener('change', this.update.bind(this));\n }\n\n buildItem(option) {\n let 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', () => {\n this.selectItem(item, true);\n });\n return item;\n }\n\n buildLabel() {\n let label = document.createElement('span');\n label.classList.add('ql-picker-label');\n label.innerHTML = DropdownIcon;\n this.container.appendChild(label);\n return label;\n }\n\n buildOptions() {\n let options = document.createElement('span');\n options.classList.add('ql-picker-options');\n [].slice.call(this.select.options).forEach((option) => {\n let item = this.buildItem(option);\n options.appendChild(item);\n if (option.hasAttribute('selected')) {\n this.selectItem(item);\n }\n });\n this.container.appendChild(options);\n }\n\n buildPicker() {\n [].slice.call(this.select.attributes).forEach((item) => {\n this.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 close() {\n this.container.classList.remove('ql-expanded');\n }\n\n selectItem(item, trigger = false) {\n let 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 === 'object') { // IE11\n let event = document.createEvent('Event');\n event.initEvent('change', true, true);\n this.select.dispatchEvent(event);\n }\n this.close();\n }\n }\n\n update() {\n let option;\n if (this.select.selectedIndex > -1) {\n let 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 let isActive = option != null && option !== this.select.querySelector('option[selected]');\n this.label.classList.toggle('ql-active', isActive);\n }\n}\n\n\nexport default Picker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/picker.js","import Parchment from 'parchment';\n\nclass ColorAttributor extends Parchment.Attributor.Style {\n value(domNode) {\n let value = super.value(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\nlet ColorClass = new Parchment.Attributor.Class('color', 'ql-color', {\n scope: Parchment.Scope.INLINE\n});\nlet ColorStyle = new ColorAttributor('color', 'color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { ColorAttributor, ColorClass, ColorStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/color.js","module.exports = {\n 'align': {\n '' : require('../assets/icons/align-left.svg'),\n 'center' : require('../assets/icons/align-center.svg'),\n 'right' : require('../assets/icons/align-right.svg'),\n 'justify' : require('../assets/icons/align-justify.svg')\n },\n 'background': require('../assets/icons/background.svg'),\n 'blockquote': require('../assets/icons/blockquote.svg'),\n 'bold' : require('../assets/icons/bold.svg'),\n 'clean' : require('../assets/icons/clean.svg'),\n 'code' : require('../assets/icons/code.svg'),\n 'code-block': require('../assets/icons/code.svg'),\n 'color' : require('../assets/icons/color.svg'),\n 'direction' : {\n '' : require('../assets/icons/direction-ltr.svg'),\n 'rtl' : require('../assets/icons/direction-rtl.svg')\n },\n 'float': {\n 'center' : require('../assets/icons/float-center.svg'),\n 'full' : require('../assets/icons/float-full.svg'),\n 'left' : require('../assets/icons/float-left.svg'),\n 'right' : require('../assets/icons/float-right.svg')\n },\n 'formula' : require('../assets/icons/formula.svg'),\n 'header': {\n '1' : require('../assets/icons/header.svg'),\n '2' : require('../assets/icons/header-2.svg')\n },\n 'italic' : require('../assets/icons/italic.svg'),\n 'image' : require('../assets/icons/image.svg'),\n 'indent': {\n '+1' : require('../assets/icons/indent.svg'),\n '-1' : require('../assets/icons/outdent.svg')\n },\n 'link' : require('../assets/icons/link.svg'),\n 'list': {\n 'ordered' : require('../assets/icons/list-ordered.svg'),\n 'bullet' : require('../assets/icons/list-bullet.svg'),\n 'check' : require('../assets/icons/list-check.svg')\n },\n 'script': {\n 'sub' : require('../assets/icons/subscript.svg'),\n 'super' : require('../assets/icons/superscript.svg'),\n },\n 'strike' : require('../assets/icons/strike.svg'),\n 'underline' : require('../assets/icons/underline.svg'),\n 'video' : require('../assets/icons/video.svg')\n};\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icons.js","import Embed from './embed';\n\n\nclass Break extends Embed {\n static value() {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\n } else {\n this.remove();\n }\n }\n\n length() {\n return 0;\n }\n\n value() {\n return '';\n }\n}\nBreak.blotName = 'break';\nBreak.tagName = 'BR';\n\n\nexport default Break;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/break.js","import Parchment from 'parchment';\nimport Block, { BlockEmbed } from './block';\n\n\nclass Container extends Parchment.Container { }\nContainer.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Container;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/container.js","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport Emitter from './emitter';\nimport logger from './logger';\n\nlet debug = logger('quill:selection');\n\n\nclass Range {\n constructor(index, length = 0) {\n this.index = index;\n this.length = length;\n }\n}\n\n\nclass Selection {\n constructor(scroll, emitter) {\n this.emitter = emitter;\n this.scroll = scroll;\n this.composing = false;\n this.root = this.scroll.domNode;\n this.root.addEventListener('compositionstart', () => {\n this.composing = true;\n });\n this.root.addEventListener('compositionend', () => {\n this.composing = false;\n });\n this.cursor = Parchment.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((eventName) => {\n this.root.addEventListener(eventName, () => {\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, Emitter.sources.USER), 100);\n });\n });\n this.emitter.on(Emitter.events.EDITOR_CHANGE, (type, delta) => {\n if (type === Emitter.events.TEXT_CHANGE && delta.length() > 0) {\n this.update(Emitter.sources.SILENT);\n }\n });\n this.emitter.on(Emitter.events.SCROLL_BEFORE_UPDATE, () => {\n if (!this.hasFocus()) return;\n let 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(Emitter.events.SCROLL_UPDATE, () => {\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(Emitter.sources.SILENT);\n }\n\n focus() {\n if (this.hasFocus()) return;\n this.root.focus();\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n this.scroll.update();\n let nativeRange = this.getNativeRange();\n if (nativeRange == null || !nativeRange.native.collapsed || Parchment.query(format, Parchment.Scope.BLOCK)) return;\n if (nativeRange.start.node !== this.cursor.textNode) {\n let blot = Parchment.find(nativeRange.start.node, false);\n if (blot == null) return;\n // TODO Give blot ability to not split\n if (blot instanceof Parchment.Leaf) {\n let 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 getBounds(index, length = 0) {\n let scrollLength = this.scroll.length();\n index = Math.min(index, scrollLength - 1);\n length = Math.min(index + length, scrollLength - 1) - index;\n let node, [leaf, offset] = this.scroll.leaf(index);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n let range = document.createRange();\n if (length > 0) {\n range.setStart(node, offset);\n [leaf, offset] = this.scroll.leaf(index + length);\n if (leaf == null) return null;\n [node, offset] = leaf.position(offset, true);\n range.setEnd(node, offset);\n return range.getBoundingClientRect();\n } else {\n let side = 'left';\n let rect;\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 getNativeRange() {\n let selection = document.getSelection();\n if (selection == null || selection.rangeCount <= 0) return null;\n let nativeRange = selection.getRangeAt(0);\n if (nativeRange == null) return null;\n if (!contains(this.root, nativeRange.startContainer) ||\n (!nativeRange.collapsed && !contains(this.root, nativeRange.endContainer))) {\n return null;\n }\n let 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 let node = position.node, 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 getRange() {\n let range = this.getNativeRange();\n if (range == null) return [null, null];\n let positions = [[range.start.node, range.start.offset]];\n if (!range.native.collapsed) {\n positions.push([range.end.node, range.end.offset]);\n }\n let indexes = positions.map((position) => {\n let [node, offset] = position;\n let blot = Parchment.find(node, true);\n let index = blot.offset(this.scroll);\n if (offset === 0) {\n return index;\n } else if (blot instanceof Parchment.Container) {\n return index + blot.length();\n } else {\n return index + blot.index(node, offset);\n }\n });\n let start = Math.min(...indexes), end = Math.max(...indexes);\n end = Math.min(end, this.scroll.length() - 1);\n return [new Range(start, end-start), range];\n }\n\n hasFocus() {\n return document.activeElement === this.root;\n }\n\n scrollIntoView(range = this.lastRange) {\n if (range == null) return;\n let bounds = this.getBounds(range.index, range.length);\n if (bounds == null) return;\n let limit = this.scroll.length()-1;\n let [first, ] = this.scroll.line(Math.min(range.index, limit));\n let last = first;\n if (range.length > 0) {\n [last, ] = this.scroll.line(Math.min(range.index + range.length, limit));\n }\n if (first == null || last == null) return;\n let scroller = this.scroll.scrollingContainer;\n let 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 setNativeRange(startNode, startOffset, endNode = startNode, endOffset = startOffset, force = false) {\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 let selection = document.getSelection();\n if (selection == null) return;\n if (startNode != null) {\n if (!this.hasFocus()) this.root.focus();\n let native = (this.getNativeRange() || {}).native;\n if (native == null || force ||\n startNode !== native.startContainer ||\n startOffset !== native.startOffset ||\n endNode !== native.endContainer ||\n 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 let 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 setRange(range, force = false, source = Emitter.sources.API) {\n if (typeof force === 'string') {\n source = force;\n force = false;\n }\n debug.info('setRange', range);\n if (range != null) {\n let indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n let args = [];\n let scrollLength = this.scroll.length();\n indexes.forEach((index, i) => {\n index = Math.min(scrollLength - 1, index);\n let node, [leaf, offset] = this.scroll.leaf(index);\n [node, offset] = leaf.position(offset, i !== 0);\n args.push(node, offset);\n });\n if (args.length < 2) {\n args = args.concat(args);\n }\n this.setNativeRange(...args, force);\n } else {\n this.setNativeRange(null);\n }\n this.update(source);\n }\n\n update(source = Emitter.sources.USER) {\n let oldRange = this.lastRange;\n let [lastRange, nativeRange] = this.getRange();\n this.lastRange = lastRange;\n if (this.lastRange != null) {\n this.savedRange = this.lastRange;\n }\n if (!equal(oldRange, this.lastRange)) {\n if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n this.cursor.restore();\n }\n let args = [Emitter.events.SELECTION_CHANGE, clone(this.lastRange), clone(oldRange), source];\n this.emitter.emit(Emitter.events.EDITOR_CHANGE, ...args);\n if (source !== Emitter.sources.SILENT) {\n this.emitter.emit(...args);\n }\n }\n }\n}\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\n\nexport { Range, Selection as default };\n\n\n\n// WEBPACK FOOTER //\n// ./core/selection.js","var 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//////////////////\n// WEBPACK FOOTER\n// ./~/clone/clone.js\n// module id = 22\n// module chunks = 0","var equal = require('deep-equal');\nvar extend = require('extend');\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//////////////////\n// WEBPACK FOOTER\n// ./~/quill-delta/lib/op.js\n// module id = 23\n// module chunks = 0","\"use strict\";\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 = require(\"../../collection/linked-list\");\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/container.ts\n// module id = 24\n// module chunks = 0","\"use strict\";\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 = require(\"../../attributor/attributor\");\nvar store_1 = require(\"../../attributor/store\");\nvar container_1 = require(\"./container\");\nvar Registry = require(\"../../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/format.ts\n// module id = 25\n// module chunks = 0","\"use strict\";\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 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/leaf.ts\n// module id = 26\n// module chunks = 0","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignAttribute = new Parchment.Attributor.Attribute('align', 'align', config);\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignAttribute, AlignClass, AlignStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/align.js","import Parchment from 'parchment';\nimport { ColorAttributor } from './color';\n\nlet BackgroundClass = new Parchment.Attributor.Class('background', 'ql-bg', {\n scope: Parchment.Scope.INLINE\n});\nlet BackgroundStyle = new ColorAttributor('background', 'background-color', {\n scope: Parchment.Scope.INLINE\n});\n\nexport { BackgroundClass, BackgroundStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/background.js","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create() {\n return super.create();\n }\n\n static formats() {\n return true;\n }\n\n optimize() {\n super.optimize();\n if (this.domNode.tagName !== this.statics.tagName[0]) {\n this.replaceWith(this.statics.blotName);\n }\n }\n}\nBold.blotName = 'bold';\nBold.tagName = ['STRONG', 'B'];\n\nexport default Bold;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/bold.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionAttribute = new Parchment.Attributor.Attribute('direction', 'dir', config);\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionAttribute, DirectionClass, DirectionStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/direction.js","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.INLINE,\n whitelist: ['serif', 'monospace']\n};\n\nlet FontClass = new Parchment.Attributor.Class('font', 'ql-font', config);\n\nclass FontStyleAttributor extends Parchment.Attributor.Style {\n value(node) {\n return super.value(node).replace(/[\"']/g, '');\n }\n}\n\nlet FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/font.js","import Parchment from 'parchment';\n\nlet SizeClass = new Parchment.Attributor.Class('size', 'ql-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['small', 'large', 'huge']\n});\nlet SizeStyle = new Parchment.Attributor.Style('size', 'font-size', {\n scope: Parchment.Scope.INLINE,\n whitelist: ['10px', '18px', '32px']\n});\n\nexport { SizeClass, SizeStyle };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/size.js","import Picker from './picker';\n\n\nclass ColorPicker extends Picker {\n constructor(select, label) {\n super(select);\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 }\n\n buildItem(option) {\n let item = super.buildItem(option);\n item.style.backgroundColor = option.getAttribute('value') || '';\n return item;\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n let colorLabel = this.label.querySelector('.ql-color-label');\n let 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\nexport default ColorPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/color-picker.js","import Picker from './picker';\n\n\nclass IconPicker extends Picker {\n constructor(select, icons) {\n super(select);\n this.container.classList.add('ql-icon-picker');\n [].forEach.call(this.container.querySelectorAll('.ql-picker-item'), (item) => {\n item.innerHTML = icons[item.getAttribute('data-value') || ''];\n });\n this.defaultItem = this.container.querySelector('.ql-selected');\n this.selectItem(this.defaultItem);\n }\n\n selectItem(item, trigger) {\n super.selectItem(item, trigger);\n item = item || this.defaultItem;\n this.label.innerHTML = item.innerHTML;\n }\n}\n\n\nexport default IconPicker;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/icon-picker.js","class Tooltip {\n constructor(quill, boundsContainer) {\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', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + 'px';\n });\n }\n this.hide();\n }\n\n hide() {\n this.root.classList.add('ql-hidden');\n }\n\n position(reference) {\n let left = reference.left + reference.width/2 - this.root.offsetWidth/2;\n // root.scrollTop should be 0 if scrollContainer !== root\n let 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 let containerBounds = this.boundsContainer.getBoundingClientRect();\n let rootBounds = this.root.getBoundingClientRect();\n let 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 let height = rootBounds.bottom - rootBounds.top;\n let 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 show() {\n this.root.classList.remove('ql-editing');\n this.root.classList.remove('ql-hidden');\n }\n}\n\n\nexport default Tooltip;\n\n\n\n// WEBPACK FOOTER //\n// ./ui/tooltip.js","import Parchment from 'parchment';\nimport Embed from './embed';\nimport TextBlot from './text';\nimport Emitter from '../core/emitter';\n\n\nclass Cursor extends Embed {\n static value() {\n return undefined;\n }\n\n constructor(domNode, selection) {\n super(domNode);\n this.selection = selection;\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n this._length = 0;\n }\n\n detach() {\n // super.detach() will also clear domNode.__blot\n if (this.parent != null) this.parent.removeChild(this);\n }\n\n format(name, value) {\n if (this._length !== 0) {\n return super.format(name, value);\n }\n let target = this, index = 0;\n while (target != null && target.statics.scope !== Parchment.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 index(node, offset) {\n if (node === this.textNode) return 0;\n return super.index(node, offset);\n }\n\n length() {\n return this._length;\n }\n\n position() {\n return [this.textNode, this.textNode.data.length];\n }\n\n remove() {\n super.remove();\n this.parent = null;\n }\n\n restore() {\n if (this.selection.composing) return;\n if (this.parent == null) return;\n let textNode = this.textNode;\n let range = this.selection.getNativeRange();\n let restoreText, start, end;\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n [restoreText, start, end] = [textNode, range.start.offset, range.end.offset];\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 let text = this.textNode.data.split(Cursor.CONTENTS).join('');\n if (this.next instanceof TextBlot) {\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(Parchment.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(Emitter.events.SCROLL_OPTIMIZE, () => {\n [start, end] = [start, end].map(function(offset) {\n return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n });\n this.selection.setNativeRange(restoreText, start, restoreText, end);\n });\n }\n\n update(mutations) {\n mutations.forEach((mutation) => {\n if (mutation.type === 'characterData' && mutation.target === this.textNode) {\n this.restore();\n }\n });\n }\n\n value() {\n return '';\n }\n}\nCursor.blotName = 'cursor';\nCursor.className = 'ql-cursor';\nCursor.tagName = 'span';\nCursor.CONTENTS = \"\\uFEFF\"; // Zero width no break space\n\n\nexport default Cursor;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/cursor.js","class Theme {\n constructor(quill, options) {\n this.quill = quill;\n this.options = options;\n this.modules = {};\n }\n\n init() {\n Object.keys(this.options.modules).forEach((name) => {\n if (this.modules[name] == null) {\n this.addModule(name);\n }\n });\n }\n\n addModule(name) {\n let 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}\nTheme.DEFAULTS = {\n modules: {}\n};\nTheme.themes = {\n 'default': Theme\n};\n\n\nexport default Theme;\n\n\n\n// WEBPACK FOOTER //\n// ./core/theme.js","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:keyboard');\n\nconst SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\n\nclass Keyboard extends Module {\n static 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 constructor(quill, options) {\n super(quill, options);\n this.bindings = {};\n Object.keys(this.options.bindings).forEach((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 }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE, altKey: null, ctrlKey: null, metaKey: null, shiftKey: null },\n { collapsed: true, offset: 0 },\n handleBackspace);\n this.listen();\n }\n\n addBinding(key, context = {}, handler = {}) {\n let 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 = extend(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n\n listen() {\n this.quill.root.addEventListener('keydown', (evt) => {\n if (evt.defaultPrevented) return;\n let which = evt.which || evt.keyCode;\n let bindings = (this.bindings[which] || []).filter(function(binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n let range = this.quill.getSelection();\n if (range == null || !this.quill.hasFocus()) return;\n let [line, offset] = this.quill.getLine(range.index);\n let [leafStart, offsetStart] = this.quill.getLeaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.getLeaf(range.index + range.length);\n let prefixText = leafStart instanceof Parchment.Text ? leafStart.value().slice(0, offsetStart) : '';\n let suffixText = leafEnd instanceof Parchment.Text ? leafEnd.value().slice(offsetEnd) : '';\n let curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: this.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n let prevented = bindings.some((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 equal(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(this, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n}\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(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', Quill.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(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', Quill.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n shiftKey: null,\n metaKey: null,\n ctrlKey: null,\n altKey: null,\n format: ['blockquote', 'indent', 'list'],\n offset: 0,\n handler: function(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', Quill.sources.USER);\n } else if (context.format.blockquote != null) {\n this.quill.format('blockquote', false, Quill.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, Quill.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(range) {\n this.quill.deleteText(range.index - 1, 1, Quill.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function(range, context) {\n if (!context.collapsed) {\n this.quill.scroll.deleteAt(range.index, range.length);\n }\n this.quill.insertText(range.index, '\\t', Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.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(range, context) {\n this.quill.format('list', false, Quill.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, Quill.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function(range) {\n this.quill.scroll.insertAt(range.index, '\\n');\n let [line, ] = this.quill.getLine(range.index + 1);\n line.format('list', 'unchecked');\n this.quill.update(Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.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(range) {\n this.quill.scroll.insertAt(range.index, '\\n');\n this.quill.formatText(range.index + 1, 1, 'header', false, Quill.sources.USER);\n this.quill.setSelection(range.index + 1, Quill.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(range, context) {\n if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;\n let length = context.prefix.length;\n let value;\n switch (context.prefix.trim()) {\n case '[]': 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, Quill.sources.USER);\n this.quill.setSelection(range.index - length, Quill.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(range) {\n this.quill.format('code-block', false, Quill.sources.USER);\n this.quill.deleteText(range.index - 2, 1, Quill.sources.USER);\n }\n }\n }\n};\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n let [line, ] = this.quill.getLine(range.index);\n let formats = {};\n if (context.offset === 0) {\n let [prev, ] = this.quill.getLine(range.index - 1);\n if (prev != null && prev.length() > 1) {\n let curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\n }\n }\n // Check for astral symbols\n let length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index-length, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-length, length, formats, Quill.sources.USER);\n }\n this.quill.selection.scrollIntoView();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n let length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n let formats = {}, nextLength = 0;\n let [line, ] = this.quill.getLine(range.index);\n if (context.offset >= line.length() - 1) {\n let [next, ] = this.quill.getLine(range.index + 1);\n if (next) {\n let curFormats = line.formats();\n let nextFormats = this.quill.getFormat(range.index, 1);\n formats = DeltaOp.attributes.diff(curFormats, nextFormats) || {};\n nextLength = next.length();\n }\n }\n this.quill.deleteText(range.index, length, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index + nextLength - 1, length, formats, Quill.sources.USER);\n }\n}\n\nfunction handleDeleteRange(range) {\n this.quill.deleteText(range, Quill.sources.USER);\n this.quill.setSelection(range.index, Quill.sources.SILENT);\n this.quill.selection.scrollIntoView();\n}\n\nfunction handleEnter(range, context) {\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n let lineFormats = Object.keys(context.format).reduce(function(lineFormats, format) {\n if (Parchment.query(format, Parchment.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, Quill.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, Quill.sources.SILENT);\n this.quill.selection.scrollIntoView();\n Object.keys(context.format).forEach((name) => {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n this.quill.format(name, context.format[name], Quill.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(range) {\n let CodeBlock = Parchment.query('code-block');\n let index = range.index, length = range.length;\n let [block, offset] = this.quill.scroll.descendant(CodeBlock, index);\n if (block == null) return;\n let scrollIndex = this.quill.getIndex(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollIndex + offset + length);\n let lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach((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(Quill.sources.USER);\n this.quill.setSelection(index, length, Quill.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function(range, context) {\n this.quill.format(format, !context.format[format], Quill.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 === 'object') {\n binding = clone(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\n\nexport { Keyboard as default, SHORTKEY };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/keyboard.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport Theme from '../core/theme';\nimport ColorPicker from '../ui/color-picker';\nimport IconPicker from '../ui/icon-picker';\nimport Picker from '../ui/picker';\nimport Tooltip from '../ui/tooltip';\n\n\nconst ALIGNS = [ false, 'center', 'right', 'justify' ];\n\nconst COLORS = [\n \"#000000\", \"#e60000\", \"#ff9900\", \"#ffff00\", \"#008a00\", \"#0066cc\", \"#9933ff\",\n \"#ffffff\", \"#facccc\", \"#ffebcc\", \"#ffffcc\", \"#cce8cc\", \"#cce0f5\", \"#ebd6ff\",\n \"#bbbbbb\", \"#f06666\", \"#ffc266\", \"#ffff66\", \"#66b966\", \"#66a3e0\", \"#c285ff\",\n \"#888888\", \"#a10000\", \"#b26b00\", \"#b2b200\", \"#006100\", \"#0047b2\", \"#6b24b2\",\n \"#444444\", \"#5c0000\", \"#663d00\", \"#666600\", \"#003700\", \"#002966\", \"#3d1466\"\n];\n\nconst FONTS = [ false, 'serif', 'monospace' ];\n\nconst HEADERS = [ '1', '2', '3', false ];\n\nconst SIZES = [ 'small', false, 'large', 'huge' ];\n\n\nclass BaseTheme extends Theme {\n constructor(quill, options) {\n super(quill, options);\n let 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) &&\n 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 }\n\n addModule(name) {\n let module = super.addModule(name);\n if (name === 'toolbar') {\n this.extendToolbar(module);\n }\n return module;\n }\n\n buildButtons(buttons, icons) {\n buttons.forEach((button) => {\n let className = button.getAttribute('class') || '';\n className.split(/\\s+/).forEach((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 let value = button.value || '';\n if (value != null && icons[name][value]) {\n button.innerHTML = icons[name][value];\n }\n }\n });\n });\n }\n\n buildPickers(selects, icons) {\n this.pickers = selects.map((select) => {\n if (select.classList.contains('ql-align')) {\n if (select.querySelector('option') == null) {\n fillSelect(select, ALIGNS);\n }\n return new IconPicker(select, icons.align);\n } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n let 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 ColorPicker(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 Picker(select);\n }\n });\n let update = () => {\n this.pickers.forEach(function(picker) {\n picker.update();\n });\n };\n this.quill.on(Emitter.events.SELECTION_CHANGE, update)\n .on(Emitter.events.SCROLL_OPTIMIZE, update);\n }\n}\nBaseTheme.DEFAULTS = extend(true, {}, Theme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n formula: function() {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function() {\n let 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');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', () => {\n if (fileInput.files != null && fileInput.files[0] != null) {\n let reader = new FileReader();\n reader.onload = (e) => {\n let range = this.quill.getSelection(true);\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ image: e.target.result })\n , Emitter.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() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\n\nclass BaseTooltip extends Tooltip {\n constructor(quill, boundsContainer) {\n super(quill, boundsContainer);\n this.textbox = this.root.querySelector('input[type=\"text\"]');\n this.listen();\n }\n\n listen() {\n this.textbox.addEventListener('keydown', (event) => {\n if (Keyboard.match(event, 'enter')) {\n this.save();\n event.preventDefault();\n } else if (Keyboard.match(event, 'escape')) {\n this.cancel();\n event.preventDefault();\n }\n });\n }\n\n cancel() {\n this.hide();\n }\n\n edit(mode = 'link', preview = null) {\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 restoreFocus() {\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n\n save() {\n let value = this.textbox.value;\n switch(this.root.getAttribute('data-mode')) {\n case 'link': {\n let scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, Emitter.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, Emitter.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video': {\n let match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) ||\n 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+)/)) { // 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 if (!value) break;\n let range = this.quill.getSelection(true);\n let index = range.index + range.length;\n if (range != null) {\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, Emitter.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', Emitter.sources.USER);\n }\n this.quill.setSelection(index + 2, Emitter.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n}\n\n\nfunction fillSelect(select, values, defaultValue = false) {\n values.forEach(function(value) {\n let 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\n\nexport { BaseTooltip, BaseTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/base.js","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/code.svg\n// module id = 40\n// module chunks = 0","\"use strict\";\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 = require(\"./attributor\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/class.ts\n// module id = 41\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar attributor_1 = require(\"./attributor\");\nvar class_1 = require(\"./class\");\nvar style_1 = require(\"./style\");\nvar Registry = require(\"../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/store.ts\n// module id = 42\n// module chunks = 0","\"use strict\";\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 = require(\"./attributor\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/style.ts\n// module id = 43\n// module chunks = 0","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar Registry = require(\"../../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/shadow.ts\n// module id = 44\n// module chunks = 0","import Parchment from 'parchment';\nimport Quill from './core/quill';\n\nimport Block, { BlockEmbed } from './blots/block';\nimport Break from './blots/break';\nimport Container from './blots/container';\nimport Cursor from './blots/cursor';\nimport Embed from './blots/embed';\nimport Inline from './blots/inline';\nimport Scroll from './blots/scroll';\nimport TextBlot from './blots/text';\n\nimport Clipboard from './modules/clipboard';\nimport History from './modules/history';\nimport Keyboard from './modules/keyboard';\n\nQuill.register({\n 'blots/block' : Block,\n 'blots/block/embed' : BlockEmbed,\n 'blots/break' : Break,\n 'blots/container' : Container,\n 'blots/cursor' : Cursor,\n 'blots/embed' : Embed,\n 'blots/inline' : Inline,\n 'blots/scroll' : Scroll,\n 'blots/text' : TextBlot,\n\n 'modules/clipboard' : Clipboard,\n 'modules/history' : History,\n 'modules/keyboard' : Keyboard\n});\n\nParchment.register(Block, Break, Cursor, Inline, Scroll, TextBlot);\n\n\nmodule.exports = Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./core.js","import Block from '../blots/block';\n\n\nclass Blockquote extends Block {}\nBlockquote.blotName = 'blockquote';\nBlockquote.tagName = 'blockquote';\n\n\nexport default Blockquote;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/blockquote.js","import Block from '../blots/block';\n\n\nclass Header extends Block {\n static formats(domNode) {\n return this.tagName.indexOf(domNode.tagName) + 1;\n }\n}\nHeader.blotName = 'header';\nHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\n\nexport default Header;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/header.js","import Embed from '../blots/embed';\nimport { sanitize } from '../formats/link';\n\nconst ATTRIBUTES = [\n 'alt',\n 'height',\n 'width'\n];\n\n\nclass Image extends Embed {\n static create(value) {\n let node = super.create(value);\n if (typeof value === 'string') {\n node.setAttribute('src', this.sanitize(value));\n }\n return node;\n }\n\n static 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 static match(url) {\n return /\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url);\n }\n\n static sanitize(url) {\n return sanitize(url, ['http', 'https', 'data']) ? url : '//:0';\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n 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 super.format(name, value);\n }\n }\n}\nImage.blotName = 'image';\nImage.tagName = 'IMG';\n\n\nexport default Image;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/image.js","import Parchment from 'parchment';\n\nclass IdentAttributor extends Parchment.Attributor.Class {\n add(node, value) {\n if (value === '+1' || value === '-1') {\n let 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 super.add(node, value);\n }\n }\n\n canAdd(node, value) {\n return super.canAdd(node, value) || super.canAdd(node, parseInt(value));\n }\n\n value(node) {\n return parseInt(super.value(node)) || undefined; // Don't return NaN\n }\n}\n\nlet IndentClass = new IdentAttributor('indent', 'ql-indent', {\n scope: Parchment.Scope.BLOCK,\n whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n});\n\nexport { IndentClass };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/indent.js","import Bold from './bold';\n\nclass Italic extends Bold { }\nItalic.blotName = 'italic';\nItalic.tagName = ['EM', 'I'];\n\nexport default Italic;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/italic.js","import Parchment from 'parchment';\nimport Block from '../blots/block';\nimport Container from '../blots/container';\n\n\nclass ListItem extends Block {\n static formats(domNode) {\n return domNode.tagName === this.tagName ? undefined : super.formats(domNode);\n }\n\n format(name, value) {\n if (name === List.blotName && !value) {\n this.replaceWith(Parchment.create(this.statics.scope));\n } else {\n super.format(name, value);\n }\n }\n\n remove() {\n if (this.prev == null && this.next == null) {\n this.parent.remove();\n } else {\n super.remove();\n }\n }\n\n 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 super.replaceWith(name, value);\n }\n }\n}\nListItem.blotName = 'list-item';\nListItem.tagName = 'LI';\n\n\nclass List extends Container {\n static create(value) {\n let tagName = value === 'ordered' ? 'OL' : 'UL';\n let node = super.create(tagName);\n if (value === 'checked' || value === 'unchecked') {\n node.setAttribute('data-checked', value === 'checked');\n }\n return node;\n }\n\n static 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 constructor(domNode) {\n super(domNode);\n domNode.addEventListener('click', (e) => {\n if (e.target.parentNode !== domNode) return;\n let format = this.statics.formats(domNode);\n let blot = Parchment.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 }\n\n format(name, value) {\n if (this.children.length > 0) {\n this.children.tail.format(name, value);\n }\n }\n\n formats() {\n // We don't inherit from FormatBlot\n return { [this.statics.blotName]: this.statics.formats(this.domNode) };\n }\n\n insertBefore(blot, ref) {\n if (blot instanceof ListItem) {\n super.insertBefore(blot, ref);\n } else {\n let index = ref == null ? this.length() : ref.offset(this);\n let after = this.split(index);\n after.parent.insertBefore(blot, after);\n }\n }\n\n optimize() {\n super.optimize();\n let next = this.next;\n if (next != null && next.prev === this &&\n next.statics.blotName === this.statics.blotName &&\n next.domNode.tagName === this.domNode.tagName &&\n next.domNode.getAttribute('data-checked') === this.domNode.getAttribute('data-checked')) {\n next.moveChildren(this);\n next.remove();\n }\n }\n\n replace(target) {\n if (target.statics.blotName !== this.statics.blotName) {\n let item = Parchment.create(this.statics.defaultChild);\n target.moveChildren(item);\n this.appendChild(item);\n }\n super.replace(target);\n }\n}\nList.blotName = 'list';\nList.scope = Parchment.Scope.BLOCK_BLOT;\nList.tagName = ['OL', 'UL'];\nList.defaultChild = 'list-item';\nList.allowedChildren = [ListItem];\n\n\nexport { ListItem, List as default };\n\n\n\n// WEBPACK FOOTER //\n// ./formats/list.js","import Inline from '../blots/inline';\n\nclass Script extends Inline {\n static 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 super.create(value);\n }\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'SUB') return 'sub';\n if (domNode.tagName === 'SUP') return 'super';\n return undefined;\n }\n}\nScript.blotName = 'script';\nScript.tagName = ['SUB', 'SUP'];\n\nexport default Script;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/script.js","import Inline from '../blots/inline';\n\nclass Strike extends Inline { }\nStrike.blotName = 'strike';\nStrike.tagName = 'S';\n\nexport default Strike;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/strike.js","import Inline from '../blots/inline';\n\nclass Underline extends Inline { }\nUnderline.blotName = 'underline';\nUnderline.tagName = 'U';\n\nexport default Underline;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/underline.js","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\n\nconst ATTRIBUTES = [\n 'height',\n 'width'\n];\n\n\nclass Video extends BlockEmbed {\n static create(value) {\n let node = super.create(value);\n node.setAttribute('frameborder', '0');\n node.setAttribute('allowfullscreen', true);\n node.setAttribute('src', this.sanitize(value));\n return node;\n }\n\n static 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 static sanitize(url) {\n return Link.sanitize(url);\n }\n\n static value(domNode) {\n return domNode.getAttribute('src');\n }\n\n 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 super.format(name, value);\n }\n }\n}\nVideo.blotName = 'video';\nVideo.className = 'ql-video';\nVideo.tagName = 'IFRAME';\n\n\nexport default Video;\n\n\n\n// WEBPACK FOOTER //\n// ./formats/video.js","import Embed from '../blots/embed';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass FormulaBlot extends Embed {\n static create(value) {\n let node = super.create(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 static value(domNode) {\n return domNode.getAttribute('data-value');\n }\n\n index() {\n return 1;\n }\n}\nFormulaBlot.blotName = 'formula';\nFormulaBlot.className = 'ql-formula';\nFormulaBlot.tagName = 'SPAN';\n\n\nclass Formula extends Module {\n static register() {\n Quill.register(FormulaBlot, true);\n }\n\n constructor() {\n super();\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n }\n}\n\n\nexport { FormulaBlot, Formula as default };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/formula.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\nimport CodeBlock from '../formats/code';\n\n\nclass SyntaxCodeBlock extends CodeBlock {\n replaceWith(block) {\n this.domNode.textContent = this.domNode.textContent;\n this.attach();\n super.replaceWith(block);\n }\n\n highlight(highlight) {\n if (this.cachedHTML !== this.domNode.innerHTML) {\n let 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}\nSyntaxCodeBlock.className = 'ql-syntax';\n\n\nlet CodeToken = new Parchment.Attributor.Class('token', 'hljs', {\n scope: Parchment.Scope.INLINE\n});\n\n\nclass Syntax extends Module {\n static register() {\n Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\n }\n\n constructor(quill, options) {\n super(quill, options);\n if (typeof this.options.highlight !== 'function') {\n throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n }\n let timer = null;\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n if (timer != null) return;\n timer = setTimeout(() => {\n this.highlight();\n timer = null;\n }, 100);\n });\n this.highlight();\n }\n\n highlight() {\n if (this.quill.selection.composing) return;\n let range = this.quill.getSelection();\n this.quill.scroll.descendants(SyntaxCodeBlock).forEach((code) => {\n code.highlight(this.options.highlight);\n });\n this.quill.update(Quill.sources.SILENT);\n if (range != null) {\n this.quill.setSelection(range, Quill.sources.SILENT);\n }\n }\n}\nSyntax.DEFAULTS = {\n highlight: (function() {\n if (window.hljs == null) return null;\n return function(text) {\n let result = window.hljs.highlightAuto(text);\n return result.value;\n };\n })()\n};\n\n\nexport { SyntaxCodeBlock as CodeBlock, CodeToken, Syntax as default};\n\n\n\n// WEBPACK FOOTER //\n// ./modules/syntax.js","import Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nlet debug = logger('quill:toolbar');\n\n\nclass Toolbar extends Module {\n constructor(quill, options) {\n super(quill, options);\n if (Array.isArray(this.options.container)) {\n let 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 return debug.error('Container required for toolbar', this.options);\n }\n this.container.classList.add('ql-toolbar');\n this.controls = [];\n this.handlers = {};\n Object.keys(this.options.handlers).forEach((format) => {\n this.addHandler(format, this.options.handlers[format]);\n });\n [].forEach.call(this.container.querySelectorAll('button, select'), (input) => {\n this.attach(input);\n });\n this.quill.on(Quill.events.EDITOR_CHANGE, (type, range) => {\n if (type === Quill.events.SELECTION_CHANGE) {\n this.update(range);\n }\n });\n this.quill.on(Quill.events.SCROLL_OPTIMIZE, () => {\n let [range, ] = this.quill.selection.getRange(); // quill.getSelection triggers update\n this.update(range);\n });\n }\n\n addHandler(format, handler) {\n this.handlers[format] = handler;\n }\n\n attach(input) {\n let format = [].find.call(input.classList, (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 (Parchment.query(format) == null) {\n debug.warn('ignoring attaching to nonexistent format', format, input);\n return;\n }\n }\n let eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n input.addEventListener(eventName, (e) => {\n let value;\n if (input.tagName === 'SELECT') {\n if (input.selectedIndex < 0) return;\n let 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 this.quill.focus();\n let [range, ] = this.quill.selection.getRange();\n if (this.handlers[format] != null) {\n this.handlers[format].call(this, value);\n } else if (Parchment.query(format).prototype instanceof Parchment.Embed) {\n value = prompt(`Enter ${format}`);\n if (!value) return;\n this.quill.updateContents(new Delta()\n .retain(range.index)\n .delete(range.length)\n .insert({ [format]: value })\n , Quill.sources.USER);\n } else {\n this.quill.format(format, value, Quill.sources.USER);\n }\n this.update(range);\n });\n // TODO use weakmap\n this.controls.push([format, input]);\n }\n\n update(range) {\n let formats = range == null ? {} : this.quill.getFormat(range);\n this.controls.forEach(function(pair) {\n let [format, input] = pair;\n if (input.tagName === 'SELECT') {\n let option;\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 let 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 let isActive = formats[format] === input.getAttribute('value') ||\n (formats[format] != null && formats[format].toString() === input.getAttribute('value')) ||\n (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}\nToolbar.DEFAULTS = {};\n\n\nfunction addButton(container, format, value) {\n let 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 let 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 let format = Object.keys(control)[0];\n let 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 let input = document.createElement('select');\n input.classList.add('ql-' + format);\n values.forEach(function(value) {\n let 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() {\n let range = this.quill.getSelection();\n if (range == null) return;\n if (range.length == 0) {\n let formats = this.quill.getFormat();\n Object.keys(formats).forEach((name) => {\n // Clean functionality in existing apps only clean inline formats\n if (Parchment.query(name, Parchment.Scope.INLINE) != null) {\n this.quill.format(name, false);\n }\n });\n } else {\n this.quill.removeFormat(range, Quill.sources.USER);\n }\n },\n direction: function(value) {\n let align = this.quill.getFormat()['align'];\n if (value === 'rtl' && align == null) {\n this.quill.format('align', 'right', Quill.sources.USER);\n } else if (!value && align === 'right') {\n this.quill.format('align', false, Quill.sources.USER);\n }\n this.quill.format('direction', value, Quill.sources.USER);\n },\n indent: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n let indent = parseInt(formats.indent || 0);\n if (value === '+1' || value === '-1') {\n let modifier = (value === '+1') ? 1 : -1;\n if (formats.direction === 'rtl') modifier *= -1;\n this.quill.format('indent', indent + modifier, Quill.sources.USER);\n }\n },\n link: function(value) {\n if (value === true) {\n value = prompt('Enter link URL:');\n }\n this.quill.format('link', value, Quill.sources.USER);\n },\n list: function(value) {\n let range = this.quill.getSelection();\n let formats = this.quill.getFormat(range);\n if (value === 'check') {\n if (formats['list'] === 'checked' || formats['list'] === 'unchecked') {\n this.quill.format('list', false, Quill.sources.USER);\n } else {\n this.quill.format('list', 'unchecked', Quill.sources.USER);\n }\n } else {\n this.quill.format('list', value, Quill.sources.USER);\n }\n }\n }\n}\n\n\nexport { Toolbar as default, addControls };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/toolbar.js","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n ['bold', 'italic', 'link'],\n [{ header: 1 }, { header: 2 }, 'blockquote']\n];\n\nclass BubbleTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-bubble');\n }\n\n 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')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\n }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (!value) {\n this.quill.format('link', false);\n } else {\n this.quill.theme.tooltip.edit();\n }\n }\n }\n }\n }\n});\n\n\nclass BubbleTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.quill.on(Emitter.events.EDITOR_CHANGE, (type, range, oldRange, source) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0 && source === Emitter.sources.USER) {\n this.show();\n // Lock our width so we will expand beyond our offsetParent boundaries\n this.root.style.left = '0px';\n this.root.style.width = '';\n this.root.style.width = this.root.offsetWidth + 'px';\n let lines = this.quill.getLines(range.index, range.length);\n if (lines.length === 1) {\n this.position(this.quill.getBounds(range));\n } else {\n let lastLine = lines[lines.length - 1];\n let index = this.quill.getIndex(lastLine);\n let length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n let bounds = this.quill.getBounds(new Range(index, length));\n this.position(bounds);\n }\n } else if (document.activeElement !== this.textbox && this.quill.hasFocus()) {\n this.hide();\n }\n });\n }\n\n listen() {\n super.listen();\n this.root.querySelector('.ql-close').addEventListener('click', () => {\n this.root.classList.remove('ql-editing');\n });\n this.quill.on(Emitter.events.SCROLL_OPTIMIZE, () => {\n // Let selection be restored by toolbar handlers before repositioning\n setTimeout(() => {\n if (this.root.classList.contains('ql-hidden')) return;\n let range = this.quill.getSelection();\n if (range != null) {\n this.position(this.quill.getBounds(range));\n }\n }, 1);\n });\n }\n\n cancel() {\n this.show();\n }\n\n position(reference) {\n let shift = super.position(reference);\n let 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}\nBubbleTooltip.TEMPLATE = [\n '',\n '
',\n '',\n '',\n '
'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/bubble.js","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport { Range } from '../core/selection';\nimport icons from '../ui/icons';\n\n\nconst TOOLBAR_CONFIG = [\n [{ header: ['1', '2', '3', false] }],\n ['bold', 'italic', 'underline', 'link'],\n [{ list: 'ordered' }, { list: 'bullet' }],\n ['clean']\n];\n\nclass SnowTheme extends BaseTheme {\n constructor(quill, options) {\n if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n options.modules.toolbar.container = TOOLBAR_CONFIG;\n }\n super(quill, options);\n this.quill.container.classList.add('ql-snow');\n }\n\n extendToolbar(toolbar) {\n toolbar.container.classList.add('ql-snow');\n this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), icons);\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), icons);\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}\nSnowTheme.DEFAULTS = extend(true, {}, BaseTheme.DEFAULTS, {\n modules: {\n toolbar: {\n handlers: {\n link: function(value) {\n if (value) {\n let range = this.quill.getSelection();\n if (range == null || range.length == 0) return;\n let preview = this.quill.getText(range);\n if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n preview = 'mailto:' + preview;\n }\n let tooltip = this.quill.theme.tooltip;\n tooltip.edit('link', preview);\n } else {\n this.quill.format('link', false);\n }\n }\n }\n }\n }\n});\n\n\nclass SnowTooltip extends BaseTooltip {\n constructor(quill, bounds) {\n super(quill, bounds);\n this.preview = this.root.querySelector('a.ql-preview');\n }\n\n listen() {\n super.listen();\n this.root.querySelector('a.ql-action').addEventListener('click', (event) => {\n if (this.root.classList.contains('ql-editing')) {\n this.save();\n } else {\n this.edit('link', this.preview.textContent);\n }\n event.preventDefault();\n });\n this.root.querySelector('a.ql-remove').addEventListener('click', (event) => {\n if (this.linkRange != null) {\n let range = this.linkRange;\n this.restoreFocus();\n this.quill.formatText(range, 'link', false, Emitter.sources.USER);\n delete this.linkRange;\n }\n event.preventDefault();\n this.hide();\n });\n this.quill.on(Emitter.events.SELECTION_CHANGE, (range, oldRange, source) => {\n if (range == null) return;\n if (range.length === 0 && source === Emitter.sources.USER) {\n let [link, offset] = this.quill.scroll.descendant(LinkBlot, range.index);\n if (link != null) {\n this.linkRange = new Range(range.index - offset, link.length());\n let preview = LinkBlot.formats(link.domNode);\n this.preview.textContent = preview;\n this.preview.setAttribute('href', preview);\n this.show();\n this.position(this.quill.getBounds(this.linkRange));\n return;\n }\n } else {\n delete this.linkRange;\n }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '',\n '',\n '',\n ''\n].join('');\n\n\nexport default SnowTheme;\n\n\n\n// WEBPACK FOOTER //\n// ./themes/snow.js","import Parchment from 'parchment';\nimport Emitter from '../core/emitter';\nimport Block, { BlockEmbed } from './block';\nimport Break from './break';\nimport Container from './container';\nimport CodeBlock from '../formats/code';\n\n\nfunction isLine(blot) {\n return (blot instanceof Block || blot instanceof BlockEmbed);\n}\n\n\nclass Scroll extends Parchment.Scroll {\n constructor(domNode, config) {\n super(domNode);\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 }\n\n deleteAt(index, length) {\n let [first, offset] = this.line(index);\n let [last, ] = this.line(index + length);\n super.deleteAt(index, length);\n if (last != null && first !== last && offset > 0 &&\n !(first instanceof BlockEmbed) && !(last instanceof BlockEmbed)) {\n if (last instanceof CodeBlock) {\n last.deleteAt(last.length() - 1, 1);\n }\n let ref = last.children.head instanceof Break ? null : last.children.head;\n first.moveChildren(last, ref);\n first.remove();\n }\n this.optimize();\n }\n\n enable(enabled = true) {\n this.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatAt(index, length, format, value) {\n if (this.whitelist != null && !this.whitelist[format]) return;\n super.formatAt(index, length, format, value);\n this.optimize();\n }\n\n insertAt(index, value, def) {\n if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n if (index >= this.length()) {\n if (def == null || Parchment.query(value, Parchment.Scope.BLOCK) == null) {\n let blot = Parchment.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 let embed = Parchment.create(value, def);\n this.appendChild(embed);\n }\n } else {\n super.insertAt(index, value, def);\n }\n this.optimize();\n }\n\n insertBefore(blot, ref) {\n if (blot.statics.scope === Parchment.Scope.INLINE_BLOT) {\n let wrapper = Parchment.create(this.statics.defaultChild);\n wrapper.appendChild(blot);\n blot = wrapper;\n }\n super.insertBefore(blot, ref);\n }\n\n leaf(index) {\n return this.path(index).pop() || [null, -1];\n }\n\n line(index) {\n if (index === this.length()) {\n return this.line(index - 1);\n }\n return this.descendant(isLine, index);\n }\n\n lines(index = 0, length = Number.MAX_VALUE) {\n let getLines = (blot, index, length) => {\n let lines = [], 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 Parchment.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 optimize(mutations = []) {\n if (this.batch === true) return;\n super.optimize(mutations);\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_OPTIMIZE, mutations);\n }\n }\n\n path(index) {\n return super.path(index).slice(1); // Exclude self\n }\n\n update(mutations) {\n if (this.batch === true) return;\n let source = Emitter.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(Emitter.events.SCROLL_BEFORE_UPDATE, source, mutations);\n }\n super.update(mutations.concat([])); // pass copy\n if (mutations.length > 0) {\n this.emitter.emit(Emitter.events.SCROLL_UPDATE, source, mutations);\n }\n }\n}\nScroll.blotName = 'scroll';\nScroll.className = 'ql-editor';\nScroll.tagName = 'DIV';\nScroll.defaultChild = 'block';\nScroll.allowedChildren = [Block, BlockEmbed, Container];\n\n\nexport default Scroll;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/scroll.js","import Delta from 'quill-delta';\nimport DeltaOp from 'quill-delta/lib/op';\nimport Parchment from 'parchment';\nimport CodeBlock from '../formats/code';\nimport CursorBlot from '../blots/cursor';\nimport Block, { bubbleFormats } from '../blots/block';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\n\n\nclass Editor {\n constructor(scroll) {\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n applyDelta(delta) {\n let consumeNextNewline = false;\n this.scroll.update();\n let scrollLength = this.scroll.length();\n this.scroll.batch = true;\n delta = normalizeDelta(delta);\n delta.reduce((index, op) => {\n let length = op.retain || op.delete || op.insert.length || 1;\n let attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n let 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 let [line, offset] = this.scroll.line(index);\n let formats = extend({}, bubbleFormats(line));\n if (line instanceof Block) {\n let [leaf, ] = line.descendant(Parchment.Leaf, offset);\n formats = extend(formats, bubbleFormats(leaf));\n }\n attributes = DeltaOp.attributes.diff(formats, attributes) || {};\n } else if (typeof op.insert === 'object') {\n let 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((name) => {\n this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce((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 deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length));\n }\n\n formatLine(index, length, formats = {}) {\n this.scroll.update();\n Object.keys(formats).forEach((format) => {\n if (this.scroll.whitelist != null && !this.scroll.whitelist[format]) return;\n let lines = this.scroll.lines(index, Math.max(length, 1));\n let lengthRemaining = length;\n lines.forEach((line) => {\n let lineLength = line.length();\n if (!(line instanceof CodeBlock)) {\n line.format(format, formats[format]);\n } else {\n let codeIndex = index - line.offset(this.scroll);\n let 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 Delta().retain(index).retain(length, clone(formats)));\n }\n\n formatText(index, length, formats = {}) {\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).retain(length, clone(formats)));\n }\n\n getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n\n getDelta() {\n return this.scroll.lines().reduce((delta, line) => {\n return delta.concat(line.delta());\n }, new Delta());\n }\n\n getFormat(index, length = 0) {\n let lines = [], leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function(path) {\n let [blot, ] = path;\n if (blot instanceof Block) {\n lines.push(blot);\n } else if (blot instanceof Parchment.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(Parchment.Leaf, index, length);\n }\n let formatsArr = [lines, leaves].map(function(blots) {\n if (blots.length === 0) return {};\n let formats = bubbleFormats(blots.shift());\n while (Object.keys(formats).length > 0) {\n let blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats(bubbleFormats(blot), formats);\n }\n return formats;\n });\n return extend.apply(extend, formatsArr);\n }\n\n 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 insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }));\n }\n\n insertText(index, text, formats = {}) {\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach((format) => {\n this.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new Delta().retain(index).insert(text, clone(formats)));\n }\n\n isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n let child = this.scroll.children.head;\n return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n }\n\n removeFormat(index, length) {\n let text = this.getText(index, length);\n let [line, offset] = this.scroll.line(index + length);\n let suffixLength = 0, suffix = new Delta();\n if (line != null) {\n if (!(line instanceof CodeBlock)) {\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 let contents = this.getContents(index, length + suffixLength);\n let diff = contents.diff(new Delta().insert(text).concat(suffix));\n let delta = new Delta().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n\n update(change, mutations = [], cursorIndex = undefined) {\n let oldDelta = this.delta;\n if (mutations.length === 1 &&\n mutations[0].type === 'characterData' &&\n Parchment.find(mutations[0].target)) {\n // Optimization for character changes\n let textBlot = Parchment.find(mutations[0].target);\n let formats = bubbleFormats(textBlot);\n let index = textBlot.offset(this.scroll);\n let oldValue = mutations[0].oldValue.replace(CursorBlot.CONTENTS, '');\n let oldText = new Delta().insert(oldValue);\n let newText = new Delta().insert(textBlot.value());\n let diffDelta = new Delta().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 Delta());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !equal(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n}\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 let attributes = clone(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 = clone(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 let 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 Delta());\n}\n\n\nexport default Editor;\n\n\n\n// WEBPACK FOOTER //\n// ./core/editor.js","let elem = document.createElement('div');\nelem.classList.toggle('test-class', false);\nif (elem.classList.contains('test-class')) {\n let _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(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\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n // Disable resizing in Firefox\n document.execCommand(\"enableObjectResizing\", false, false);\n // Disable automatic linkifying in IE11\n document.execCommand(\"autoUrlDetect\", false, false);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./core/polyfill.js","import extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignAttribute, AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionAttribute, DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\n\n\nconst DOM_KEY = '__ql-matcher';\n\nconst CLIPBOARD_CONFIG = [\n [Node.TEXT_NODE, matchText],\n [Node.TEXT_NODE, matchNewline],\n ['br', matchBreak],\n [Node.ELEMENT_NODE, matchNewline],\n [Node.ELEMENT_NODE, matchBlot],\n [Node.ELEMENT_NODE, matchSpacing],\n [Node.ELEMENT_NODE, matchAttributor],\n [Node.ELEMENT_NODE, matchStyles],\n ['li', matchIndent],\n ['b', matchAlias.bind(matchAlias, 'bold')],\n ['i', matchAlias.bind(matchAlias, 'italic')],\n ['style', matchIgnore]\n];\n\nconst ATTRIBUTE_ATTRIBUTORS = [\n AlignAttribute,\n DirectionAttribute\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nconst STYLE_ATTRIBUTORS = [\n AlignStyle,\n BackgroundStyle,\n ColorStyle,\n DirectionStyle,\n FontStyle,\n SizeStyle\n].reduce(function(memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\n\nclass Clipboard extends Module {\n constructor(quill, options) {\n super(quill, options);\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((pair) => {\n this.addMatcher(...pair);\n });\n }\n\n addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n\n convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html.replace(/\\>\\r?\\n +\\<'); // Remove spaces between tags\n }\n let [elementMatchers, textMatchers] = this.prepareMatching();\n let 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 Delta().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 dangerouslyPasteHTML(index, html, source = Quill.sources.API) {\n if (typeof index === 'string') {\n return this.quill.setContents(this.convert(index), html);\n } else {\n let paste = this.convert(html);\n return this.quill.updateContents(new Delta().retain(index).concat(paste), source);\n }\n }\n\n onPaste(e) {\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index);\n let scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n setTimeout(() => {\n this.quill.selection.update(Quill.sources.SILENT);\n delta = delta.concat(this.convert()).delete(range.length);\n this.quill.updateContents(delta, Quill.sources.USER);\n // range.length contributes to delta.length()\n this.quill.setSelection(delta.length() - range.length, Quill.sources.SILENT);\n this.quill.scrollingContainer.scrollTop = scrollTop;\n this.quill.selection.scrollIntoView();\n }, 1);\n }\n\n prepareMatching() {\n let elementMatchers = [], textMatchers = [];\n this.matchers.forEach((pair) => {\n let [selector, matcher] = pair;\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(this.container.querySelectorAll(selector), (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}\nClipboard.DEFAULTS = {\n matchers: []\n};\n\n\nfunction applyFormat(delta, format, value) {\n if (typeof format === 'object') {\n return Object.keys(format).reduce(function(delta, key) {\n return applyFormat(delta, key, format[key]);\n }, delta);\n } else {\n return delta.reduce(function(delta, op) {\n if (op.attributes && op.attributes[format]) {\n return delta.push(op);\n } else {\n return delta.insert(op.insert, extend({}, {[format]: value}, op.attributes));\n }\n }, new Delta());\n }\n}\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n const DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n let endText = \"\";\n for (let i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n let 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 let style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) { // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function(delta, matcher) {\n return matcher(node, delta);\n }, new Delta());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], (delta, childNode) => {\n let 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 Delta());\n } else {\n return new Delta();\n }\n}\n\n\nfunction matchAlias(format, node, delta) {\n return applyFormat(delta, format, true);\n}\n\nfunction matchAttributor(node, delta) {\n let attributes = Parchment.Attributor.Attribute.keys(node);\n let classes = Parchment.Attributor.Class.keys(node);\n let styles = Parchment.Attributor.Style.keys(node);\n let formats = {};\n attributes.concat(classes).concat(styles).forEach((name) => {\n let attr = Parchment.query(name, Parchment.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 = applyFormat(delta, formats);\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n let match = Parchment.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof Parchment.Embed) {\n let embed = {};\n let value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new Delta().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n delta = applyFormat(delta, match.blotName, match.formats(node));\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 Delta();\n}\n\nfunction matchIndent(node, delta) {\n let match = Parchment.query(node);\n if (match == null || match.blotName !== 'list-item' || !deltaEndsWith(delta, '\\n')) {\n return delta;\n }\n let indent = -1, parent = node.parentNode;\n while (!parent.classList.contains('ql-clipboard')) {\n if ((Parchment.query(parent) || {}).blotName === 'list') {\n indent += 1;\n }\n parent = parent.parentNode;\n }\n if (indent <= 0) return delta;\n return delta.compose(new Delta().retain(delta.length() - 1).retain(1, { indent: indent}));\n}\n\nfunction matchNewline(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n if (isLine(node) || (delta.length() > 0 && node.nextSibling && isLine(node.nextSibling))) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n let 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 let formats = {};\n let 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 = applyFormat(delta, formats);\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let 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 (text.trim().length === 0 && node.parentNode.classList.contains('ql-clipboard')) {\n return delta;\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n let replacer = function(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)) ||\n (node.previousSibling != null && isLine(node.previousSibling))) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if ((node.nextSibling == null && isLine(node.parentNode)) ||\n (node.nextSibling != null && isLine(node.nextSibling))) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\n\nexport { Clipboard as default, matchAttributor, matchBlot, matchNewline, matchSpacing, matchText };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/clipboard.js","import Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport Module from '../core/module';\n\n\nclass History extends Module {\n constructor(quill, options) {\n super(quill, options);\n this.lastRecorded = 0;\n this.ignoreChange = false;\n this.clear();\n this.quill.on(Quill.events.EDITOR_CHANGE, (eventName, delta, oldDelta, source) => {\n if (eventName !== Quill.events.TEXT_CHANGE || this.ignoreChange) return;\n if (!this.options.userOnly || source === Quill.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 }\n\n change(source, dest) {\n if (this.stack[source].length === 0) return;\n let delta = this.stack[source].pop();\n this.lastRecorded = 0;\n this.ignoreChange = true;\n this.quill.updateContents(delta[source], Quill.sources.USER);\n this.ignoreChange = false;\n let index = getLastChangeIndex(delta[source]);\n this.quill.setSelection(index);\n this.quill.selection.scrollIntoView();\n this.stack[dest].push(delta);\n }\n\n clear() {\n this.stack = { undo: [], redo: [] };\n }\n\n record(changeDelta, oldDelta) {\n if (changeDelta.ops.length === 0) return;\n this.stack.redo = [];\n let undoDelta = this.quill.getContents().diff(oldDelta);\n let timestamp = Date.now();\n if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n let 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 redo() {\n this.change('redo', 'undo');\n }\n\n 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 undo() {\n this.change('undo', 'redo');\n }\n}\nHistory.DEFAULTS = {\n delay: 1000,\n maxStack: 100,\n userOnly: false\n};\n\nfunction endsWithNewlineChange(delta) {\n let 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 Parchment.query(attr, Parchment.Scope.BLOCK) != null;\n });\n }\n return false;\n}\n\nfunction getLastChangeIndex(delta) {\n let deleteLength = delta.reduce(function(length, op) {\n length += (op.delete || 0);\n return length;\n }, 0);\n let changeIndex = delta.length() - deleteLength;\n if (endsWithNewlineChange(delta)) {\n changeIndex -= 1;\n }\n return changeIndex;\n}\n\n\nexport { History as default, getLastChangeIndex };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/history.js","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { DirectionAttribute, DirectionClass, DirectionStyle } from './formats/direction';\nimport { IndentClass as Indent } from './formats/indent';\n\nimport Blockquote from './formats/blockquote';\nimport Header from './formats/header';\nimport List, { ListItem } from './formats/list';\n\nimport { BackgroundClass, BackgroundStyle } from './formats/background';\nimport { ColorClass, ColorStyle } from './formats/color';\nimport { FontClass, FontStyle } from './formats/font';\nimport { SizeClass, SizeStyle } from './formats/size';\n\nimport Bold from './formats/bold';\nimport Italic from './formats/italic';\nimport Link from './formats/link';\nimport Script from './formats/script';\nimport Strike from './formats/strike';\nimport Underline from './formats/underline';\n\nimport Image from './formats/image';\nimport Video from './formats/video';\n\nimport CodeBlock, { Code as InlineCode } from './formats/code';\n\nimport Formula from './modules/formula';\nimport Syntax from './modules/syntax';\nimport Toolbar from './modules/toolbar';\n\nimport Icons from './ui/icons';\nimport Picker from './ui/picker';\nimport ColorPicker from './ui/color-picker';\nimport IconPicker from './ui/icon-picker';\nimport Tooltip from './ui/tooltip';\n\nimport BubbleTheme from './themes/bubble';\nimport SnowTheme from './themes/snow';\n\n\nQuill.register({\n 'attributors/attribute/direction': DirectionAttribute,\n\n 'attributors/class/align': AlignClass,\n 'attributors/class/background': BackgroundClass,\n 'attributors/class/color': ColorClass,\n 'attributors/class/direction': DirectionClass,\n 'attributors/class/font': FontClass,\n 'attributors/class/size': SizeClass,\n\n 'attributors/style/align': AlignStyle,\n 'attributors/style/background': BackgroundStyle,\n 'attributors/style/color': ColorStyle,\n 'attributors/style/direction': DirectionStyle,\n 'attributors/style/font': FontStyle,\n 'attributors/style/size': SizeStyle\n}, true);\n\n\nQuill.register({\n 'formats/align': AlignClass,\n 'formats/direction': DirectionClass,\n 'formats/indent': Indent,\n\n 'formats/background': BackgroundStyle,\n 'formats/color': ColorStyle,\n 'formats/font': FontClass,\n 'formats/size': SizeClass,\n\n 'formats/blockquote': Blockquote,\n 'formats/code-block': CodeBlock,\n 'formats/header': Header,\n 'formats/list': List,\n\n 'formats/bold': Bold,\n 'formats/code': InlineCode,\n 'formats/italic': Italic,\n 'formats/link': Link,\n 'formats/script': Script,\n 'formats/strike': Strike,\n 'formats/underline': Underline,\n\n 'formats/image': Image,\n 'formats/video': Video,\n\n 'formats/list/item': ListItem,\n\n 'modules/formula': Formula,\n 'modules/syntax': Syntax,\n 'modules/toolbar': Toolbar,\n\n 'themes/bubble': BubbleTheme,\n 'themes/snow': SnowTheme,\n\n 'ui/icons': Icons,\n 'ui/picker': Picker,\n 'ui/icon-picker': IconPicker,\n 'ui/color-picker': ColorPicker,\n 'ui/tooltip': Tooltip\n}, true);\n\n\nmodule.exports = Quill;\n\n\n\n// WEBPACK FOOTER //\n// ./quill.js","var 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//////////////////\n// WEBPACK FOOTER\n// ./~/deep-equal/lib/is_arguments.js\n// module id = 67\n// module chunks = 0","exports = 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//////////////////\n// WEBPACK FOOTER\n// ./~/deep-equal/lib/keys.js\n// module id = 68\n// module chunks = 0","'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//////////////////\n// WEBPACK FOOTER\n// ./~/eventemitter3/index.js\n// module id = 69\n// module chunks = 0","/**\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//////////////////\n// WEBPACK FOOTER\n// ./~/fast-diff/diff.js\n// module id = 70\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-center.svg\n// module id = 71\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-justify.svg\n// module id = 72\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-left.svg\n// module id = 73\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-right.svg\n// module id = 74\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/background.svg\n// module id = 75\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/blockquote.svg\n// module id = 76\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/bold.svg\n// module id = 77\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/clean.svg\n// module id = 78\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/color.svg\n// module id = 79\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-ltr.svg\n// module id = 80\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-rtl.svg\n// module id = 81\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/dropdown.svg\n// module id = 82\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-center.svg\n// module id = 83\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-full.svg\n// module id = 84\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-left.svg\n// module id = 85\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-right.svg\n// module id = 86\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/formula.svg\n// module id = 87\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header-2.svg\n// module id = 88\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header.svg\n// module id = 89\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/image.svg\n// module id = 90\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/indent.svg\n// module id = 91\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/italic.svg\n// module id = 92\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/link.svg\n// module id = 93\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-bullet.svg\n// module id = 94\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-check.svg\n// module id = 95\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-ordered.svg\n// module id = 96\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/outdent.svg\n// module id = 97\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/strike.svg\n// module id = 98\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/subscript.svg\n// module id = 99\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/superscript.svg\n// module id = 100\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/underline.svg\n// module id = 101\n// module chunks = 0","module.exports = \" \";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/video.svg\n// module id = 102\n// module chunks = 0","\"use strict\";\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 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/block.ts\n// module id = 103\n// module chunks = 0","\"use strict\";\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 = require(\"./abstract/leaf\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/embed.ts\n// module id = 104\n// module chunks = 0","\"use strict\";\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 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/inline.ts\n// module id = 105\n// module chunks = 0","\"use strict\";\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 = require(\"./abstract/container\");\nvar Registry = require(\"../registry\");\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/scroll.ts\n// module id = 106\n// module chunks = 0","\"use strict\";\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 = require(\"./abstract/leaf\");\nvar Registry = require(\"../registry\");\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 var text = domNode.data;\n if (text[\"normalize\"])\n text = text[\"normalize\"]();\n return text;\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/text.ts\n// module id = 107\n// module chunks = 0","\"use strict\";\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//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/collection/linked-list.ts\n// module id = 108\n// module chunks = 0"],"sourceRoot":""}