{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap 3a3539e11e46c589ea60","webpack:///./~/parchment/src/parchment.ts","webpack:///./~/parchment/src/registry.ts","webpack:///./blots/block.js","webpack:///./~/extend/index.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","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","_interopRequireDefault","obj","_classCallCheck","instance","Constructor","TypeError","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","writable","bubbleFormats","formats","undefined","_extend2","parent","statics","BlockEmbed","_createClass","defineProperties","target","props","descriptor","key","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","clone","defaultChild","allowedChildren","hasOwn","toStr","toString","arr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","extend","options","src","copy","copyIsArray","deep","_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","curFormats","prevFormats","_op2","test","prefix","_quill2","handleDelete","suffix","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","empty","listen","evt","which","keyCode","defaultPrevented","_quill$getLine","_quill$getLine2","_quill$getLeaf","getLeaf","_quill$getLeaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","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","computeStyle","nodeType","ELEMENT_NODE","getComputedStyle","deltaEndsWith","endText","traverse","elementMatchers","textMatchers","TEXT_NODE","matcher","childNode","childrenDelta","DOM_KEY","matchAlias","matchAttributor","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","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.3\n * https://quilljs.com/\n * Copyright (c) 2014, Jason Chen\n * Copyright (c) 2013, salesforce.com\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"Quill\"] = factory();\n\telse\n\t\troot[\"Quill\"] = factory();\n})(this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId])\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// identity function for calling harmony imports with the correct context\n/******/ \t__webpack_require__.i = function(value) { return value; };\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 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 : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n }\n else if (query instanceof Text) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\nvar _createClass = function () { function defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _get = function get(object, property, receiver) { if (object === null) object = Function.prototype; var desc = Object.getOwnPropertyDescriptor(object, property); if (desc === undefined) { var parent = Object.getPrototypeOf(object); if (parent === null) { return undefined; } else { return get(parent, property, receiver); } } else if (\"value\" in desc) { return desc.value; } else { var getter = desc.get; if (getter === undefined) { return undefined; } return getter.call(receiver); } };\n\nvar _extend = __webpack_require__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nvar _quillDelta = __webpack_require__(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/* 3 */\n/***/ (function(module, exports) {\n\n'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) {/**/}\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0],\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\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__(3);\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.3\";\n\nQuill.imports = {\n 'delta': _quillDelta2.default,\n 'parchment': _parchment2.default,\n 'core/module': _module2.default,\n 'core/theme': _theme2.default\n};\n\nfunction expandConfig(container, userConfig) {\n userConfig = (0, _extend2.default)(true, {\n container: container,\n modules: {\n clipboard: true,\n keyboard: true,\n history: true\n }\n }, userConfig);\n if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n userConfig.theme = _theme2.default;\n } else {\n userConfig.theme = Quill.import('themes/' + userConfig.theme);\n if (userConfig.theme == null) {\n throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n }\n }\n var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n [themeConfig, userConfig].forEach(function (config) {\n config.modules = config.modules || {};\n Object.keys(config.modules).forEach(function (module) {\n if (config.modules[module] === true) {\n config.modules[module] = {};\n }\n });\n });\n var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n var moduleConfig = moduleNames.reduce(function (config, name) {\n var moduleClass = Quill.import('modules/' + name);\n if (moduleClass == null) {\n debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n } else {\n config[name] = moduleClass.DEFAULTS || {};\n }\n return config;\n }, {});\n // Special case toolbar shorthand\n if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n userConfig.modules.toolbar = {\n container: userConfig.modules.toolbar\n };\n }\n userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n if (userConfig.modules[name]) {\n config[name] = userConfig.modules[name];\n }\n return config;\n }, {});\n return userConfig;\n}\n\n// Handle selection preservation and TEXT_CHANGE emission\n// common to modification APIs\nfunction modify(modifier, source, index, shift) {\n if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n return new _quillDelta2.default();\n }\n var range = index == null ? null : this.getSelection();\n var oldDelta = this.editor.delta;\n var change = modifier();\n if (range != null) {\n if (index === true) index = range.index;\n if (shift == null) {\n range = shiftRange(range, change, source);\n } else if (shift !== 0) {\n range = shiftRange(range, index, shift, source);\n }\n this.setSelection(range, _emitter4.default.sources.SILENT);\n }\n if (change.length() > 0) {\n var _emitter;\n\n var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n if (source !== _emitter4.default.sources.SILENT) {\n var _emitter2;\n\n (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n }\n }\n return change;\n}\n\nfunction overload(index, length, name, value, source) {\n var formats = {};\n if (typeof index.index === 'number' && typeof index.length === 'number') {\n // Allow for throwaway end (used by insertText/insertEmbed)\n if (typeof length !== 'number') {\n source = value, value = name, name = length, length = index.length, index = index.index;\n } else {\n length = index.length, index = index.index;\n }\n } else if (typeof length !== 'number') {\n source = value, value = name, name = length, length = 0;\n }\n // Handle format being object, two format name/value strings or excluded\n if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n formats = name;\n source = value;\n } else if (typeof name === 'string') {\n if (value != null) {\n formats[name] = value;\n } else {\n source = name;\n }\n }\n // Handle optional source\n source = source || _emitter4.default.sources.API;\n return [index, length, formats, source];\n}\n\nfunction shiftRange(range, index, length, source) {\n if (range == null) return null;\n var start = void 0,\n end = void 0;\n if (index instanceof _quillDelta2.default) {\n var _map = [range.index, range.index + range.length].map(function (pos) {\n return index.transformPosition(pos, source === _emitter4.default.sources.USER);\n });\n\n var _map2 = _slicedToArray(_map, 2);\n\n start = _map2[0];\n end = _map2[1];\n } else {\n var _map3 = [range.index, range.index + range.length].map(function (pos) {\n if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;\n if (length >= 0) {\n return pos + length;\n } else {\n return Math.max(index, pos + length);\n }\n });\n\n var _map4 = _slicedToArray(_map3, 2);\n\n start = _map4[0];\n end = _map4[1];\n }\n return new _selection.Range(start, end - start);\n}\n\nexports.expandConfig = expandConfig;\nexports.overload = overload;\nexports.default = Quill;\n\n/***/ }),\n/* 9 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar diff = __webpack_require__(70);\nvar equal = __webpack_require__(12);\nvar extend = __webpack_require__(3);\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__(2);\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__(2);\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 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__(3);\n\n\nvar lib = {\n attributes: {\n compose: function (a, b, keepNull) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = extend(true, {}, b);\n if (!keepNull) {\n attributes = Object.keys(attributes).reduce(function (copy, key) {\n if (attributes[key] != null) {\n copy[key] = attributes[key];\n }\n return copy;\n }, {});\n }\n for (var key in a) {\n if (a[key] !== undefined && b[key] === undefined) {\n attributes[key] = a[key];\n }\n }\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n diff: function(a, b) {\n if (typeof a !== 'object') a = {};\n if (typeof b !== 'object') b = {};\n var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n if (!equal(a[key], b[key])) {\n attributes[key] = b[key] === undefined ? null : b[key];\n }\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n },\n\n transform: function (a, b, priority) {\n if (typeof a !== 'object') return b;\n if (typeof b !== 'object') return undefined;\n if (!priority) return b; // b simply overwrites us without priority\n var attributes = Object.keys(b).reduce(function (attributes, key) {\n if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n return attributes;\n }, {});\n return Object.keys(attributes).length > 0 ? attributes : undefined;\n }\n },\n\n iterator: function (ops) {\n return new Iterator(ops);\n },\n\n length: function (op) {\n if (typeof op['delete'] === 'number') {\n return op['delete'];\n } else if (typeof op.retain === 'number') {\n return op.retain;\n } else {\n return typeof op.insert === 'string' ? op.insert.length : 1;\n }\n }\n};\n\n\nfunction Iterator(ops) {\n this.ops = ops;\n this.index = 0;\n this.offset = 0;\n};\n\nIterator.prototype.hasNext = function () {\n return this.peekLength() < Infinity;\n};\n\nIterator.prototype.next = function (length) {\n if (!length) length = Infinity;\n var nextOp = this.ops[this.index];\n if (nextOp) {\n var offset = this.offset;\n var opLength = lib.length(nextOp)\n if (length >= opLength - offset) {\n length = opLength - offset;\n this.index += 1;\n this.offset = 0;\n } else {\n this.offset += length;\n }\n if (typeof nextOp['delete'] === 'number') {\n return { 'delete': length };\n } else {\n var retOp = {};\n if (nextOp.attributes) {\n retOp.attributes = nextOp.attributes;\n }\n if (typeof nextOp.retain === 'number') {\n retOp.retain = length;\n } else if (typeof nextOp.insert === 'string') {\n retOp.insert = nextOp.insert.substr(offset, length);\n } else {\n // offset should === 0, length should === 1\n retOp.insert = nextOp.insert;\n }\n return retOp;\n }\n } else {\n return { retain: Infinity };\n }\n};\n\nIterator.prototype.peek = function () {\n return this.ops[this.index];\n};\n\nIterator.prototype.peekLength = function () {\n if (this.ops[this.index]) {\n // Should never return 0 if our index is being managed correctly\n return lib.length(this.ops[this.index]) - this.offset;\n } else {\n return Infinity;\n }\n};\n\nIterator.prototype.peekType = function () {\n if (this.ops[this.index]) {\n if (typeof this.ops[this.index]['delete'] === 'number') {\n return 'delete';\n } else if (typeof this.ops[this.index].retain === 'number') {\n return 'retain';\n } else {\n return 'insert';\n }\n }\n return 'retain';\n};\n\n\nmodule.exports = lib;\n\n\n/***/ }),\n/* 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__(3);\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 }, { ctrlKey: true }, function() {});\n // this.addBinding({ key: Keyboard.keys.DELETE }, { ctrlKey: true }, function() {});\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { empty: true, shortKey: true }, handleBackspace);\n _this.listen();\n return _this;\n }\n\n _createClass(Keyboard, [{\n key: 'addBinding',\n value: function addBinding(key) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n var binding = normalize(key);\n if (binding == null || binding.key == null) {\n return debug.warn('Attempted to add invalid keyboard binding', binding);\n }\n if (typeof context === 'function') {\n context = { handler: context };\n }\n if (typeof handler === 'function') {\n handler = { handler: handler };\n }\n binding = (0, _extend2.default)(binding, context, handler);\n this.bindings[binding.key] = this.bindings[binding.key] || [];\n this.bindings[binding.key].push(binding);\n }\n }, {\n key: 'listen',\n value: function listen() {\n var _this2 = this;\n\n this.quill.root.addEventListener('keydown', function (evt) {\n if (evt.defaultPrevented) return;\n var which = evt.which || evt.keyCode;\n var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n return Keyboard.match(evt, binding);\n });\n if (bindings.length === 0) return;\n var range = _this2.quill.getSelection();\n if (range == null || !_this2.quill.hasFocus()) return;\n\n var _quill$getLine = _this2.quill.getLine(range.index),\n _quill$getLine2 = _slicedToArray(_quill$getLine, 2),\n line = _quill$getLine2[0],\n offset = _quill$getLine2[1];\n\n var _quill$getLeaf = _this2.quill.getLeaf(range.index),\n _quill$getLeaf2 = _slicedToArray(_quill$getLeaf, 2),\n leafStart = _quill$getLeaf2[0],\n offsetStart = _quill$getLeaf2[1];\n\n var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.getLeaf(range.index + range.length),\n _ref2 = _slicedToArray(_ref, 2),\n leafEnd = _ref2[0],\n offsetEnd = _ref2[1];\n\n var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n var curContext = {\n collapsed: range.length === 0,\n empty: range.length === 0 && line.length() <= 1,\n format: _this2.quill.getFormat(range),\n offset: offset,\n prefix: prefixText,\n suffix: suffixText\n };\n var prevented = bindings.some(function (binding) {\n if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n if (binding.empty != null && binding.empty !== curContext.empty) return false;\n if (binding.offset != null && binding.offset !== curContext.offset) return false;\n if (Array.isArray(binding.format)) {\n // any format is present\n if (binding.format.every(function (name) {\n return curContext.format[name] == null;\n })) {\n return false;\n }\n } else if (_typeof(binding.format) === 'object') {\n // all formats must match\n if (!Object.keys(binding.format).every(function (name) {\n if (binding.format[name] === true) return curContext.format[name] != null;\n if (binding.format[name] === false) return curContext.format[name] == null;\n return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n })) {\n return false;\n }\n }\n if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n return binding.handler.call(_this2, range, curContext) !== true;\n });\n if (prevented) {\n evt.preventDefault();\n }\n });\n }\n }]);\n\n return Keyboard;\n}(_module2.default);\n\nKeyboard.keys = {\n BACKSPACE: 8,\n TAB: 9,\n ENTER: 13,\n ESCAPE: 27,\n LEFT: 37,\n UP: 38,\n RIGHT: 39,\n DOWN: 40,\n DELETE: 46\n};\n\nKeyboard.DEFAULTS = {\n bindings: {\n 'bold': makeFormatHandler('bold'),\n 'italic': makeFormatHandler('italic'),\n 'underline': makeFormatHandler('underline'),\n 'indent': {\n // highlight tab or tab at beginning of list, indent or blockquote\n key: Keyboard.keys.TAB,\n format: ['blockquote', 'indent', 'list'],\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '+1', _quill2.default.sources.USER);\n }\n },\n 'outdent': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n format: ['blockquote', 'indent', 'list'],\n // highlight tab or tab at beginning of list, indent or blockquote\n handler: function handler(range, context) {\n if (context.collapsed && context.offset !== 0) return true;\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n }\n },\n 'outdent backspace': {\n key: Keyboard.keys.BACKSPACE,\n collapsed: true,\n format: ['blockquote', 'indent', 'list'],\n offset: 0,\n handler: function handler(range, context) {\n if (context.format.indent != null) {\n this.quill.format('indent', '-1', _quill2.default.sources.USER);\n } else if (context.format.blockquote != null) {\n this.quill.format('blockquote', false, _quill2.default.sources.USER);\n } else if (context.format.list != null) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n }\n }\n },\n 'indent code-block': makeCodeBlockHandler(true),\n 'outdent code-block': makeCodeBlockHandler(false),\n 'remove tab': {\n key: Keyboard.keys.TAB,\n shiftKey: true,\n collapsed: true,\n prefix: /\\t$/,\n handler: function handler(range) {\n this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n }\n },\n 'tab': {\n key: Keyboard.keys.TAB,\n handler: function handler(range, context) {\n if (!context.collapsed) {\n this.quill.scroll.deleteAt(range.index, range.length);\n }\n this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n }\n },\n 'list empty enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['list'],\n empty: true,\n handler: function handler(range, context) {\n this.quill.format('list', false, _quill2.default.sources.USER);\n if (context.format.indent) {\n this.quill.format('indent', false, _quill2.default.sources.USER);\n }\n }\n },\n 'checklist enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: { list: 'checked' },\n handler: function handler(range) {\n this.quill.scroll.insertAt(range.index, '\\n');\n\n var _quill$getLine3 = this.quill.getLine(range.index + 1),\n _quill$getLine4 = _slicedToArray(_quill$getLine3, 1),\n line = _quill$getLine4[0];\n\n line.format('list', 'unchecked');\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n }\n },\n 'header enter': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['header'],\n suffix: /^$/,\n handler: function handler(range) {\n this.quill.scroll.insertAt(range.index, '\\n');\n this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n }\n },\n 'list autofill': {\n key: ' ',\n collapsed: true,\n format: { list: false },\n prefix: /^\\s*?(1\\.|-|\\[ \\]|\\[x\\])$/,\n handler: function handler(range, context) {\n if (this.quill.scroll.whitelist != null && !this.quill.scroll.whitelist['list']) return true;\n var length = context.prefix.length;\n var value = void 0;\n switch (context.prefix.trim()) {\n case '[ ]':\n value = 'unchecked';\n break;\n case '[x]':\n value = 'checked';\n break;\n case '-':\n value = 'bullet';\n break;\n default:\n value = 'ordered';\n }\n this.quill.scroll.deleteAt(range.index - length, length);\n this.quill.formatLine(range.index - length, 1, 'list', value, _quill2.default.sources.USER);\n this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n }\n },\n 'code exit': {\n key: Keyboard.keys.ENTER,\n collapsed: true,\n format: ['code-block'],\n prefix: /\\n\\n$/,\n suffix: /^\\s+$/,\n handler: function handler(range) {\n this.quill.format('code-block', false, _quill2.default.sources.USER);\n this.quill.deleteText(range.index - 2, 1, _quill2.default.sources.USER);\n }\n }\n }\n};\n\nfunction handleBackspace(range, context) {\n if (range.index === 0 || this.quill.getLength() <= 1) return;\n\n var _quill$getLine5 = this.quill.getLine(range.index),\n _quill$getLine6 = _slicedToArray(_quill$getLine5, 1),\n line = _quill$getLine6[0];\n\n var formats = {};\n if (context.offset === 0) {\n var curFormats = line.formats();\n var prevFormats = this.quill.getFormat(range.index - 1, 1);\n formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n }\n // Check for astral symbols\n var length = /[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]$/.test(context.prefix) ? 2 : 1;\n this.quill.deleteText(range.index - length, length, _quill2.default.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index - length, length, formats, _quill2.default.sources.USER);\n }\n this.quill.selection.scrollIntoView();\n}\n\nfunction handleDelete(range, context) {\n // Check for astral symbols\n var length = /^[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]/.test(context.suffix) ? 2 : 1;\n if (range.index >= this.quill.getLength() - length) return;\n this.quill.deleteText(range.index, length, _quill2.default.sources.USER);\n}\n\nfunction handleDeleteRange(range) {\n this.quill.deleteText(range, _quill2.default.sources.USER);\n this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n}\n\nfunction handleEnter(range, context) {\n var _this3 = this;\n\n if (range.length > 0) {\n this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n }\n var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n lineFormats[format] = context.format[format];\n }\n return lineFormats;\n }, {});\n this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n // Earlier scroll.deleteAt might have messed up our selection,\n // so insertText's built in selection preservation is not reliable\n this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n this.quill.selection.scrollIntoView();\n Object.keys(context.format).forEach(function (name) {\n if (lineFormats[name] != null) return;\n if (Array.isArray(context.format[name])) return;\n if (name === 'link') return;\n _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n });\n}\n\nfunction makeCodeBlockHandler(indent) {\n return {\n key: Keyboard.keys.TAB,\n shiftKey: !indent,\n format: { 'code-block': true },\n handler: function handler(range) {\n var CodeBlock = _parchment2.default.query('code-block');\n var index = range.index,\n length = range.length;\n\n var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n block = _quill$scroll$descend2[0],\n offset = _quill$scroll$descend2[1];\n\n if (block == null) return;\n var scrollIndex = this.quill.getIndex(block);\n var start = block.newlineIndex(offset, true) + 1;\n var end = block.newlineIndex(scrollIndex + offset + length);\n var lines = block.domNode.textContent.slice(start, end).split('\\n');\n offset = 0;\n lines.forEach(function (line, i) {\n if (indent) {\n block.insertAt(start + offset, CodeBlock.TAB);\n offset += CodeBlock.TAB.length;\n if (i === 0) {\n index += CodeBlock.TAB.length;\n } else {\n length += CodeBlock.TAB.length;\n }\n } else if (line.startsWith(CodeBlock.TAB)) {\n block.deleteAt(start + offset, CodeBlock.TAB.length);\n offset -= CodeBlock.TAB.length;\n if (i === 0) {\n index -= CodeBlock.TAB.length;\n } else {\n length -= CodeBlock.TAB.length;\n }\n }\n offset += line.length + 1;\n });\n this.quill.update(_quill2.default.sources.USER);\n this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n }\n };\n}\n\nfunction makeFormatHandler(format) {\n return {\n key: format[0].toUpperCase(),\n shortKey: true,\n handler: function handler(range, context) {\n this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n }\n };\n}\n\nfunction normalize(binding) {\n if (typeof binding === 'string' || typeof binding === 'number') {\n return normalize({ key: binding });\n }\n if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n binding = (0, _clone2.default)(binding, false);\n }\n if (typeof binding.key === 'string') {\n if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n binding.key = Keyboard.keys[binding.key.toUpperCase()];\n } else if (binding.key.length === 1) {\n binding.key = binding.key.toUpperCase().charCodeAt(0);\n } else {\n return null;\n }\n }\n if (binding.shortKey) {\n binding[SHORTKEY] = binding.shortKey;\n delete binding.shortKey;\n }\n return binding;\n}\n\nexports.default = Keyboard;\nexports.SHORTKEY = SHORTKEY;\n\n/***/ }),\n/* 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__(3);\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, image/svg+xml');\n fileInput.classList.add('ql-image');\n fileInput.addEventListener('change', function () {\n if (fileInput.files != null && fileInput.files[0] != null) {\n var reader = new FileReader();\n reader.onload = function (e) {\n var range = _this3.quill.getSelection(true);\n _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n fileInput.value = \"\";\n };\n reader.readAsDataURL(fileInput.files[0]);\n }\n });\n this.container.appendChild(fileInput);\n }\n fileInput.click();\n },\n video: function video() {\n this.quill.theme.tooltip.edit('video');\n }\n }\n }\n }\n});\n\nvar BaseTooltip = function (_Tooltip) {\n _inherits(BaseTooltip, _Tooltip);\n\n function BaseTooltip(quill, boundsContainer) {\n _classCallCheck(this, BaseTooltip);\n\n var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\n _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n _this4.listen();\n return _this4;\n }\n\n _createClass(BaseTooltip, [{\n key: 'listen',\n value: function listen() {\n var _this5 = this;\n\n this.textbox.addEventListener('keydown', function (event) {\n if (_keyboard2.default.match(event, 'enter')) {\n _this5.save();\n event.preventDefault();\n } else if (_keyboard2.default.match(event, 'escape')) {\n _this5.cancel();\n event.preventDefault();\n }\n });\n }\n }, {\n key: 'cancel',\n value: function cancel() {\n this.hide();\n }\n }, {\n key: 'edit',\n value: function edit() {\n var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n this.root.classList.remove('ql-hidden');\n this.root.classList.add('ql-editing');\n if (preview != null) {\n this.textbox.value = preview;\n } else if (mode !== this.root.getAttribute('data-mode')) {\n this.textbox.value = '';\n }\n this.position(this.quill.getBounds(this.quill.selection.savedRange));\n this.textbox.select();\n this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n this.root.setAttribute('data-mode', mode);\n }\n }, {\n key: 'restoreFocus',\n value: function restoreFocus() {\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.quill.focus();\n this.quill.scrollingContainer.scrollTop = scrollTop;\n }\n }, {\n key: 'save',\n value: function save() {\n var value = this.textbox.value;\n switch (this.root.getAttribute('data-mode')) {\n case 'link':\n {\n var scrollTop = this.quill.root.scrollTop;\n if (this.linkRange) {\n this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n delete this.linkRange;\n } else {\n this.restoreFocus();\n this.quill.format('link', value, _emitter2.default.sources.USER);\n }\n this.quill.root.scrollTop = scrollTop;\n break;\n }\n case 'video':\n {\n var match = value.match(/^(https?):\\/\\/(www\\.)?youtube\\.com\\/watch.*v=([a-zA-Z0-9_-]+)/) || value.match(/^(https?):\\/\\/(www\\.)?youtu\\.be\\/([a-zA-Z0-9_-]+)/);\n if (match) {\n value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n // eslint-disable-line no-cond-assign\n value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n }\n } // eslint-disable-next-line no-fallthrough\n case 'formula':\n {\n if (!value) break;\n var range = this.quill.getSelection(true);\n var index = range.index + range.length;\n if (range != null) {\n this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n if (this.root.getAttribute('data-mode') === 'formula') {\n this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n }\n this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n }\n break;\n }\n default:\n }\n this.textbox.value = '';\n this.hide();\n }\n }]);\n\n return BaseTooltip;\n}(_tooltip2.default);\n\nfunction fillSelect(select, values) {\n var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\n values.forEach(function (value) {\n var option = document.createElement('option');\n if (value === defaultValue) {\n option.setAttribute('selected', 'selected');\n } else {\n option.setAttribute('value', value);\n }\n select.appendChild(option);\n });\n}\n\nexports.BaseTooltip = BaseTooltip;\nexports.default = BaseTheme;\n\n/***/ }),\n/* 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__(2);\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__(2);\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__(2);\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__(2);\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__(2);\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__(3);\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__(3);\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__(2);\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__(2);\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__(3);\n\nvar _extend2 = _interopRequireDefault(_extend);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar Editor = function () {\n function Editor(scroll) {\n _classCallCheck(this, Editor);\n\n this.scroll = scroll;\n this.delta = this.getDelta();\n }\n\n _createClass(Editor, [{\n key: 'applyDelta',\n value: function applyDelta(delta) {\n var _this = this;\n\n var consumeNextNewline = false;\n this.scroll.update();\n var scrollLength = this.scroll.length();\n this.scroll.batch = true;\n delta = normalizeDelta(delta);\n delta.reduce(function (index, op) {\n var length = op.retain || op.delete || op.insert.length || 1;\n var attributes = op.attributes || {};\n if (op.insert != null) {\n if (typeof op.insert === 'string') {\n var text = op.insert;\n if (text.endsWith('\\n') && consumeNextNewline) {\n consumeNextNewline = false;\n text = text.slice(0, -1);\n }\n if (index >= scrollLength && !text.endsWith('\\n')) {\n consumeNextNewline = true;\n }\n _this.scroll.insertAt(index, text);\n\n var _scroll$line = _this.scroll.line(index),\n _scroll$line2 = _slicedToArray(_scroll$line, 2),\n line = _scroll$line2[0],\n offset = _scroll$line2[1];\n\n var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n if (line instanceof _block2.default) {\n var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n _line$descendant2 = _slicedToArray(_line$descendant, 1),\n leaf = _line$descendant2[0];\n\n formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n }\n attributes = _op2.default.attributes.diff(formats, attributes) || {};\n } else if (_typeof(op.insert) === 'object') {\n var key = Object.keys(op.insert)[0]; // There should only be one key\n if (key == null) return index;\n _this.scroll.insertAt(index, key, op.insert[key]);\n }\n scrollLength += length;\n }\n Object.keys(attributes).forEach(function (name) {\n _this.scroll.formatAt(index, length, name, attributes[name]);\n });\n return index + length;\n }, 0);\n delta.reduce(function (index, op) {\n if (typeof op.delete === 'number') {\n _this.scroll.deleteAt(index, op.delete);\n return index;\n }\n return index + (op.retain || op.insert.length || 1);\n }, 0);\n this.scroll.batch = false;\n this.scroll.optimize();\n return this.update(delta);\n }\n }, {\n key: 'deleteText',\n value: function deleteText(index, length) {\n this.scroll.deleteAt(index, length);\n return this.update(new _quillDelta2.default().retain(index).delete(length));\n }\n }, {\n key: 'formatLine',\n value: function formatLine(index, length) {\n var _this2 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n this.scroll.update();\n Object.keys(formats).forEach(function (format) {\n if (_this2.scroll.whitelist != null && !_this2.scroll.whitelist[format]) return;\n var lines = _this2.scroll.lines(index, Math.max(length, 1));\n var lengthRemaining = length;\n lines.forEach(function (line) {\n var lineLength = line.length();\n if (!(line instanceof _code2.default)) {\n line.format(format, formats[format]);\n } else {\n var codeIndex = index - line.offset(_this2.scroll);\n var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n line.formatAt(codeIndex, codeLength, format, formats[format]);\n }\n lengthRemaining -= lineLength;\n });\n });\n this.scroll.optimize();\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'formatText',\n value: function formatText(index, length) {\n var _this3 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n Object.keys(formats).forEach(function (format) {\n _this3.scroll.formatAt(index, length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'getContents',\n value: function getContents(index, length) {\n return this.delta.slice(index, index + length);\n }\n }, {\n key: 'getDelta',\n value: function getDelta() {\n return this.scroll.lines().reduce(function (delta, line) {\n return delta.concat(line.delta());\n }, new _quillDelta2.default());\n }\n }, {\n key: 'getFormat',\n value: function getFormat(index) {\n var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\n var lines = [],\n leaves = [];\n if (length === 0) {\n this.scroll.path(index).forEach(function (path) {\n var _path = _slicedToArray(path, 1),\n blot = _path[0];\n\n if (blot instanceof _block2.default) {\n lines.push(blot);\n } else if (blot instanceof _parchment2.default.Leaf) {\n leaves.push(blot);\n }\n });\n } else {\n lines = this.scroll.lines(index, length);\n leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n }\n var formatsArr = [lines, leaves].map(function (blots) {\n if (blots.length === 0) return {};\n var formats = (0, _block.bubbleFormats)(blots.shift());\n while (Object.keys(formats).length > 0) {\n var blot = blots.shift();\n if (blot == null) return formats;\n formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n }\n return formats;\n });\n return _extend2.default.apply(_extend2.default, formatsArr);\n }\n }, {\n key: 'getText',\n value: function getText(index, length) {\n return this.getContents(index, length).filter(function (op) {\n return typeof op.insert === 'string';\n }).map(function (op) {\n return op.insert;\n }).join('');\n }\n }, {\n key: 'insertEmbed',\n value: function insertEmbed(index, embed, value) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n }\n }, {\n key: 'insertText',\n value: function insertText(index, text) {\n var _this4 = this;\n\n var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\n text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n this.scroll.insertAt(index, text);\n Object.keys(formats).forEach(function (format) {\n _this4.scroll.formatAt(index, text.length, format, formats[format]);\n });\n return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n }\n }, {\n key: 'isBlank',\n value: function isBlank() {\n if (this.scroll.children.length == 0) return true;\n if (this.scroll.children.length > 1) return false;\n var child = this.scroll.children.head;\n return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n }\n }, {\n key: 'removeFormat',\n value: function removeFormat(index, length) {\n var text = this.getText(index, length);\n\n var _scroll$line3 = this.scroll.line(index + length),\n _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n line = _scroll$line4[0],\n offset = _scroll$line4[1];\n\n var suffixLength = 0,\n suffix = new _quillDelta2.default();\n if (line != null) {\n if (!(line instanceof _code2.default)) {\n suffixLength = line.length() - offset;\n } else {\n suffixLength = line.newlineIndex(offset) - offset + 1;\n }\n suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n }\n var contents = this.getContents(index, length + suffixLength);\n var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n var delta = new _quillDelta2.default().retain(index).concat(diff);\n return this.applyDelta(delta);\n }\n }, {\n key: 'update',\n value: function update(change) {\n var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\n var oldDelta = this.delta;\n if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n // Optimization for character changes\n var textBlot = _parchment2.default.find(mutations[0].target);\n var formats = (0, _block.bubbleFormats)(textBlot);\n var index = textBlot.offset(this.scroll);\n var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n var oldText = new _quillDelta2.default().insert(oldValue);\n var newText = new _quillDelta2.default().insert(textBlot.value());\n var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n change = diffDelta.reduce(function (delta, op) {\n if (op.insert) {\n return delta.insert(op.insert, formats);\n } else {\n return delta.push(op);\n }\n }, new _quillDelta2.default());\n this.delta = oldDelta.compose(change);\n } else {\n this.delta = this.getDelta();\n if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n change = oldDelta.diff(this.delta, cursorIndex);\n }\n }\n return change;\n }\n }]);\n\n return Editor;\n}();\n\nfunction combineFormats(formats, combined) {\n return Object.keys(combined).reduce(function (merged, name) {\n if (formats[name] == null) return merged;\n if (combined[name] === formats[name]) {\n merged[name] = combined[name];\n } else if (Array.isArray(combined[name])) {\n if (combined[name].indexOf(formats[name]) < 0) {\n merged[name] = combined[name].concat([formats[name]]);\n }\n } else {\n merged[name] = [combined[name], formats[name]];\n }\n return merged;\n }, {});\n}\n\nfunction normalizeDelta(delta) {\n return delta.reduce(function (delta, op) {\n if (op.insert === 1) {\n var attributes = (0, _clone2.default)(op.attributes);\n delete attributes['image'];\n return delta.insert({ image: op.attributes.image }, attributes);\n }\n if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n op = (0, _clone2.default)(op);\n if (op.attributes.list) {\n op.attributes.list = 'ordered';\n } else {\n op.attributes.list = 'bullet';\n delete op.attributes.bullet;\n }\n }\n if (typeof op.insert === 'string') {\n var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n return delta.insert(text, op.attributes);\n }\n return delta.push(op);\n }, new _quillDelta2.default());\n}\n\nexports.default = Editor;\n\n/***/ }),\n/* 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\n// Disable resizing in Firefox\ndocument.addEventListener(\"DOMContentLoaded\", function () {\n document.execCommand(\"enableObjectResizing\", 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 _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\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], ['br', matchBreak], [Node.ELEMENT_NODE, matchNewline], [Node.ELEMENT_NODE, matchBlot], [Node.ELEMENT_NODE, matchSpacing], [Node.ELEMENT_NODE, matchAttributor], [Node.ELEMENT_NODE, matchStyles], ['b', matchAlias.bind(matchAlias, 'bold')], ['i', matchAlias.bind(matchAlias, 'italic')], ['style', matchIgnore]];\n\nvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n memo[attr.keyName] = attr;\n return memo;\n}, {});\n\nvar Clipboard = function (_Module) {\n _inherits(Clipboard, _Module);\n\n function Clipboard(quill, options) {\n _classCallCheck(this, Clipboard);\n\n var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\n _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n _this.container = _this.quill.addContainer('ql-clipboard');\n _this.container.setAttribute('contenteditable', true);\n _this.container.setAttribute('tabindex', -1);\n _this.matchers = [];\n CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n _this.addMatcher.apply(_this, _toConsumableArray(pair));\n });\n return _this;\n }\n\n _createClass(Clipboard, [{\n key: 'addMatcher',\n value: function addMatcher(selector, matcher) {\n this.matchers.push([selector, matcher]);\n }\n }, {\n key: 'convert',\n value: function convert(html) {\n if (typeof html === 'string') {\n this.container.innerHTML = html;\n }\n\n var _prepareMatching = this.prepareMatching(),\n _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n elementMatchers = _prepareMatching2[0],\n textMatchers = _prepareMatching2[1];\n\n var delta = traverse(this.container, elementMatchers, textMatchers);\n // Remove trailing newline\n if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n }\n debug.log('convert', this.container.innerHTML, delta);\n this.container.innerHTML = '';\n return delta;\n }\n }, {\n key: 'dangerouslyPasteHTML',\n value: function dangerouslyPasteHTML(index, html) {\n var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\n if (typeof index === 'string') {\n return this.quill.setContents(this.convert(index), html);\n } else {\n var paste = this.convert(html);\n return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n }\n }\n }, {\n key: 'onPaste',\n value: function onPaste(e) {\n var _this2 = this;\n\n if (e.defaultPrevented || !this.quill.isEnabled()) return;\n var range = this.quill.getSelection();\n var delta = new _quillDelta2.default().retain(range.index);\n var scrollTop = this.quill.scrollingContainer.scrollTop;\n this.container.focus();\n setTimeout(function () {\n _this2.quill.selection.update(_quill2.default.sources.SILENT);\n delta = delta.concat(_this2.convert()).delete(range.length);\n _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n // range.length contributes to delta.length()\n _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n _this2.quill.scrollingContainer.scrollTop = scrollTop;\n _this2.quill.selection.scrollIntoView();\n }, 1);\n }\n }, {\n key: 'prepareMatching',\n value: function prepareMatching() {\n var _this3 = this;\n\n var elementMatchers = [],\n textMatchers = [];\n this.matchers.forEach(function (pair) {\n var _pair = _slicedToArray(pair, 2),\n selector = _pair[0],\n matcher = _pair[1];\n\n switch (selector) {\n case Node.TEXT_NODE:\n textMatchers.push(matcher);\n break;\n case Node.ELEMENT_NODE:\n elementMatchers.push(matcher);\n break;\n default:\n [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n // TODO use weakmap\n node[DOM_KEY] = node[DOM_KEY] || [];\n node[DOM_KEY].push(matcher);\n });\n break;\n }\n });\n return [elementMatchers, textMatchers];\n }\n }]);\n\n return Clipboard;\n}(_module2.default);\n\nClipboard.DEFAULTS = {\n matchers: []\n};\n\nfunction computeStyle(node) {\n if (node.nodeType !== Node.ELEMENT_NODE) return {};\n var DOM_KEY = '__ql-computed-style';\n return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n}\n\nfunction deltaEndsWith(delta, text) {\n var endText = \"\";\n for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n var op = delta.ops[i];\n if (typeof op.insert !== 'string') break;\n endText = op.insert + endText;\n }\n return endText.slice(-1 * text.length) === text;\n}\n\nfunction isLine(node) {\n if (node.childNodes.length === 0) return false; // Exclude embed blocks\n var style = computeStyle(node);\n return ['block', 'list-item'].indexOf(style.display) > -1;\n}\n\nfunction traverse(node, elementMatchers, textMatchers) {\n // Post-order\n if (node.nodeType === node.TEXT_NODE) {\n return textMatchers.reduce(function (delta, matcher) {\n return matcher(node, delta);\n }, new _quillDelta2.default());\n } else if (node.nodeType === node.ELEMENT_NODE) {\n return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n if (childNode.nodeType === node.ELEMENT_NODE) {\n childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n return matcher(childNode, childrenDelta);\n }, childrenDelta);\n }\n return delta.concat(childrenDelta);\n }, new _quillDelta2.default());\n } else {\n return new _quillDelta2.default();\n }\n}\n\nfunction matchAlias(format, node, delta) {\n return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n}\n\nfunction matchAttributor(node, delta) {\n var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n var classes = _parchment2.default.Attributor.Class.keys(node);\n var styles = _parchment2.default.Attributor.Style.keys(node);\n var formats = {};\n attributes.concat(classes).concat(styles).forEach(function (name) {\n var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n if (attr != null) {\n formats[attr.attrName] = attr.value(node);\n if (formats[attr.attrName]) return;\n }\n if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n attr = ATTRIBUTE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n if (STYLE_ATTRIBUTORS[name] != null) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node) || undefined;\n }\n });\n if (Object.keys(formats).length > 0) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n }\n return delta;\n}\n\nfunction matchBlot(node, delta) {\n var match = _parchment2.default.query(node);\n if (match == null) return delta;\n if (match.prototype instanceof _parchment2.default.Embed) {\n var embed = {};\n var value = match.value(node);\n if (value != null) {\n embed[match.blotName] = value;\n delta = new _quillDelta2.default().insert(embed, match.formats(node));\n }\n } else if (typeof match.formats === 'function') {\n var formats = _defineProperty({}, match.blotName, match.formats(node));\n delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new _quillDelta2.default();\n}\n\nfunction matchNewline(node, delta) {\n if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n delta.insert('\\n');\n }\n }\n return delta;\n}\n\nfunction matchStyles(node, delta) {\n var formats = {};\n var style = node.style || {};\n if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n formats.italic = true;\n }\n if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n }\n if (parseFloat(style.textIndent || 0) > 0) {\n // Could be 0.5in\n delta = new _quillDelta2.default().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n var text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n // eslint-disable-next-line func-style\n var replacer = function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n };\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n }\n if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n }\n }\n return delta.insert(text);\n}\n\nexports.default = Clipboard;\nexports.matchAttributor = matchAttributor;\nexports.matchBlot = matchBlot;\nexports.matchNewline = matchNewline;\nexports.matchSpacing = matchSpacing;\nexports.matchText = matchText;\n\n/***/ }),\n/* 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 return domNode.data;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function () {\n _super.prototype.optimize.call(this);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n return TextBlot;\n}(leaf_1.default));\nTextBlot.blotName = 'text';\nTextBlot.scope = Registry.Scope.INLINE_BLOT;\nexports.default = TextBlot;\n\n\n/***/ }),\n/* 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\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 3a3539e11e46c589ea60","\"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 : BlotClass.create(value);\n return new BlotClass(node, value);\n}\nexports.create = create;\nfunction find(node, bubble) {\n if (bubble === void 0) { bubble = false; }\n if (node == null)\n return null;\n if (node[exports.DATA_KEY] != null)\n return node[exports.DATA_KEY].blot;\n if (bubble)\n return find(node.parentNode, bubble);\n return null;\n}\nexports.find = find;\nfunction query(query, scope) {\n if (scope === void 0) { scope = Scope.ANY; }\n var match;\n if (typeof query === 'string') {\n match = types[query] || attributes[query];\n }\n else if (query instanceof Text) {\n match = types['text'];\n }\n else if (typeof query === 'number') {\n if (query & Scope.LEVEL & Scope.BLOCK) {\n match = types['block'];\n }\n else if (query & Scope.LEVEL & Scope.INLINE) {\n match = types['inline'];\n }\n }\n else if (query instanceof HTMLElement) {\n var names = (query.getAttribute('class') || '').split(/\\s+/);\n for (var i in names) {\n match = classes[names[i]];\n if (match)\n break;\n }\n match = match || tags[query.tagName];\n }\n if (match == null)\n return null;\n if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n return match;\n return null;\n}\nexports.query = query;\nfunction register() {\n var Definitions = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n Definitions[_i] = arguments[_i];\n }\n if (Definitions.length > 1) {\n return Definitions.map(function (d) {\n return register(d);\n });\n }\n var Definition = Definitions[0];\n if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n throw new ParchmentError('Invalid definition');\n }\n else if (Definition.blotName === 'abstract') {\n throw new ParchmentError('Cannot register abstract class');\n }\n types[Definition.blotName || Definition.attrName] = Definition;\n if (typeof Definition.keyName === 'string') {\n attributes[Definition.keyName] = Definition;\n }\n else {\n if (Definition.className != null) {\n classes[Definition.className] = Definition;\n }\n if (Definition.tagName != null) {\n if (Array.isArray(Definition.tagName)) {\n Definition.tagName = Definition.tagName.map(function (tagName) {\n return tagName.toUpperCase();\n });\n }\n else {\n Definition.tagName = Definition.tagName.toUpperCase();\n }\n var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n tagNames.forEach(function (tag) {\n if (tags[tag] == null || Definition.className == null) {\n tags[tag] = Definition;\n }\n });\n }\n }\n return Definition;\n}\nexports.register = register;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/registry.ts\n// module id = 1\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","'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 = 3\n// module chunks = 0","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 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 }, { ctrlKey: true }, function() {});\n // this.addBinding({ key: Keyboard.keys.DELETE }, { ctrlKey: true }, function() {});\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { empty: true, shortKey: true }, handleBackspace);\n this.listen();\n }\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 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 '[ ]':\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 curFormats = line.formats();\n let prevFormats = this.quill.getFormat(range.index-1, 1);\n formats = DeltaOp.attributes.diff(curFormats, prevFormats) || {};\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 this.quill.deleteText(range.index, length, Quill.sources.USER);\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, image/svg+xml');\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\n// Disable resizing in Firefox\ndocument.addEventListener(\"DOMContentLoaded\", function() {\n document.execCommand(\"enableObjectResizing\", false, false);\n});\n\n\n\n// WEBPACK FOOTER //\n// ./core/polyfill.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\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 ['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 ['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;\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 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 delta.compose(new Delta().retain(delta.length(), { [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 = delta.compose(new Delta().retain(delta.length(), 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 let formats = { [match.blotName]: match.formats(node) };\n delta = delta.compose(new Delta().retain(delta.length(), formats));\n }\n return delta;\n}\n\nfunction matchBreak(node, delta) {\n if (!deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchIgnore() {\n return new Delta();\n}\n\nfunction matchNewline(node, delta) {\n if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n delta.insert('\\n');\n }\n return delta;\n}\n\nfunction matchSpacing(node, delta) {\n if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n 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 = delta.compose(new Delta().retain(delta.length(), 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 (!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 return domNode.data;\n };\n TextBlot.prototype.deleteAt = function (index, length) {\n this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n };\n TextBlot.prototype.index = function (node, offset) {\n if (this.domNode === node) {\n return offset;\n }\n return -1;\n };\n TextBlot.prototype.insertAt = function (index, value, def) {\n if (def == null) {\n this.text = this.text.slice(0, index) + value + this.text.slice(index);\n this.domNode.data = this.text;\n }\n else {\n _super.prototype.insertAt.call(this, index, value, def);\n }\n };\n TextBlot.prototype.length = function () {\n return this.text.length;\n };\n TextBlot.prototype.optimize = function () {\n _super.prototype.optimize.call(this);\n this.text = this.statics.value(this.domNode);\n if (this.text.length === 0) {\n this.remove();\n }\n else if (this.next instanceof TextBlot && this.next.prev === this) {\n this.insertAt(this.length(), this.next.value());\n this.next.remove();\n }\n };\n TextBlot.prototype.position = function (index, inclusive) {\n if (inclusive === void 0) { inclusive = false; }\n return [this.domNode, index];\n };\n TextBlot.prototype.split = function (index, force) {\n if (force === void 0) { force = false; }\n if (!force) {\n if (index === 0)\n return this;\n if (index === this.length())\n return this.next;\n }\n var after = Registry.create(this.domNode.splitText(index));\n this.parent.insertBefore(after, this.next);\n this.text = this.statics.value(this.domNode);\n return after;\n };\n TextBlot.prototype.update = function (mutations) {\n var _this = this;\n if (mutations.some(function (mutation) {\n return mutation.type === 'characterData' && mutation.target === _this.domNode;\n })) {\n this.text = this.statics.value(this.domNode);\n }\n };\n TextBlot.prototype.value = function () {\n return this.text;\n };\n return TextBlot;\n}(leaf_1.default));\nTextBlot.blotName = 'text';\nTextBlot.scope = Registry.Scope.INLINE_BLOT;\nexports.default = TextBlot;\n\n\n\n//////////////////\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":""}