This repository has been archived by the owner on Apr 22, 2024. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 10
/
Copy pathquill.min.js.map
1 lines (1 loc) · 941 KB
/
quill.min.js.map
1
{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap 2e76604d056f0a20b2cd","webpack:///./quill.js","webpack:///./core.js","webpack:///./~/parchment/src/parchment.ts","webpack:///./~/parchment/src/blot/abstract/container.ts","webpack:///./~/parchment/src/collection/linked-list.ts","webpack:///./~/parchment/src/blot/abstract/shadow.ts","webpack:///./~/parchment/src/registry.ts","webpack:///./~/parchment/src/blot/abstract/format.ts","webpack:///./~/parchment/src/attributor/attributor.ts","webpack:///./~/parchment/src/attributor/store.ts","webpack:///./~/parchment/src/attributor/class.ts","webpack:///./~/parchment/src/attributor/style.ts","webpack:///./~/parchment/src/blot/abstract/leaf.ts","webpack:///./~/parchment/src/blot/scroll.ts","webpack:///./~/parchment/src/blot/inline.ts","webpack:///./~/parchment/src/blot/block.ts","webpack:///./~/parchment/src/blot/embed.ts","webpack:///./~/parchment/src/blot/text.ts","webpack:///./core/quill.js","webpack:///./core/polyfill.js","webpack:///./~/quill-delta/lib/delta.js","webpack:///./~/fast-diff/diff.js","webpack:///./~/deep-equal/index.js","webpack:///./~/deep-equal/lib/keys.js","webpack:///./~/deep-equal/lib/is_arguments.js","webpack:///./~/extend/index.js","webpack:///./~/quill-delta/lib/op.js","webpack:///./core/editor.js","webpack:///./formats/code.js","webpack:///./blots/block.js","webpack:///./blots/break.js","webpack:///./blots/embed.js","webpack:///./blots/inline.js","webpack:///./blots/text.js","webpack:///./blots/cursor.js","webpack:///./core/emitter.js","webpack:///./~/eventemitter3/index.js","webpack:///./core/logger.js","webpack:///./~/clone/clone.js","webpack:///./core/module.js","webpack:///./core/selection.js","webpack:///./core/theme.js","webpack:///./blots/container.js","webpack:///./blots/scroll.js","webpack:///./modules/clipboard.js","webpack:///./formats/align.js","webpack:///./formats/background.js","webpack:///./formats/color.js","webpack:///./formats/direction.js","webpack:///./formats/font.js","webpack:///./formats/size.js","webpack:///./modules/history.js","webpack:///./modules/keyboard.js","webpack:///./formats/indent.js","webpack:///./formats/blockquote.js","webpack:///./formats/header.js","webpack:///./formats/list.js","webpack:///./formats/bold.js","webpack:///./formats/italic.js","webpack:///./formats/link.js","webpack:///./formats/script.js","webpack:///./formats/strike.js","webpack:///./formats/underline.js","webpack:///./formats/image.js","webpack:///./formats/video.js","webpack:///./modules/formula.js","webpack:///./modules/syntax.js","webpack:///./modules/toolbar.js","webpack:///./ui/icons.js","webpack:///./assets/icons/align-left.svg","webpack:///./assets/icons/align-center.svg","webpack:///./assets/icons/align-right.svg","webpack:///./assets/icons/align-justify.svg","webpack:///./assets/icons/background.svg","webpack:///./assets/icons/blockquote.svg","webpack:///./assets/icons/bold.svg","webpack:///./assets/icons/clean.svg","webpack:///./assets/icons/code.svg","webpack:///./assets/icons/color.svg","webpack:///./assets/icons/direction-ltr.svg","webpack:///./assets/icons/direction-rtl.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.svg","webpack:///./assets/icons/header-2.svg","webpack:///./assets/icons/italic.svg","webpack:///./assets/icons/image.svg","webpack:///./assets/icons/indent.svg","webpack:///./assets/icons/outdent.svg","webpack:///./assets/icons/link.svg","webpack:///./assets/icons/list-ordered.svg","webpack:///./assets/icons/list-bullet.svg","webpack:///./assets/icons/list-check.svg","webpack:///./assets/icons/subscript.svg","webpack:///./assets/icons/superscript.svg","webpack:///./assets/icons/strike.svg","webpack:///./assets/icons/underline.svg","webpack:///./assets/icons/video.svg","webpack:///./ui/picker.js","webpack:///./assets/icons/dropdown.svg","webpack:///./ui/color-picker.js","webpack:///./ui/icon-picker.js","webpack:///./ui/tooltip.js","webpack:///./themes/bubble.js","webpack:///./themes/base.js","webpack:///./themes/snow.js"],"names":["root","factory","exports","module","define","amd","this","modules","__webpack_require__","moduleId","installedModules","id","loaded","call","m","c","p","_interopRequireDefault","obj","__esModule","default","_core","_core2","_align","_direction","_indent","_blockquote","_blockquote2","_header","_header2","_list","_list2","_background","_color","_font","_size","_bold","_bold2","_italic","_italic2","_link","_link2","_script","_script2","_strike","_strike2","_underline","_underline2","_image","_image2","_video","_video2","_code","_code2","_formula","_formula2","_syntax","_syntax2","_toolbar","_toolbar2","_icons","_icons2","_picker","_picker2","_colorPicker","_colorPicker2","_iconPicker","_iconPicker2","_tooltip","_tooltip2","_bubble","_bubble2","_snow","_snow2","register","attributors/attribute/direction","DirectionAttribute","attributors/class/align","AlignClass","attributors/class/background","BackgroundClass","attributors/class/color","ColorClass","attributors/class/direction","DirectionClass","attributors/class/font","FontClass","attributors/class/size","SizeClass","attributors/style/align","AlignStyle","attributors/style/background","BackgroundStyle","attributors/style/color","ColorStyle","attributors/style/direction","DirectionStyle","attributors/style/font","FontStyle","attributors/style/size","SizeStyle","formats/align","formats/direction","formats/indent","IndentClass","formats/background","formats/color","formats/font","formats/size","formats/blockquote","formats/code-block","formats/header","formats/list","formats/bold","formats/code","Code","formats/italic","formats/link","formats/script","formats/strike","formats/underline","formats/image","formats/video","formats/list/item","ListItem","modules/formula","modules/syntax","modules/toolbar","themes/bubble","themes/snow","ui/icons","ui/picker","ui/icon-picker","ui/color-picker","ui/tooltip","_parchment","_parchment2","_quill","_quill2","_block","_block2","_break","_break2","_container","_container2","_cursor","_cursor2","_embed","_embed2","_inline","_inline2","_scroll","_scroll2","_text","_text2","_clipboard","_clipboard2","_history","_history2","_keyboard","_keyboard2","blots/block","blots/block/embed","BlockEmbed","blots/break","blots/container","blots/cursor","blots/embed","blots/inline","blots/scroll","blots/text","modules/clipboard","modules/history","modules/keyboard","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","Container","Format","Leaf","Embed","Scroll","Block","Inline","Text","Attributor","Attribute","Class","Style","Store","Object","defineProperty","value","makeBlot","node","blot","e","INLINE","slice","childNodes","forEach","child","domNode","appendChild","parentNode","replaceChild","attach","__extends","d","b","__","constructor","hasOwnProperty","prototype","linked_list_1","shadow_1","ContainerBlot","_super","apply","arguments","other","insertBefore","_this","children","reverse","head","err","ParchmentError","deleteAt","index","length","remove","forEachAt","offset","descendant","criteria","_a","blotName","descendants","Number","MAX_VALUE","lengthLeft","push","concat","detach","formatAt","name","insertAt","def","childBlot","refBlot","statics","allowedChildren","some","insertInto","reduce","memo","moveChildren","targetParent","refNode","optimize","defaultChild","path","inclusive","position","removeChild","replace","target","split","force","next","after","clone","parent","unwrap","update","mutations","addedNodes","removedNodes","mutation","type","document","body","compareDocumentPosition","Node","DOCUMENT_POSITION_CONTAINED_BY","filter","sort","a","DOCUMENT_POSITION_FOLLOWING","nextSibling","LinkedList","tail","undefined","append","nodes","_i","contains","cur","iterator","prev","curNode","ret","length_1","callback","startNode","curIndex","curLength","Math","min","map","ShadowBlot","get","enumerable","configurable","tagName","Array","isArray","toUpperCase","parseInt","toString","createElement","indexOf","className","classList","add","DATA_KEY","cloneNode","isolate","BLOT","wrap","ATTRIBUTE","parent_1","scope","format","ref","parentBlot","refDomNode","replaceWith","replacement","wrapper","input","match","BlotClass","bubble","ANY","types","attributes","LEVEL","BLOCK","HTMLElement","names","getAttribute","i","classes","tags","TYPE","Definitions","Definition","attrName","keyName","tagNames","tag","message","Error","FormatBlot","formats","toLowerCase","attribute","values","copy","build","move","options","attributeBit","whitelist","keys","item","canAdd","setAttribute","removeAttribute","AttributorStore","styles","attr","key","prefix","ClassAttributor","join","matches","result","camelize","parts","rest","part","StyleAttributor","arr","trim","style","LeafBlot","INLINE_BLOT","OBSERVER_CONFIG","characterData","characterDataOldValue","childList","subtree","MAX_OPTIMIZE_ITERATIONS","ScrollBlot","observer","MutationObserver","observe","disconnect","records","takeRecords","pop","mark","markParent","remaining","previousSibling","grandChild","BLOCK_BLOT","isEqual","obj1","obj2","prop","InlineBlot","BlockBlot","EmbedBlot","TextBlot","text","createTextNode","data","splitText","_defineProperty","writable","_classCallCheck","instance","Constructor","TypeError","expandConfig","container","userConfig","_extend2","clipboard","keyboard","history","theme","Quill","DEFAULTS","import","_theme2","themeConfig","config","moduleNames","moduleConfig","moduleClass","debug","error","toolbar","querySelector","modify","modifier","source","shift","strict","isEnabled","_emitter4","sources","USER","_quillDelta2","range","getSelection","oldDelta","editor","delta","change","shiftRange","setSelection","SILENT","_emitter","args","events","TEXT_CHANGE","emitter","emit","EDITOR_CHANGE","_emitter2","overload","_typeof","API","start","end","_map","pos","transformPosition","_map2","_slicedToArray","_map3","max","_map4","_selection","Range","Symbol","sliceIterator","_arr","_n","_d","_e","_s","done","_createClass","defineProperties","props","descriptor","protoProps","staticProps","_quillDelta","_editor","_editor2","_emitter3","_module","_module2","_selection2","_extend","_logger","_logger2","_theme","_this2","scrollingContainer","html","innerHTML","addContainer","scroll","selection","addModule","init","on","toggle","isBlank","SCROLL_UPDATE","lastRange","contents","convert","setContents","clear","placeholder","readOnly","disable","limit","level","imports","overwrite","warn","startsWith","setRange","_this3","_overload","_overload2","deleteText","enable","enabled","blur","scrollTop","focus","scrollIntoView","_this4","formatLine","formatText","_this5","_overload3","_overload4","_this6","_overload5","_overload6","getBounds","getLength","_overload7","_overload8","getContents","getFormat","getRange","_overload9","_overload10","getText","hasFocus","embed","_this7","insertEmbed","_this8","_overload11","_overload12","insertText","off","once","dangerouslyPasteHTML","_this9","_overload13","_overload14","removeFormat","_this10","deleted","applied","applyDelta","lastOp","ops","insert","delete","compose","_overload15","_overload16","_this11","bounds","version","parchment","core/module","core/theme","elem","_toggle","DOMTokenList","token","String","searchString","substr","endsWith","subjectString","isFinite","floor","lastIndex","predicate","list","thisArg","addEventListener","execCommand","diff","equal","extend","op","NULL_CHARACTER","fromCharCode","Delta","newOp","retain","unshift","splice","partition","passed","failed","initial","chop","Infinity","iter","hasNext","nextOp","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","strings","prep","diffResult","component","opLength","INSERT","DELETE","EQUAL","eachLine","newline","line","peek","transform","priority","nextType","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","x","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","j","best_common","prefixLength","suffixLength","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","suffix","left_d","right_d","isUndefinedOrNull","isBuffer","objEquiv","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","actual","expected","Date","getTime","shim","supported","object","unsupported","propertyIsEnumerable","supportsArgumentsClass","hasOwn","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","src","copyIsArray","deep","Iterator","lib","keepNull","retOp","combineFormats","combined","merged","normalizeDelta","_clone2","image","bullet","_op","_op2","_clone","_deepEqual","_deepEqual2","Editor","getDelta","consumeNextNewline","scrollLength","batch","_scroll$line","_scroll$line2","bubbleFormats","_line$descendant","_line$descendant2","leaf","lines","lengthRemaining","lineLength","codeIndex","codeLength","newlineIndex","leaves","_path","formatsArr","blots","_scroll$line3","_scroll$line4","cursorIndex","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","_get","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","_Inline","CodeBlock","_Block","textContent","frag","_descendant","_descendant2","nextNewline","prevNewline","isolateLength","_descendant3","_descendant4","searchIndex","lastIndexOf","querySelectorAll","TAB","NEWLINE_LENGTH","_Embed","BLOCK_ATTRIBUTE","block","_Parchment$Block","cache","Break","_Parchment$Embed","_Parchment$Inline","compare","selfIndex","order","otherIndex","_Parchment$Text","Cursor","textNode","_length","composing","getNativeRange","restoreText","_ref","lastChild","SCROLL_OPTIMIZE","setNativeRange","restore","_eventemitter","_eventemitter2","Emitter","_EventEmitter","log","SCROLL_BEFORE_UPDATE","SELECTION_CHANGE","Events","EE","fn","context","EventEmitter","_events","_eventsCount","has","eventNames","getOwnPropertySymbols","listeners","event","exists","evt","available","l","ee","a1","a2","a3","a4","a5","len","removeListener","listener","removeAllListeners","addListener","setMaxListeners","prefixed","method","levels","_len","_key","console","namespace","ns","logger","bind","newLevel","circular","depth","includeNonEnumerable","proto","nativeMap","nativeSet","nativePromise","resolve","reject","then","__isArray","__isRegExp","RegExp","__getRegExpFlags","__isDate","useBuffer","Buffer","allParents","allChildren","keyIterator","keyChild","valueChild","set","entryChild","attrs","symbols","symbol","allPropertyNames","getOwnPropertyNames","propertyName","__objToStr","o","re","flags","global","ignoreCase","multiline","Map","_","Set","Promise","clonePrototype","Module","quill","_toConsumableArray","arr2","from","Selection","cursor","savedRange","eventName","setTimeout","native","ignored","nativeRange","collapsed","_scroll$leaf","_scroll$leaf2","_leaf$position","_leaf$position2","createRange","setStart","_scroll$leaf3","_scroll$leaf4","_leaf$position3","_leaf$position4","setEnd","getBoundingClientRect","side","rect","height","left","width","top","containerBounds","right","bottom","rangeCount","getRangeAt","startContainer","endContainer","startOffset","endOffset","info","positions","indexes","_position","activeElement","offsetHeight","offsetTop","endNode","removeAllRanges","addRange","_scroll$leaf5","_scroll$leaf6","_leaf$position5","_leaf$position6","oldRange","_getRange","_getRange2","Theme","themes","_Parchment$Container","isLine","_Parchment$Scroll","_line","_line2","first","_line3","_line4","last","getLines","computeStyle","nodeType","ELEMENT_NODE","DOM_KEY","window","getComputedStyle","deltaEndsWith","endText","display","traverse","elementMatchers","textMatchers","TEXT_NODE","matcher","childNode","childrenDelta","matchAlias","matchAttributor","ATTRIBUTE_ATTRIBUTORS","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","matchNewline","matchSpacing","nextElementSibling","nodeHeight","parseFloat","marginTop","marginBottom","matchStyles","fontStyle","italic","fontWeight","bold","textIndent","matchText","whiteSpace","replacer","collapse","CLIPBOARD_CONFIG","AlignAttribute","Clipboard","_Module","onPaste","matchers","pair","addMatcher","selector","_prepareMatching","prepareMatching","_prepareMatching2","paste","updateContents","defaultPrevented","_pair","ColorAttributor","_Parchment$Attributor","FontStyleAttributor","endsWithNewlineChange","getLastChangeIndex","deleteLength","changeIndex","History","lastRecorded","ignoreChange","userOnly","record","addBinding","shortKey","undo","shiftKey","redo","test","navigator","platform","dest","stack","changeDelta","undoDelta","timestamp","now","delay","maxStack","handleBackspace","_quill$scroll$line5","_quill$scroll$line6","curFormats","prevFormats","handleDelete","handleDeleteRange","handleEnter","lineFormats","makeCodeBlockHandler","indent","Keyboard","code-block","handler","_quill$scroll$descend","_quill$scroll$descend2","scrollOffset","makeFormatHandler","normalize","binding","charCodeAt","SHORTKEY","bindings","ENTER","metaKey","ctrlKey","altKey","userAgent","BACKSPACE","listen","which","keyCode","_quill$scroll$line","_quill$scroll$line2","_quill$scroll$leaf","_quill$scroll$leaf2","leafStart","offsetStart","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","every","preventDefault","ESCAPE","LEFT","UP","RIGHT","DOWN","underline","outdent","outdent backspace","blockquote","indent code-block","outdent code-block","remove tab","tab","list empty enter","checklist enter","_quill$scroll$line3","_quill$scroll$line4","header enter","list autofill","IdentAttributor","Blockquote","Header","List","_Container","hasAttribute","Bold","Italic","_Bold","sanitize","url","protocols","anchor","href","protocol","Link","SANITIZED_URL","Script","Strike","Underline","ATTRIBUTES","Image","Video","_BlockEmbed","Formula","katex","FormulaBlot","render","CodeToken","SyntaxCodeBlock","_CodeBlock","highlight","cachedHTML","Syntax","timer","code","hljs","highlightAuto","addButton","addControls","groups","controls","group","control","addSelect","option","Toolbar","_ret","handlers","addHandler","_this$quill$selection","_this$quill$selection2","selectedIndex","selected","_quill$selection$getR","_quill$selection$getR2","prompt","isActive","clean","direction","align","link","","center","justify","background","color","rtl","float","full","formula","header","1","2","+1","-1","ordered","unchecked","script","sub","super","strike","video","_dropdown","_dropdown2","Picker","select","buildPicker","label","selectItem","buildItem","buildLabel","buildOptions","trigger","Event","dispatchEvent","createEvent","initEvent","close","ColorPicker","_Picker","backgroundColor","colorLabel","stroke","fill","IconPicker","icons","defaultItem","Tooltip","boundsContainer","TEMPLATE","checkBounds","hide","reference","offsetWidth","rootBounds","BubbleTooltip","_base","_base2","TOOLBAR_CONFIG","BubbleTheme","_BaseTheme","tooltip","buildButtons","buildPickers","edit","_BaseTooltip","show","lastLine","textbox","arrow","marginLeft","BaseTooltip","fillSelect","defaultValue","ALIGNS","COLORS","FONTS","HEADERS","SIZES","BaseTheme","_Theme","pickers","picker","removeEventListener","extendToolbar","buttons","button","selects","fileInput","files","reader","FileReader","onload","readAsDataURL","click","_Tooltip","save","cancel","mode","preview","linkRange","restoreFocus","SnowTheme","SnowTooltip"],"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.1.8\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\texports: {},\n/******/ \t\t\tid: moduleId,\n/******/ \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(0);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _core = __webpack_require__(1);\n\t\n\tvar _core2 = _interopRequireDefault(_core);\n\t\n\tvar _align = __webpack_require__(45);\n\t\n\tvar _direction = __webpack_require__(48);\n\t\n\tvar _indent = __webpack_require__(53);\n\t\n\tvar _blockquote = __webpack_require__(54);\n\t\n\tvar _blockquote2 = _interopRequireDefault(_blockquote);\n\t\n\tvar _header = __webpack_require__(55);\n\t\n\tvar _header2 = _interopRequireDefault(_header);\n\t\n\tvar _list = __webpack_require__(56);\n\t\n\tvar _list2 = _interopRequireDefault(_list);\n\t\n\tvar _background = __webpack_require__(46);\n\t\n\tvar _color = __webpack_require__(47);\n\t\n\tvar _font = __webpack_require__(49);\n\t\n\tvar _size = __webpack_require__(50);\n\t\n\tvar _bold = __webpack_require__(57);\n\t\n\tvar _bold2 = _interopRequireDefault(_bold);\n\t\n\tvar _italic = __webpack_require__(58);\n\t\n\tvar _italic2 = _interopRequireDefault(_italic);\n\t\n\tvar _link = __webpack_require__(59);\n\t\n\tvar _link2 = _interopRequireDefault(_link);\n\t\n\tvar _script = __webpack_require__(60);\n\t\n\tvar _script2 = _interopRequireDefault(_script);\n\t\n\tvar _strike = __webpack_require__(61);\n\t\n\tvar _strike2 = _interopRequireDefault(_strike);\n\t\n\tvar _underline = __webpack_require__(62);\n\t\n\tvar _underline2 = _interopRequireDefault(_underline);\n\t\n\tvar _image = __webpack_require__(63);\n\t\n\tvar _image2 = _interopRequireDefault(_image);\n\t\n\tvar _video = __webpack_require__(64);\n\t\n\tvar _video2 = _interopRequireDefault(_video);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tvar _formula = __webpack_require__(65);\n\t\n\tvar _formula2 = _interopRequireDefault(_formula);\n\t\n\tvar _syntax = __webpack_require__(66);\n\t\n\tvar _syntax2 = _interopRequireDefault(_syntax);\n\t\n\tvar _toolbar = __webpack_require__(67);\n\t\n\tvar _toolbar2 = _interopRequireDefault(_toolbar);\n\t\n\tvar _icons = __webpack_require__(68);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tvar _picker = __webpack_require__(101);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _colorPicker = __webpack_require__(103);\n\t\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\tvar _iconPicker = __webpack_require__(104);\n\t\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\tvar _tooltip = __webpack_require__(105);\n\t\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\tvar _bubble = __webpack_require__(106);\n\t\n\tvar _bubble2 = _interopRequireDefault(_bubble);\n\t\n\tvar _snow = __webpack_require__(108);\n\t\n\tvar _snow2 = _interopRequireDefault(_snow);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t_core2.default.register({\n\t 'attributors/attribute/direction': _direction.DirectionAttribute,\n\t\n\t 'attributors/class/align': _align.AlignClass,\n\t 'attributors/class/background': _background.BackgroundClass,\n\t 'attributors/class/color': _color.ColorClass,\n\t 'attributors/class/direction': _direction.DirectionClass,\n\t 'attributors/class/font': _font.FontClass,\n\t 'attributors/class/size': _size.SizeClass,\n\t\n\t 'attributors/style/align': _align.AlignStyle,\n\t 'attributors/style/background': _background.BackgroundStyle,\n\t 'attributors/style/color': _color.ColorStyle,\n\t 'attributors/style/direction': _direction.DirectionStyle,\n\t 'attributors/style/font': _font.FontStyle,\n\t 'attributors/style/size': _size.SizeStyle\n\t}, true);\n\t\n\t_core2.default.register({\n\t 'formats/align': _align.AlignClass,\n\t 'formats/direction': _direction.DirectionClass,\n\t 'formats/indent': _indent.IndentClass,\n\t\n\t 'formats/background': _background.BackgroundStyle,\n\t 'formats/color': _color.ColorStyle,\n\t 'formats/font': _font.FontClass,\n\t 'formats/size': _size.SizeClass,\n\t\n\t 'formats/blockquote': _blockquote2.default,\n\t 'formats/code-block': _code2.default,\n\t 'formats/header': _header2.default,\n\t 'formats/list': _list2.default,\n\t\n\t 'formats/bold': _bold2.default,\n\t 'formats/code': _code.Code,\n\t 'formats/italic': _italic2.default,\n\t 'formats/link': _link2.default,\n\t 'formats/script': _script2.default,\n\t 'formats/strike': _strike2.default,\n\t 'formats/underline': _underline2.default,\n\t\n\t 'formats/image': _image2.default,\n\t 'formats/video': _video2.default,\n\t\n\t 'formats/list/item': _list.ListItem,\n\t\n\t 'modules/formula': _formula2.default,\n\t 'modules/syntax': _syntax2.default,\n\t 'modules/toolbar': _toolbar2.default,\n\t\n\t 'themes/bubble': _bubble2.default,\n\t 'themes/snow': _snow2.default,\n\t\n\t 'ui/icons': _icons2.default,\n\t 'ui/picker': _picker2.default,\n\t 'ui/icon-picker': _iconPicker2.default,\n\t 'ui/color-picker': _colorPicker2.default,\n\t 'ui/tooltip': _tooltip2.default\n\t}, true);\n\t\n\tmodule.exports = _core2.default;\n\n/***/ },\n/* 1 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _break = __webpack_require__(30);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _container = __webpack_require__(42);\n\t\n\tvar _container2 = _interopRequireDefault(_container);\n\t\n\tvar _cursor = __webpack_require__(34);\n\t\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _scroll = __webpack_require__(43);\n\t\n\tvar _scroll2 = _interopRequireDefault(_scroll);\n\t\n\tvar _text = __webpack_require__(33);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tvar _clipboard = __webpack_require__(44);\n\t\n\tvar _clipboard2 = _interopRequireDefault(_clipboard);\n\t\n\tvar _history = __webpack_require__(51);\n\t\n\tvar _history2 = _interopRequireDefault(_history);\n\t\n\tvar _keyboard = __webpack_require__(52);\n\t\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\t_quill2.default.register({\n\t 'blots/block': _block2.default,\n\t 'blots/block/embed': _block.BlockEmbed,\n\t 'blots/break': _break2.default,\n\t 'blots/container': _container2.default,\n\t 'blots/cursor': _cursor2.default,\n\t 'blots/embed': _embed2.default,\n\t 'blots/inline': _inline2.default,\n\t 'blots/scroll': _scroll2.default,\n\t 'blots/text': _text2.default,\n\t\n\t 'modules/clipboard': _clipboard2.default,\n\t 'modules/history': _history2.default,\n\t 'modules/keyboard': _keyboard2.default\n\t});\n\t\n\t_parchment2.default.register(_block2.default, _break2.default, _cursor2.default, _inline2.default, _scroll2.default, _text2.default);\n\t\n\tmodule.exports = _quill2.default;\n\n/***/ },\n/* 2 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar container_1 = __webpack_require__(3);\n\tvar format_1 = __webpack_require__(7);\n\tvar leaf_1 = __webpack_require__(12);\n\tvar scroll_1 = __webpack_require__(13);\n\tvar inline_1 = __webpack_require__(14);\n\tvar block_1 = __webpack_require__(15);\n\tvar embed_1 = __webpack_require__(16);\n\tvar text_1 = __webpack_require__(17);\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar store_1 = __webpack_require__(9);\n\tvar Registry = __webpack_require__(6);\n\tvar Parchment = {\n\t Scope: Registry.Scope,\n\t create: Registry.create,\n\t find: Registry.find,\n\t query: Registry.query,\n\t register: Registry.register,\n\t Container: container_1.default,\n\t Format: format_1.default,\n\t Leaf: leaf_1.default,\n\t Embed: embed_1.default,\n\t Scroll: scroll_1.default,\n\t Block: block_1.default,\n\t Inline: inline_1.default,\n\t Text: text_1.default,\n\t Attributor: {\n\t Attribute: attributor_1.default,\n\t Class: class_1.default,\n\t Style: style_1.default,\n\t Store: store_1.default\n\t }\n\t};\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Parchment;\n\n\n/***/ },\n/* 3 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar linked_list_1 = __webpack_require__(4);\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar ContainerBlot = (function (_super) {\n\t __extends(ContainerBlot, _super);\n\t function ContainerBlot() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t ContainerBlot.prototype.appendChild = function (other) {\n\t this.insertBefore(other);\n\t };\n\t ContainerBlot.prototype.attach = function () {\n\t var _this = this;\n\t _super.prototype.attach.call(this);\n\t this.children = new linked_list_1.default();\n\t // Need to be reversed for if DOM nodes already in order\n\t [].slice.call(this.domNode.childNodes).reverse().forEach(function (node) {\n\t try {\n\t var child = makeBlot(node);\n\t _this.insertBefore(child, _this.children.head);\n\t }\n\t catch (err) {\n\t if (err instanceof Registry.ParchmentError)\n\t return;\n\t else\n\t throw err;\n\t }\n\t });\n\t };\n\t ContainerBlot.prototype.deleteAt = function (index, length) {\n\t if (index === 0 && length === this.length()) {\n\t return this.remove();\n\t }\n\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t child.deleteAt(offset, length);\n\t });\n\t };\n\t ContainerBlot.prototype.descendant = function (criteria, index) {\n\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t if ((criteria.blotName == null && criteria(child)) ||\n\t (criteria.blotName != null && child instanceof criteria)) {\n\t return [child, offset];\n\t }\n\t else if (child instanceof ContainerBlot) {\n\t return child.descendant(criteria, offset);\n\t }\n\t else {\n\t return [null, -1];\n\t }\n\t };\n\t ContainerBlot.prototype.descendants = function (criteria, index, length) {\n\t if (index === void 0) { index = 0; }\n\t if (length === void 0) { length = Number.MAX_VALUE; }\n\t var descendants = [], lengthLeft = length;\n\t this.children.forEachAt(index, length, function (child, index, length) {\n\t if ((criteria.blotName == null && criteria(child)) ||\n\t (criteria.blotName != null && child instanceof criteria)) {\n\t descendants.push(child);\n\t }\n\t if (child instanceof ContainerBlot) {\n\t descendants = descendants.concat(child.descendants(criteria, index, lengthLeft));\n\t }\n\t lengthLeft -= length;\n\t });\n\t return descendants;\n\t };\n\t ContainerBlot.prototype.detach = function () {\n\t this.children.forEach(function (child) {\n\t child.detach();\n\t });\n\t _super.prototype.detach.call(this);\n\t };\n\t ContainerBlot.prototype.formatAt = function (index, length, name, value) {\n\t this.children.forEachAt(index, length, function (child, offset, length) {\n\t child.formatAt(offset, length, name, value);\n\t });\n\t };\n\t ContainerBlot.prototype.insertAt = function (index, value, def) {\n\t var _a = this.children.find(index), child = _a[0], offset = _a[1];\n\t if (child) {\n\t child.insertAt(offset, value, def);\n\t }\n\t else {\n\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t this.appendChild(blot);\n\t }\n\t };\n\t ContainerBlot.prototype.insertBefore = function (childBlot, refBlot) {\n\t if (this.statics.allowedChildren != null && !this.statics.allowedChildren.some(function (child) {\n\t return childBlot instanceof child;\n\t })) {\n\t throw new Registry.ParchmentError(\"Cannot insert \" + childBlot.statics.blotName + \" into \" + this.statics.blotName);\n\t }\n\t childBlot.insertInto(this, refBlot);\n\t };\n\t ContainerBlot.prototype.length = function () {\n\t return this.children.reduce(function (memo, child) {\n\t return memo + child.length();\n\t }, 0);\n\t };\n\t ContainerBlot.prototype.moveChildren = function (targetParent, refNode) {\n\t this.children.forEach(function (child) {\n\t targetParent.insertBefore(child, refNode);\n\t });\n\t };\n\t ContainerBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t if (this.children.length === 0) {\n\t if (this.statics.defaultChild != null) {\n\t var child = Registry.create(this.statics.defaultChild);\n\t this.appendChild(child);\n\t child.optimize();\n\t }\n\t else {\n\t this.remove();\n\t }\n\t }\n\t };\n\t ContainerBlot.prototype.path = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t var _a = this.children.find(index, inclusive), child = _a[0], offset = _a[1];\n\t var position = [[this, index]];\n\t if (child instanceof ContainerBlot) {\n\t return position.concat(child.path(offset, inclusive));\n\t }\n\t else if (child != null) {\n\t position.push([child, offset]);\n\t }\n\t return position;\n\t };\n\t ContainerBlot.prototype.removeChild = function (child) {\n\t this.children.remove(child);\n\t };\n\t ContainerBlot.prototype.replace = function (target) {\n\t if (target instanceof ContainerBlot) {\n\t target.moveChildren(this);\n\t }\n\t _super.prototype.replace.call(this, target);\n\t };\n\t ContainerBlot.prototype.split = function (index, force) {\n\t if (force === void 0) { force = false; }\n\t if (!force) {\n\t if (index === 0)\n\t return this;\n\t if (index === this.length())\n\t return this.next;\n\t }\n\t var after = this.clone();\n\t this.parent.insertBefore(after, this.next);\n\t this.children.forEachAt(index, this.length(), function (child, offset, length) {\n\t child = child.split(offset, force);\n\t after.appendChild(child);\n\t });\n\t return after;\n\t };\n\t ContainerBlot.prototype.unwrap = function () {\n\t this.moveChildren(this.parent, this.next);\n\t this.remove();\n\t };\n\t ContainerBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t var addedNodes = [], removedNodes = [];\n\t mutations.forEach(function (mutation) {\n\t if (mutation.target === _this.domNode && mutation.type === 'childList') {\n\t addedNodes.push.apply(addedNodes, mutation.addedNodes);\n\t removedNodes.push.apply(removedNodes, mutation.removedNodes);\n\t }\n\t });\n\t removedNodes.forEach(function (node) {\n\t if (node.parentNode != null &&\n\t (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n\t // Node has not actually been removed\n\t return;\n\t }\n\t var blot = Registry.find(node);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode.parentNode == null || blot.domNode.parentNode === _this.domNode) {\n\t blot.detach();\n\t }\n\t });\n\t addedNodes.filter(function (node) {\n\t return node.parentNode == _this.domNode;\n\t }).sort(function (a, b) {\n\t if (a === b)\n\t return 0;\n\t if (a.compareDocumentPosition(b) & Node.DOCUMENT_POSITION_FOLLOWING) {\n\t return 1;\n\t }\n\t return -1;\n\t }).forEach(function (node) {\n\t var refBlot = null;\n\t if (node.nextSibling != null) {\n\t refBlot = Registry.find(node.nextSibling);\n\t }\n\t var blot = makeBlot(node);\n\t if (blot.next != refBlot || blot.next == null) {\n\t if (blot.parent != null) {\n\t blot.parent.removeChild(_this);\n\t }\n\t _this.insertBefore(blot, refBlot);\n\t }\n\t });\n\t };\n\t return ContainerBlot;\n\t}(shadow_1.default));\n\tfunction makeBlot(node) {\n\t var blot = Registry.find(node);\n\t if (blot == null) {\n\t try {\n\t blot = Registry.create(node);\n\t }\n\t catch (e) {\n\t blot = Registry.create(Registry.Scope.INLINE);\n\t [].slice.call(node.childNodes).forEach(function (child) {\n\t blot.domNode.appendChild(child);\n\t });\n\t node.parentNode.replaceChild(blot.domNode, node);\n\t blot.attach();\n\t }\n\t }\n\t return blot;\n\t}\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ContainerBlot;\n\n\n/***/ },\n/* 4 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar LinkedList = (function () {\n\t function LinkedList() {\n\t this.head = this.tail = undefined;\n\t this.length = 0;\n\t }\n\t LinkedList.prototype.append = function () {\n\t var nodes = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t nodes[_i] = arguments[_i];\n\t }\n\t this.insertBefore(nodes[0], undefined);\n\t if (nodes.length > 1) {\n\t this.append.apply(this, nodes.slice(1));\n\t }\n\t };\n\t LinkedList.prototype.contains = function (node) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t if (cur === node)\n\t return true;\n\t }\n\t return false;\n\t };\n\t LinkedList.prototype.insertBefore = function (node, refNode) {\n\t node.next = refNode;\n\t if (refNode != null) {\n\t node.prev = refNode.prev;\n\t if (refNode.prev != null) {\n\t refNode.prev.next = node;\n\t }\n\t refNode.prev = node;\n\t if (refNode === this.head) {\n\t this.head = node;\n\t }\n\t }\n\t else if (this.tail != null) {\n\t this.tail.next = node;\n\t node.prev = this.tail;\n\t this.tail = node;\n\t }\n\t else {\n\t node.prev = undefined;\n\t this.head = this.tail = node;\n\t }\n\t this.length += 1;\n\t };\n\t LinkedList.prototype.offset = function (target) {\n\t var index = 0, cur = this.head;\n\t while (cur != null) {\n\t if (cur === target)\n\t return index;\n\t index += cur.length();\n\t cur = cur.next;\n\t }\n\t return -1;\n\t };\n\t LinkedList.prototype.remove = function (node) {\n\t if (!this.contains(node))\n\t return;\n\t if (node.prev != null)\n\t node.prev.next = node.next;\n\t if (node.next != null)\n\t node.next.prev = node.prev;\n\t if (node === this.head)\n\t this.head = node.next;\n\t if (node === this.tail)\n\t this.tail = node.prev;\n\t this.length -= 1;\n\t };\n\t LinkedList.prototype.iterator = function (curNode) {\n\t if (curNode === void 0) { curNode = this.head; }\n\t // TODO use yield when we can\n\t return function () {\n\t var ret = curNode;\n\t if (curNode != null)\n\t curNode = curNode.next;\n\t return ret;\n\t };\n\t };\n\t LinkedList.prototype.find = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t var length_1 = cur.length();\n\t if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n\t return [cur, index];\n\t }\n\t index -= length_1;\n\t }\n\t return [null, 0];\n\t };\n\t LinkedList.prototype.forEach = function (callback) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t callback(cur);\n\t }\n\t };\n\t LinkedList.prototype.forEachAt = function (index, length, callback) {\n\t if (length <= 0)\n\t return;\n\t var _a = this.find(index), startNode = _a[0], offset = _a[1];\n\t var cur, curIndex = index - offset, next = this.iterator(startNode);\n\t while ((cur = next()) && curIndex < index + length) {\n\t var curLength = cur.length();\n\t if (index > curIndex) {\n\t callback(cur, index - curIndex, Math.min(length, curIndex + curLength - index));\n\t }\n\t else {\n\t callback(cur, 0, Math.min(curLength, index + length - curIndex));\n\t }\n\t curIndex += curLength;\n\t }\n\t };\n\t LinkedList.prototype.map = function (callback) {\n\t return this.reduce(function (memo, cur) {\n\t memo.push(callback(cur));\n\t return memo;\n\t }, []);\n\t };\n\t LinkedList.prototype.reduce = function (callback, memo) {\n\t var cur, next = this.iterator();\n\t while (cur = next()) {\n\t memo = callback(memo, cur);\n\t }\n\t return memo;\n\t };\n\t return LinkedList;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LinkedList;\n\n\n/***/ },\n/* 5 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar ShadowBlot = (function () {\n\t function ShadowBlot(domNode) {\n\t this.domNode = domNode;\n\t this.attach();\n\t }\n\t Object.defineProperty(ShadowBlot.prototype, \"statics\", {\n\t // Hack for accessing inherited static methods\n\t get: function () {\n\t return this.constructor;\n\t },\n\t enumerable: true,\n\t configurable: true\n\t });\n\t ShadowBlot.create = function (value) {\n\t if (this.tagName == null) {\n\t throw new Registry.ParchmentError('Blot definition missing tagName');\n\t }\n\t var node;\n\t if (Array.isArray(this.tagName)) {\n\t if (typeof value === 'string') {\n\t value = value.toUpperCase();\n\t if (parseInt(value).toString() === value) {\n\t value = parseInt(value);\n\t }\n\t }\n\t if (typeof value === 'number') {\n\t node = document.createElement(this.tagName[value - 1]);\n\t }\n\t else if (this.tagName.indexOf(value) > -1) {\n\t node = document.createElement(value);\n\t }\n\t else {\n\t node = document.createElement(this.tagName[0]);\n\t }\n\t }\n\t else {\n\t node = document.createElement(this.tagName);\n\t }\n\t if (this.className) {\n\t node.classList.add(this.className);\n\t }\n\t return node;\n\t };\n\t ShadowBlot.prototype.attach = function () {\n\t this.domNode[Registry.DATA_KEY] = { blot: this };\n\t };\n\t ShadowBlot.prototype.clone = function () {\n\t var domNode = this.domNode.cloneNode();\n\t return Registry.create(domNode);\n\t };\n\t ShadowBlot.prototype.detach = function () {\n\t if (this.parent != null)\n\t this.parent.removeChild(this);\n\t delete this.domNode[Registry.DATA_KEY];\n\t };\n\t ShadowBlot.prototype.deleteAt = function (index, length) {\n\t var blot = this.isolate(index, length);\n\t blot.remove();\n\t };\n\t ShadowBlot.prototype.formatAt = function (index, length, name, value) {\n\t var blot = this.isolate(index, length);\n\t if (Registry.query(name, Registry.Scope.BLOT) != null && value) {\n\t blot.wrap(name, value);\n\t }\n\t else if (Registry.query(name, Registry.Scope.ATTRIBUTE) != null) {\n\t var parent_1 = Registry.create(this.statics.scope);\n\t blot.wrap(parent_1);\n\t parent_1.format(name, value);\n\t }\n\t };\n\t ShadowBlot.prototype.insertAt = function (index, value, def) {\n\t var blot = (def == null) ? Registry.create('text', value) : Registry.create(value, def);\n\t var ref = this.split(index);\n\t this.parent.insertBefore(blot, ref);\n\t };\n\t ShadowBlot.prototype.insertInto = function (parentBlot, refBlot) {\n\t if (this.parent != null) {\n\t this.parent.children.remove(this);\n\t }\n\t parentBlot.children.insertBefore(this, refBlot);\n\t if (refBlot != null) {\n\t var refDomNode = refBlot.domNode;\n\t }\n\t if (this.next == null || this.domNode.nextSibling != refDomNode) {\n\t parentBlot.domNode.insertBefore(this.domNode, (typeof refDomNode !== 'undefined') ? refDomNode : null);\n\t }\n\t this.parent = parentBlot;\n\t };\n\t ShadowBlot.prototype.isolate = function (index, length) {\n\t var target = this.split(index);\n\t target.split(length);\n\t return target;\n\t };\n\t ShadowBlot.prototype.length = function () {\n\t return 1;\n\t };\n\t ;\n\t ShadowBlot.prototype.offset = function (root) {\n\t if (root === void 0) { root = this.parent; }\n\t if (this.parent == null || this == root)\n\t return 0;\n\t return this.parent.children.offset(this) + this.parent.offset(root);\n\t };\n\t ShadowBlot.prototype.optimize = function () {\n\t // TODO clean up once we use WeakMap\n\t if (this.domNode[Registry.DATA_KEY] != null) {\n\t delete this.domNode[Registry.DATA_KEY].mutations;\n\t }\n\t };\n\t ShadowBlot.prototype.remove = function () {\n\t if (this.domNode.parentNode != null) {\n\t this.domNode.parentNode.removeChild(this.domNode);\n\t }\n\t this.detach();\n\t };\n\t ShadowBlot.prototype.replace = function (target) {\n\t if (target.parent == null)\n\t return;\n\t target.parent.insertBefore(this, target.next);\n\t target.remove();\n\t };\n\t ShadowBlot.prototype.replaceWith = function (name, value) {\n\t var replacement = typeof name === 'string' ? Registry.create(name, value) : name;\n\t replacement.replace(this);\n\t return replacement;\n\t };\n\t ShadowBlot.prototype.split = function (index, force) {\n\t return index === 0 ? this : this.next;\n\t };\n\t ShadowBlot.prototype.update = function (mutations) {\n\t if (mutations === void 0) { mutations = []; }\n\t // Nothing to do by default\n\t };\n\t ShadowBlot.prototype.wrap = function (name, value) {\n\t var wrapper = typeof name === 'string' ? Registry.create(name, value) : name;\n\t if (this.parent != null) {\n\t this.parent.insertBefore(wrapper, this.next);\n\t }\n\t wrapper.appendChild(this);\n\t return wrapper;\n\t };\n\t return ShadowBlot;\n\t}());\n\tShadowBlot.blotName = 'abstract';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ShadowBlot;\n\n\n/***/ },\n/* 6 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar ParchmentError = (function (_super) {\n\t __extends(ParchmentError, _super);\n\t function ParchmentError(message) {\n\t var _this;\n\t message = '[Parchment] ' + message;\n\t _this = _super.call(this, message) || this;\n\t _this.message = message;\n\t _this.name = _this.constructor.name;\n\t return _this;\n\t }\n\t return ParchmentError;\n\t}(Error));\n\texports.ParchmentError = ParchmentError;\n\tvar attributes = {};\n\tvar classes = {};\n\tvar tags = {};\n\tvar types = {};\n\texports.DATA_KEY = '__blot';\n\tvar Scope;\n\t(function (Scope) {\n\t Scope[Scope[\"TYPE\"] = 3] = \"TYPE\";\n\t Scope[Scope[\"LEVEL\"] = 12] = \"LEVEL\";\n\t Scope[Scope[\"ATTRIBUTE\"] = 13] = \"ATTRIBUTE\";\n\t Scope[Scope[\"BLOT\"] = 14] = \"BLOT\";\n\t Scope[Scope[\"INLINE\"] = 7] = \"INLINE\";\n\t Scope[Scope[\"BLOCK\"] = 11] = \"BLOCK\";\n\t Scope[Scope[\"BLOCK_BLOT\"] = 10] = \"BLOCK_BLOT\";\n\t Scope[Scope[\"INLINE_BLOT\"] = 6] = \"INLINE_BLOT\";\n\t Scope[Scope[\"BLOCK_ATTRIBUTE\"] = 9] = \"BLOCK_ATTRIBUTE\";\n\t Scope[Scope[\"INLINE_ATTRIBUTE\"] = 5] = \"INLINE_ATTRIBUTE\";\n\t Scope[Scope[\"ANY\"] = 15] = \"ANY\";\n\t})(Scope = exports.Scope || (exports.Scope = {}));\n\t;\n\tfunction create(input, value) {\n\t var match = query(input);\n\t if (match == null) {\n\t throw new ParchmentError(\"Unable to create \" + input + \" blot\");\n\t }\n\t var BlotClass = match;\n\t var node = input instanceof Node ? input : BlotClass.create(value);\n\t return new BlotClass(node, value);\n\t}\n\texports.create = create;\n\tfunction find(node, bubble) {\n\t if (bubble === void 0) { bubble = false; }\n\t if (node == null)\n\t return null;\n\t if (node[exports.DATA_KEY] != null)\n\t return node[exports.DATA_KEY].blot;\n\t if (bubble)\n\t return find(node.parentNode, bubble);\n\t return null;\n\t}\n\texports.find = find;\n\tfunction query(query, scope) {\n\t if (scope === void 0) { scope = Scope.ANY; }\n\t var match;\n\t if (typeof query === 'string') {\n\t match = types[query] || attributes[query];\n\t }\n\t else if (query instanceof Text) {\n\t match = types['text'];\n\t }\n\t else if (typeof query === 'number') {\n\t if (query & Scope.LEVEL & Scope.BLOCK) {\n\t match = types['block'];\n\t }\n\t else if (query & Scope.LEVEL & Scope.INLINE) {\n\t match = types['inline'];\n\t }\n\t }\n\t else if (query instanceof HTMLElement) {\n\t var names = (query.getAttribute('class') || '').split(/\\s+/);\n\t for (var i in names) {\n\t match = classes[names[i]];\n\t if (match)\n\t break;\n\t }\n\t match = match || tags[query.tagName];\n\t }\n\t if (match == null)\n\t return null;\n\t if ((scope & Scope.LEVEL & match.scope) && (scope & Scope.TYPE & match.scope))\n\t return match;\n\t return null;\n\t}\n\texports.query = query;\n\tfunction register() {\n\t var Definitions = [];\n\t for (var _i = 0; _i < arguments.length; _i++) {\n\t Definitions[_i] = arguments[_i];\n\t }\n\t if (Definitions.length > 1) {\n\t return Definitions.map(function (d) {\n\t return register(d);\n\t });\n\t }\n\t var Definition = Definitions[0];\n\t if (typeof Definition.blotName !== 'string' && typeof Definition.attrName !== 'string') {\n\t throw new ParchmentError('Invalid definition');\n\t }\n\t else if (Definition.blotName === 'abstract') {\n\t throw new ParchmentError('Cannot register abstract class');\n\t }\n\t types[Definition.blotName || Definition.attrName] = Definition;\n\t if (typeof Definition.keyName === 'string') {\n\t attributes[Definition.keyName] = Definition;\n\t }\n\t else {\n\t if (Definition.className != null) {\n\t classes[Definition.className] = Definition;\n\t }\n\t if (Definition.tagName != null) {\n\t if (Array.isArray(Definition.tagName)) {\n\t Definition.tagName = Definition.tagName.map(function (tagName) {\n\t return tagName.toUpperCase();\n\t });\n\t }\n\t else {\n\t Definition.tagName = Definition.tagName.toUpperCase();\n\t }\n\t var tagNames = Array.isArray(Definition.tagName) ? Definition.tagName : [Definition.tagName];\n\t tagNames.forEach(function (tag) {\n\t if (tags[tag] == null || Definition.className == null) {\n\t tags[tag] = Definition;\n\t }\n\t });\n\t }\n\t }\n\t return Definition;\n\t}\n\texports.register = register;\n\n\n/***/ },\n/* 7 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tvar store_1 = __webpack_require__(9);\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar FormatBlot = (function (_super) {\n\t __extends(FormatBlot, _super);\n\t function FormatBlot() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t FormatBlot.formats = function (domNode) {\n\t if (typeof this.tagName === 'string') {\n\t return true;\n\t }\n\t else if (Array.isArray(this.tagName)) {\n\t return domNode.tagName.toLowerCase();\n\t }\n\t return undefined;\n\t };\n\t FormatBlot.prototype.attach = function () {\n\t _super.prototype.attach.call(this);\n\t this.attributes = new store_1.default(this.domNode);\n\t };\n\t FormatBlot.prototype.format = function (name, value) {\n\t var format = Registry.query(name);\n\t if (format instanceof attributor_1.default) {\n\t this.attributes.attribute(format, value);\n\t }\n\t else if (value) {\n\t if (format != null && (name !== this.statics.blotName || this.formats()[name] !== value)) {\n\t this.replaceWith(name, value);\n\t }\n\t }\n\t };\n\t FormatBlot.prototype.formats = function () {\n\t var formats = this.attributes.values();\n\t var format = this.statics.formats(this.domNode);\n\t if (format != null) {\n\t formats[this.statics.blotName] = format;\n\t }\n\t return formats;\n\t };\n\t FormatBlot.prototype.replaceWith = function (name, value) {\n\t var replacement = _super.prototype.replaceWith.call(this, name, value);\n\t this.attributes.copy(replacement);\n\t return replacement;\n\t };\n\t FormatBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t _super.prototype.update.call(this, mutations);\n\t if (mutations.some(function (mutation) {\n\t return mutation.target === _this.domNode && mutation.type === 'attributes';\n\t })) {\n\t this.attributes.build();\n\t }\n\t };\n\t FormatBlot.prototype.wrap = function (name, value) {\n\t var wrapper = _super.prototype.wrap.call(this, name, value);\n\t if (wrapper instanceof FormatBlot && wrapper.statics.scope === this.statics.scope) {\n\t this.attributes.move(wrapper);\n\t }\n\t return wrapper;\n\t };\n\t return FormatBlot;\n\t}(container_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = FormatBlot;\n\n\n/***/ },\n/* 8 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar Registry = __webpack_require__(6);\n\tvar Attributor = (function () {\n\t function Attributor(attrName, keyName, options) {\n\t if (options === void 0) { options = {}; }\n\t this.attrName = attrName;\n\t this.keyName = keyName;\n\t var attributeBit = Registry.Scope.TYPE & Registry.Scope.ATTRIBUTE;\n\t if (options.scope != null) {\n\t // Ignore type bits, force attribute bit\n\t this.scope = (options.scope & Registry.Scope.LEVEL) | attributeBit;\n\t }\n\t else {\n\t this.scope = Registry.Scope.ATTRIBUTE;\n\t }\n\t if (options.whitelist != null)\n\t this.whitelist = options.whitelist;\n\t }\n\t Attributor.keys = function (node) {\n\t return [].map.call(node.attributes, function (item) {\n\t return item.name;\n\t });\n\t };\n\t Attributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t node.setAttribute(this.keyName, value);\n\t return true;\n\t };\n\t Attributor.prototype.canAdd = function (node, value) {\n\t var match = Registry.query(node, Registry.Scope.BLOT & (this.scope | Registry.Scope.TYPE));\n\t if (match != null && (this.whitelist == null || this.whitelist.indexOf(value) > -1)) {\n\t return true;\n\t }\n\t return false;\n\t };\n\t Attributor.prototype.remove = function (node) {\n\t node.removeAttribute(this.keyName);\n\t };\n\t Attributor.prototype.value = function (node) {\n\t var value = node.getAttribute(this.keyName);\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return Attributor;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = Attributor;\n\n\n/***/ },\n/* 9 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar attributor_1 = __webpack_require__(8);\n\tvar class_1 = __webpack_require__(10);\n\tvar style_1 = __webpack_require__(11);\n\tvar Registry = __webpack_require__(6);\n\tvar AttributorStore = (function () {\n\t function AttributorStore(domNode) {\n\t this.attributes = {};\n\t this.domNode = domNode;\n\t this.build();\n\t }\n\t AttributorStore.prototype.attribute = function (attribute, value) {\n\t if (value) {\n\t if (attribute.add(this.domNode, value)) {\n\t if (attribute.value(this.domNode) != null) {\n\t this.attributes[attribute.attrName] = attribute;\n\t }\n\t else {\n\t delete this.attributes[attribute.attrName];\n\t }\n\t }\n\t }\n\t else {\n\t attribute.remove(this.domNode);\n\t delete this.attributes[attribute.attrName];\n\t }\n\t };\n\t AttributorStore.prototype.build = function () {\n\t var _this = this;\n\t this.attributes = {};\n\t var attributes = attributor_1.default.keys(this.domNode);\n\t var classes = class_1.default.keys(this.domNode);\n\t var styles = style_1.default.keys(this.domNode);\n\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t var attr = Registry.query(name, Registry.Scope.ATTRIBUTE);\n\t if (attr instanceof attributor_1.default) {\n\t _this.attributes[attr.attrName] = attr;\n\t }\n\t });\n\t };\n\t AttributorStore.prototype.copy = function (target) {\n\t var _this = this;\n\t Object.keys(this.attributes).forEach(function (key) {\n\t var value = _this.attributes[key].value(_this.domNode);\n\t target.format(key, value);\n\t });\n\t };\n\t AttributorStore.prototype.move = function (target) {\n\t var _this = this;\n\t this.copy(target);\n\t Object.keys(this.attributes).forEach(function (key) {\n\t _this.attributes[key].remove(_this.domNode);\n\t });\n\t this.attributes = {};\n\t };\n\t AttributorStore.prototype.values = function () {\n\t var _this = this;\n\t return Object.keys(this.attributes).reduce(function (attributes, name) {\n\t attributes[name] = _this.attributes[name].value(_this.domNode);\n\t return attributes;\n\t }, {});\n\t };\n\t return AttributorStore;\n\t}());\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = AttributorStore;\n\n\n/***/ },\n/* 10 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction match(node, prefix) {\n\t var className = node.getAttribute('class') || '';\n\t return className.split(/\\s+/).filter(function (name) {\n\t return name.indexOf(prefix + \"-\") === 0;\n\t });\n\t}\n\tvar ClassAttributor = (function (_super) {\n\t __extends(ClassAttributor, _super);\n\t function ClassAttributor() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t ClassAttributor.keys = function (node) {\n\t return (node.getAttribute('class') || '').split(/\\s+/).map(function (name) {\n\t return name.split('-').slice(0, -1).join('-');\n\t });\n\t };\n\t ClassAttributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t this.remove(node);\n\t node.classList.add(this.keyName + \"-\" + value);\n\t return true;\n\t };\n\t ClassAttributor.prototype.remove = function (node) {\n\t var matches = match(node, this.keyName);\n\t matches.forEach(function (name) {\n\t node.classList.remove(name);\n\t });\n\t if (node.classList.length === 0) {\n\t node.removeAttribute('class');\n\t }\n\t };\n\t ClassAttributor.prototype.value = function (node) {\n\t var result = match(node, this.keyName)[0] || '';\n\t var value = result.slice(this.keyName.length + 1); // +1 for hyphen\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return ClassAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ClassAttributor;\n\n\n/***/ },\n/* 11 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar attributor_1 = __webpack_require__(8);\n\tfunction camelize(name) {\n\t var parts = name.split('-');\n\t var rest = parts.slice(1).map(function (part) {\n\t return part[0].toUpperCase() + part.slice(1);\n\t }).join('');\n\t return parts[0] + rest;\n\t}\n\tvar StyleAttributor = (function (_super) {\n\t __extends(StyleAttributor, _super);\n\t function StyleAttributor() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t StyleAttributor.keys = function (node) {\n\t return (node.getAttribute('style') || '').split(';').map(function (value) {\n\t var arr = value.split(':');\n\t return arr[0].trim();\n\t });\n\t };\n\t StyleAttributor.prototype.add = function (node, value) {\n\t if (!this.canAdd(node, value))\n\t return false;\n\t node.style[camelize(this.keyName)] = value;\n\t return true;\n\t };\n\t StyleAttributor.prototype.remove = function (node) {\n\t node.style[camelize(this.keyName)] = '';\n\t if (!node.getAttribute('style')) {\n\t node.removeAttribute('style');\n\t }\n\t };\n\t StyleAttributor.prototype.value = function (node) {\n\t var value = node.style[camelize(this.keyName)];\n\t return this.canAdd(node, value) ? value : '';\n\t };\n\t return StyleAttributor;\n\t}(attributor_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = StyleAttributor;\n\n\n/***/ },\n/* 12 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar shadow_1 = __webpack_require__(5);\n\tvar Registry = __webpack_require__(6);\n\tvar LeafBlot = (function (_super) {\n\t __extends(LeafBlot, _super);\n\t function LeafBlot() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t LeafBlot.value = function (domNode) {\n\t return true;\n\t };\n\t LeafBlot.prototype.index = function (node, offset) {\n\t if (node !== this.domNode)\n\t return -1;\n\t return Math.min(offset, 1);\n\t };\n\t LeafBlot.prototype.position = function (index, inclusive) {\n\t var offset = [].indexOf.call(this.parent.domNode.childNodes, this.domNode);\n\t if (index > 0)\n\t offset += 1;\n\t return [this.parent.domNode, offset];\n\t };\n\t LeafBlot.prototype.value = function () {\n\t return _a = {}, _a[this.statics.blotName] = this.statics.value(this.domNode) || true, _a;\n\t var _a;\n\t };\n\t return LeafBlot;\n\t}(shadow_1.default));\n\tLeafBlot.scope = Registry.Scope.INLINE_BLOT;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = LeafBlot;\n\n\n/***/ },\n/* 13 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar container_1 = __webpack_require__(3);\n\tvar Registry = __webpack_require__(6);\n\tvar OBSERVER_CONFIG = {\n\t attributes: true,\n\t characterData: true,\n\t characterDataOldValue: true,\n\t childList: true,\n\t subtree: true\n\t};\n\tvar MAX_OPTIMIZE_ITERATIONS = 100;\n\tvar ScrollBlot = (function (_super) {\n\t __extends(ScrollBlot, _super);\n\t function ScrollBlot(node) {\n\t var _this = _super.call(this, node) || this;\n\t _this.parent = null;\n\t _this.observer = new MutationObserver(function (mutations) {\n\t _this.update(mutations);\n\t });\n\t _this.observer.observe(_this.domNode, OBSERVER_CONFIG);\n\t return _this;\n\t }\n\t ScrollBlot.prototype.detach = function () {\n\t _super.prototype.detach.call(this);\n\t this.observer.disconnect();\n\t };\n\t ScrollBlot.prototype.deleteAt = function (index, length) {\n\t this.update();\n\t if (index === 0 && length === this.length()) {\n\t this.children.forEach(function (child) {\n\t child.remove();\n\t });\n\t }\n\t else {\n\t _super.prototype.deleteAt.call(this, index, length);\n\t }\n\t };\n\t ScrollBlot.prototype.formatAt = function (index, length, name, value) {\n\t this.update();\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t };\n\t ScrollBlot.prototype.insertAt = function (index, value, def) {\n\t this.update();\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t };\n\t ScrollBlot.prototype.optimize = function (mutations) {\n\t var _this = this;\n\t if (mutations === void 0) { mutations = []; }\n\t _super.prototype.optimize.call(this);\n\t // We must modify mutations directly, cannot make copy and then modify\n\t var records = [].slice.call(this.observer.takeRecords());\n\t // Array.push currently seems to be implemented by a non-tail recursive function\n\t // so we cannot just mutations.push.apply(mutations, this.observer.takeRecords());\n\t while (records.length > 0)\n\t mutations.push(records.pop());\n\t // TODO use WeakMap\n\t var mark = function (blot, markParent) {\n\t if (markParent === void 0) { markParent = true; }\n\t if (blot == null || blot === _this)\n\t return;\n\t if (blot.domNode.parentNode == null)\n\t return;\n\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t blot.domNode[Registry.DATA_KEY].mutations = [];\n\t }\n\t if (markParent)\n\t mark(blot.parent);\n\t };\n\t var optimize = function (blot) {\n\t if (blot.domNode[Registry.DATA_KEY] == null || blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t return;\n\t }\n\t if (blot instanceof container_1.default) {\n\t blot.children.forEach(optimize);\n\t }\n\t blot.optimize();\n\t };\n\t var remaining = mutations;\n\t for (var i = 0; remaining.length > 0; i += 1) {\n\t if (i >= MAX_OPTIMIZE_ITERATIONS) {\n\t throw new Error('[Parchment] Maximum optimize iterations reached');\n\t }\n\t remaining.forEach(function (mutation) {\n\t var blot = Registry.find(mutation.target, true);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode === mutation.target) {\n\t if (mutation.type === 'childList') {\n\t mark(Registry.find(mutation.previousSibling, false));\n\t [].forEach.call(mutation.addedNodes, function (node) {\n\t var child = Registry.find(node, false);\n\t mark(child, false);\n\t if (child instanceof container_1.default) {\n\t child.children.forEach(function (grandChild) {\n\t mark(grandChild, false);\n\t });\n\t }\n\t });\n\t }\n\t else if (mutation.type === 'attributes') {\n\t mark(blot.prev);\n\t }\n\t }\n\t mark(blot);\n\t });\n\t this.children.forEach(optimize);\n\t remaining = [].slice.call(this.observer.takeRecords());\n\t records = remaining.slice();\n\t while (records.length > 0)\n\t mutations.push(records.pop());\n\t }\n\t };\n\t ScrollBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t mutations = mutations || this.observer.takeRecords();\n\t // TODO use WeakMap\n\t mutations.map(function (mutation) {\n\t var blot = Registry.find(mutation.target, true);\n\t if (blot == null)\n\t return;\n\t if (blot.domNode[Registry.DATA_KEY].mutations == null) {\n\t blot.domNode[Registry.DATA_KEY].mutations = [mutation];\n\t return blot;\n\t }\n\t else {\n\t blot.domNode[Registry.DATA_KEY].mutations.push(mutation);\n\t return null;\n\t }\n\t }).forEach(function (blot) {\n\t if (blot == null || blot === _this || blot.domNode[Registry.DATA_KEY] == null)\n\t return;\n\t blot.update(blot.domNode[Registry.DATA_KEY].mutations || []);\n\t });\n\t if (this.domNode[Registry.DATA_KEY].mutations != null) {\n\t _super.prototype.update.call(this, this.domNode[Registry.DATA_KEY].mutations);\n\t }\n\t this.optimize(mutations);\n\t };\n\t return ScrollBlot;\n\t}(container_1.default));\n\tScrollBlot.blotName = 'scroll';\n\tScrollBlot.defaultChild = 'block';\n\tScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n\tScrollBlot.tagName = 'DIV';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = ScrollBlot;\n\n\n/***/ },\n/* 14 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\t// Shallow object comparison\n\tfunction isEqual(obj1, obj2) {\n\t if (Object.keys(obj1).length !== Object.keys(obj2).length)\n\t return false;\n\t for (var prop in obj1) {\n\t if (obj1[prop] !== obj2[prop])\n\t return false;\n\t }\n\t return true;\n\t}\n\tvar InlineBlot = (function (_super) {\n\t __extends(InlineBlot, _super);\n\t function InlineBlot() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t InlineBlot.formats = function (domNode) {\n\t if (domNode.tagName === InlineBlot.tagName)\n\t return undefined;\n\t return _super.formats.call(this, domNode);\n\t };\n\t InlineBlot.prototype.format = function (name, value) {\n\t var _this = this;\n\t if (name === this.statics.blotName && !value) {\n\t this.children.forEach(function (child) {\n\t if (!(child instanceof format_1.default)) {\n\t child = child.wrap(InlineBlot.blotName, true);\n\t }\n\t _this.attributes.copy(child);\n\t });\n\t this.unwrap();\n\t }\n\t else {\n\t _super.prototype.format.call(this, name, value);\n\t }\n\t };\n\t InlineBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (this.formats()[name] != null || Registry.query(name, Registry.Scope.ATTRIBUTE)) {\n\t var blot = this.isolate(index, length);\n\t blot.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t InlineBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t var formats = this.formats();\n\t if (Object.keys(formats).length === 0) {\n\t return this.unwrap(); // unformatted span\n\t }\n\t var next = this.next;\n\t if (next instanceof InlineBlot && next.prev === this && isEqual(formats, next.formats())) {\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t };\n\t return InlineBlot;\n\t}(format_1.default));\n\tInlineBlot.blotName = 'inline';\n\tInlineBlot.scope = Registry.Scope.INLINE_BLOT;\n\tInlineBlot.tagName = 'SPAN';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = InlineBlot;\n\n\n/***/ },\n/* 15 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar format_1 = __webpack_require__(7);\n\tvar Registry = __webpack_require__(6);\n\tvar BlockBlot = (function (_super) {\n\t __extends(BlockBlot, _super);\n\t function BlockBlot() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t BlockBlot.formats = function (domNode) {\n\t var tagName = Registry.query(BlockBlot.blotName).tagName;\n\t if (domNode.tagName === tagName)\n\t return undefined;\n\t return _super.formats.call(this, domNode);\n\t };\n\t BlockBlot.prototype.format = function (name, value) {\n\t if (Registry.query(name, Registry.Scope.BLOCK) == null) {\n\t return;\n\t }\n\t else if (name === this.statics.blotName && !value) {\n\t this.replaceWith(BlockBlot.blotName);\n\t }\n\t else {\n\t _super.prototype.format.call(this, name, value);\n\t }\n\t };\n\t BlockBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n\t this.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t BlockBlot.prototype.insertAt = function (index, value, def) {\n\t if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n\t // Insert text or inline\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t }\n\t else {\n\t var after = this.split(index);\n\t var blot = Registry.create(value, def);\n\t after.parent.insertBefore(blot, after);\n\t }\n\t };\n\t return BlockBlot;\n\t}(format_1.default));\n\tBlockBlot.blotName = 'block';\n\tBlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n\tBlockBlot.tagName = 'P';\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = BlockBlot;\n\n\n/***/ },\n/* 16 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar EmbedBlot = (function (_super) {\n\t __extends(EmbedBlot, _super);\n\t function EmbedBlot() {\n\t return _super.apply(this, arguments) || this;\n\t }\n\t EmbedBlot.formats = function (domNode) {\n\t return undefined;\n\t };\n\t EmbedBlot.prototype.format = function (name, value) {\n\t // super.formatAt wraps, which is what we want in general,\n\t // but this allows subclasses to overwrite for formats\n\t // that just apply to particular embeds\n\t _super.prototype.formatAt.call(this, 0, this.length(), name, value);\n\t };\n\t EmbedBlot.prototype.formatAt = function (index, length, name, value) {\n\t if (index === 0 && length === this.length()) {\n\t this.format(name, value);\n\t }\n\t else {\n\t _super.prototype.formatAt.call(this, index, length, name, value);\n\t }\n\t };\n\t EmbedBlot.prototype.formats = function () {\n\t return this.statics.formats(this.domNode);\n\t };\n\t return EmbedBlot;\n\t}(leaf_1.default));\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = EmbedBlot;\n\n\n/***/ },\n/* 17 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t\"use strict\";\n\tvar __extends = (this && this.__extends) || function (d, b) {\n\t for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n\t function __() { this.constructor = d; }\n\t d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n\t};\n\tvar leaf_1 = __webpack_require__(12);\n\tvar Registry = __webpack_require__(6);\n\tvar TextBlot = (function (_super) {\n\t __extends(TextBlot, _super);\n\t function TextBlot(node) {\n\t var _this = _super.call(this, node) || this;\n\t _this.text = _this.statics.value(_this.domNode);\n\t return _this;\n\t }\n\t TextBlot.create = function (value) {\n\t return document.createTextNode(value);\n\t };\n\t TextBlot.value = function (domNode) {\n\t return domNode.data;\n\t };\n\t TextBlot.prototype.deleteAt = function (index, length) {\n\t this.domNode.data = this.text = this.text.slice(0, index) + this.text.slice(index + length);\n\t };\n\t TextBlot.prototype.index = function (node, offset) {\n\t if (this.domNode === node) {\n\t return offset;\n\t }\n\t return -1;\n\t };\n\t TextBlot.prototype.insertAt = function (index, value, def) {\n\t if (def == null) {\n\t this.text = this.text.slice(0, index) + value + this.text.slice(index);\n\t this.domNode.data = this.text;\n\t }\n\t else {\n\t _super.prototype.insertAt.call(this, index, value, def);\n\t }\n\t };\n\t TextBlot.prototype.length = function () {\n\t return this.text.length;\n\t };\n\t TextBlot.prototype.optimize = function () {\n\t _super.prototype.optimize.call(this);\n\t this.text = this.statics.value(this.domNode);\n\t if (this.text.length === 0) {\n\t this.remove();\n\t }\n\t else if (this.next instanceof TextBlot && this.next.prev === this) {\n\t this.insertAt(this.length(), this.next.value());\n\t this.next.remove();\n\t }\n\t };\n\t TextBlot.prototype.position = function (index, inclusive) {\n\t if (inclusive === void 0) { inclusive = false; }\n\t return [this.domNode, index];\n\t };\n\t TextBlot.prototype.split = function (index, force) {\n\t if (force === void 0) { force = false; }\n\t if (!force) {\n\t if (index === 0)\n\t return this;\n\t if (index === this.length())\n\t return this.next;\n\t }\n\t var after = Registry.create(this.domNode.splitText(index));\n\t this.parent.insertBefore(after, this.next);\n\t this.text = this.statics.value(this.domNode);\n\t return after;\n\t };\n\t TextBlot.prototype.update = function (mutations) {\n\t var _this = this;\n\t if (mutations.some(function (mutation) {\n\t return mutation.type === 'characterData' && mutation.target === _this.domNode;\n\t })) {\n\t this.text = this.statics.value(this.domNode);\n\t }\n\t };\n\t TextBlot.prototype.value = function () {\n\t return this.text;\n\t };\n\t return TextBlot;\n\t}(leaf_1.default));\n\tTextBlot.blotName = 'text';\n\tTextBlot.scope = Registry.Scope.INLINE_BLOT;\n\tObject.defineProperty(exports, \"__esModule\", { value: true });\n\texports.default = TextBlot;\n\n\n/***/ },\n/* 18 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.overload = exports.expandConfig = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\t__webpack_require__(19);\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _editor = __webpack_require__(27);\n\t\n\tvar _editor2 = _interopRequireDefault(_editor);\n\t\n\tvar _emitter3 = __webpack_require__(35);\n\t\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\tvar _module = __webpack_require__(39);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _selection = __webpack_require__(40);\n\t\n\tvar _selection2 = _interopRequireDefault(_selection);\n\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _logger = __webpack_require__(37);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _theme = __webpack_require__(41);\n\t\n\tvar _theme2 = _interopRequireDefault(_theme);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar debug = (0, _logger2.default)('quill');\n\t\n\tvar Quill = function () {\n\t _createClass(Quill, null, [{\n\t key: 'debug',\n\t value: function debug(limit) {\n\t if (limit === true) {\n\t limit = 'log';\n\t }\n\t _logger2.default.level(limit);\n\t }\n\t }, {\n\t key: 'import',\n\t value: function _import(name) {\n\t if (this.imports[name] == null) {\n\t debug.error('Cannot import ' + name + '. Are you sure it was registered?');\n\t }\n\t return this.imports[name];\n\t }\n\t }, {\n\t key: 'register',\n\t value: function register(path, target) {\n\t var _this = this;\n\t\n\t var overwrite = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\n\t if (typeof path !== 'string') {\n\t var name = path.attrName || path.blotName;\n\t if (typeof name === 'string') {\n\t // register(Blot | Attributor, overwrite)\n\t this.register('formats/' + name, path, target);\n\t } else {\n\t Object.keys(path).forEach(function (key) {\n\t _this.register(key, path[key], target);\n\t });\n\t }\n\t } else {\n\t if (this.imports[path] != null && !overwrite) {\n\t debug.warn('Overwriting ' + path + ' with', target);\n\t }\n\t this.imports[path] = target;\n\t if ((path.startsWith('blots/') || path.startsWith('formats/')) && target.blotName !== 'abstract') {\n\t _parchment2.default.register(target);\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t function Quill(container) {\n\t var _this2 = this;\n\t\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t _classCallCheck(this, Quill);\n\t\n\t this.options = expandConfig(container, options);\n\t this.container = this.options.container;\n\t this.scrollingContainer = this.options.scrollingContainer || document.body;\n\t if (this.container == null) {\n\t return debug.error('Invalid Quill container', container);\n\t }\n\t if (this.options.debug) {\n\t Quill.debug(this.options.debug);\n\t }\n\t var html = this.container.innerHTML.trim();\n\t this.container.classList.add('ql-container');\n\t this.container.innerHTML = '';\n\t this.root = this.addContainer('ql-editor');\n\t this.root.classList.add('ql-blank');\n\t this.emitter = new _emitter4.default();\n\t this.scroll = _parchment2.default.create(this.root, {\n\t emitter: this.emitter,\n\t whitelist: this.options.formats\n\t });\n\t this.editor = new _editor2.default(this.scroll);\n\t this.selection = new _selection2.default(this.scroll, this.emitter);\n\t this.theme = new this.options.theme(this, this.options);\n\t this.keyboard = this.theme.addModule('keyboard');\n\t this.clipboard = this.theme.addModule('clipboard');\n\t this.history = this.theme.addModule('history');\n\t this.theme.init();\n\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type) {\n\t if (type === _emitter4.default.events.TEXT_CHANGE) {\n\t _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\n\t }\n\t });\n\t this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, function (source, mutations) {\n\t var range = _this2.selection.lastRange;\n\t var index = range && range.length === 0 ? range.index : undefined;\n\t modify.call(_this2, function () {\n\t return _this2.editor.update(null, mutations, index);\n\t }, source);\n\t });\n\t var contents = this.clipboard.convert('<div class=\\'ql-editor\\' style=\"white-space: normal;\">' + html + '<p><br></p></div>');\n\t this.setContents(contents);\n\t this.history.clear();\n\t if (this.options.placeholder) {\n\t this.root.setAttribute('data-placeholder', this.options.placeholder);\n\t }\n\t if (this.options.readOnly) {\n\t this.disable();\n\t }\n\t }\n\t\n\t _createClass(Quill, [{\n\t key: 'addContainer',\n\t value: function addContainer(container) {\n\t var refNode = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t if (typeof container === 'string') {\n\t var className = container;\n\t container = document.createElement('div');\n\t container.classList.add(className);\n\t }\n\t this.container.insertBefore(container, refNode);\n\t return container;\n\t }\n\t }, {\n\t key: 'blur',\n\t value: function blur() {\n\t this.selection.setRange(null);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length, source) {\n\t var _this3 = this;\n\t\n\t var _overload = overload(index, length, source);\n\t\n\t var _overload2 = _slicedToArray(_overload, 4);\n\t\n\t index = _overload2[0];\n\t length = _overload2[1];\n\t source = _overload2[3];\n\t\n\t return modify.call(this, function () {\n\t return _this3.editor.deleteText(index, length);\n\t }, source, index, -1 * length);\n\t }\n\t }, {\n\t key: 'disable',\n\t value: function disable() {\n\t this.enable(false);\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t this.scroll.enable(enabled);\n\t this.container.classList.toggle('ql-disabled', !enabled);\n\t if (!enabled) {\n\t this.blur();\n\t }\n\t }\n\t }, {\n\t key: 'focus',\n\t value: function focus() {\n\t var scrollTop = this.scrollingContainer.scrollTop;\n\t this.selection.focus();\n\t this.scrollingContainer.scrollTop = scrollTop;\n\t this.selection.scrollIntoView();\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var _this4 = this;\n\t\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\t\n\t return modify.call(this, function () {\n\t var range = _this4.getSelection(true);\n\t var change = new _quillDelta2.default();\n\t if (range == null) {\n\t return change;\n\t } else if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t change = _this4.editor.formatLine(range.index, range.length, _defineProperty({}, name, value));\n\t } else if (range.length === 0) {\n\t _this4.selection.format(name, value);\n\t return change;\n\t } else {\n\t change = _this4.editor.formatText(range.index, range.length, _defineProperty({}, name, value));\n\t }\n\t _this4.setSelection(range, _emitter4.default.sources.SILENT);\n\t return change;\n\t }, source);\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length, name, value, source) {\n\t var _this5 = this;\n\t\n\t var formats = void 0;\n\t\n\t var _overload3 = overload(index, length, name, value, source);\n\t\n\t var _overload4 = _slicedToArray(_overload3, 4);\n\t\n\t index = _overload4[0];\n\t length = _overload4[1];\n\t formats = _overload4[2];\n\t source = _overload4[3];\n\t\n\t return modify.call(this, function () {\n\t return _this5.editor.formatLine(index, length, formats);\n\t }, source, index, 0);\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length, name, value, source) {\n\t var _this6 = this;\n\t\n\t var formats = void 0;\n\t\n\t var _overload5 = overload(index, length, name, value, source);\n\t\n\t var _overload6 = _slicedToArray(_overload5, 4);\n\t\n\t index = _overload6[0];\n\t length = _overload6[1];\n\t formats = _overload6[2];\n\t source = _overload6[3];\n\t\n\t return modify.call(this, function () {\n\t return _this6.editor.formatText(index, length, formats);\n\t }, source, index, 0);\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t if (typeof index === 'number') {\n\t return this.selection.getBounds(index, length);\n\t } else {\n\t return this.selection.getBounds(index.index, index.length);\n\t }\n\t }\n\t }, {\n\t key: 'getContents',\n\t value: function getContents() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\t\n\t var _overload7 = overload(index, length);\n\t\n\t var _overload8 = _slicedToArray(_overload7, 2);\n\t\n\t index = _overload8[0];\n\t length = _overload8[1];\n\t\n\t return this.editor.getContents(index, length);\n\t }\n\t }, {\n\t key: 'getFormat',\n\t value: function getFormat() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.getSelection();\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t if (typeof index === 'number') {\n\t return this.editor.getFormat(index, length);\n\t } else {\n\t return this.editor.getFormat(index.index, index.length);\n\t }\n\t }\n\t }, {\n\t key: 'getLength',\n\t value: function getLength() {\n\t return this.scroll.length();\n\t }\n\t }, {\n\t key: 'getModule',\n\t value: function getModule(name) {\n\t return this.theme.modules[name];\n\t }\n\t }, {\n\t key: 'getSelection',\n\t value: function getSelection() {\n\t var focus = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;\n\t\n\t if (focus) this.focus();\n\t this.update(); // Make sure we access getRange with editor in consistent state\n\t return this.selection.getRange()[0];\n\t }\n\t }, {\n\t key: 'getText',\n\t value: function getText() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.getLength() - index;\n\t\n\t var _overload9 = overload(index, length);\n\t\n\t var _overload10 = _slicedToArray(_overload9, 2);\n\t\n\t index = _overload10[0];\n\t length = _overload10[1];\n\t\n\t return this.editor.getText(index, length);\n\t }\n\t }, {\n\t key: 'hasFocus',\n\t value: function hasFocus() {\n\t return this.selection.hasFocus();\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t var _this7 = this;\n\t\n\t var source = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : Quill.sources.API;\n\t\n\t return modify.call(this, function () {\n\t return _this7.editor.insertEmbed(index, embed, value);\n\t }, source, index);\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text, name, value, source) {\n\t var _this8 = this;\n\t\n\t var formats = void 0;\n\t\n\t var _overload11 = overload(index, 0, name, value, source);\n\t\n\t var _overload12 = _slicedToArray(_overload11, 4);\n\t\n\t index = _overload12[0];\n\t formats = _overload12[2];\n\t source = _overload12[3];\n\t\n\t return modify.call(this, function () {\n\t return _this8.editor.insertText(index, text, formats);\n\t }, source, index, text.length);\n\t }\n\t }, {\n\t key: 'isEnabled',\n\t value: function isEnabled() {\n\t return !this.container.classList.contains('ql-disabled');\n\t }\n\t }, {\n\t key: 'off',\n\t value: function off() {\n\t return this.emitter.off.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'on',\n\t value: function on() {\n\t return this.emitter.on.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'once',\n\t value: function once() {\n\t return this.emitter.once.apply(this.emitter, arguments);\n\t }\n\t }, {\n\t key: 'pasteHTML',\n\t value: function pasteHTML(index, html, source) {\n\t this.clipboard.dangerouslyPasteHTML(index, html, source);\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length, source) {\n\t var _this9 = this;\n\t\n\t var _overload13 = overload(index, length, source);\n\t\n\t var _overload14 = _slicedToArray(_overload13, 4);\n\t\n\t index = _overload14[0];\n\t length = _overload14[1];\n\t source = _overload14[3];\n\t\n\t return modify.call(this, function () {\n\t return _this9.editor.removeFormat(index, length);\n\t }, source, index);\n\t }\n\t }, {\n\t key: 'setContents',\n\t value: function setContents(delta) {\n\t var _this10 = this;\n\t\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t return modify.call(this, function () {\n\t delta = new _quillDelta2.default(delta);\n\t var length = _this10.getLength();\n\t var deleted = _this10.editor.deleteText(0, length);\n\t var applied = _this10.editor.applyDelta(delta);\n\t var lastOp = applied.ops[applied.ops.length - 1];\n\t if (lastOp != null && typeof lastOp.insert === 'string' && lastOp.insert[lastOp.insert.length - 1] === '\\n') {\n\t _this10.editor.deleteText(_this10.getLength() - 1, 1);\n\t applied.delete(1);\n\t }\n\t var ret = deleted.compose(applied);\n\t return ret;\n\t }, source);\n\t }\n\t }, {\n\t key: 'setSelection',\n\t value: function setSelection(index, length, source) {\n\t if (index == null) {\n\t this.selection.setRange(null, length || Quill.sources.API);\n\t } else {\n\t var _overload15 = overload(index, length, source);\n\t\n\t var _overload16 = _slicedToArray(_overload15, 4);\n\t\n\t index = _overload16[0];\n\t length = _overload16[1];\n\t source = _overload16[3];\n\t\n\t this.selection.setRange(new _selection.Range(index, length), source);\n\t }\n\t this.selection.scrollIntoView();\n\t }\n\t }, {\n\t key: 'setText',\n\t value: function setText(text) {\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t var delta = new _quillDelta2.default().insert(text);\n\t return this.setContents(delta, source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\t\n\t var change = this.scroll.update(source); // Will update selection before selection.update() does if text changes\n\t this.selection.update(source);\n\t return change;\n\t }\n\t }, {\n\t key: 'updateContents',\n\t value: function updateContents(delta) {\n\t var _this11 = this;\n\t\n\t var source = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : _emitter4.default.sources.API;\n\t\n\t return modify.call(this, function () {\n\t delta = new _quillDelta2.default(delta);\n\t return _this11.editor.applyDelta(delta, source);\n\t }, source, true);\n\t }\n\t }]);\n\t\n\t return Quill;\n\t}();\n\t\n\tQuill.DEFAULTS = {\n\t bounds: null,\n\t formats: null,\n\t modules: {},\n\t placeholder: '',\n\t readOnly: false,\n\t scrollingContainer: null,\n\t strict: true,\n\t theme: 'default'\n\t};\n\tQuill.events = _emitter4.default.events;\n\tQuill.sources = _emitter4.default.sources;\n\t// eslint-disable-next-line no-undef\n\tQuill.version = false ? 'dev' : (\"1.1.8\");\n\t\n\tQuill.imports = {\n\t 'delta': _quillDelta2.default,\n\t 'parchment': _parchment2.default,\n\t 'core/module': _module2.default,\n\t 'core/theme': _theme2.default\n\t};\n\t\n\tfunction expandConfig(container, userConfig) {\n\t userConfig = (0, _extend2.default)(true, {\n\t container: container,\n\t modules: {\n\t clipboard: true,\n\t keyboard: true,\n\t history: true\n\t }\n\t }, userConfig);\n\t if (!userConfig.theme || userConfig.theme === Quill.DEFAULTS.theme) {\n\t userConfig.theme = _theme2.default;\n\t } else {\n\t userConfig.theme = Quill.import('themes/' + userConfig.theme);\n\t if (userConfig.theme == null) {\n\t throw new Error('Invalid theme ' + userConfig.theme + '. Did you register it?');\n\t }\n\t }\n\t var themeConfig = (0, _extend2.default)(true, {}, userConfig.theme.DEFAULTS);\n\t [themeConfig, userConfig].forEach(function (config) {\n\t config.modules = config.modules || {};\n\t Object.keys(config.modules).forEach(function (module) {\n\t if (config.modules[module] === true) {\n\t config.modules[module] = {};\n\t }\n\t });\n\t });\n\t var moduleNames = Object.keys(themeConfig.modules).concat(Object.keys(userConfig.modules));\n\t var moduleConfig = moduleNames.reduce(function (config, name) {\n\t var moduleClass = Quill.import('modules/' + name);\n\t if (moduleClass == null) {\n\t debug.error('Cannot load ' + name + ' module. Are you sure you registered it?');\n\t } else {\n\t config[name] = moduleClass.DEFAULTS || {};\n\t }\n\t return config;\n\t }, {});\n\t // Special case toolbar shorthand\n\t if (userConfig.modules != null && userConfig.modules.toolbar && userConfig.modules.toolbar.constructor !== Object) {\n\t userConfig.modules.toolbar = {\n\t container: userConfig.modules.toolbar\n\t };\n\t }\n\t userConfig = (0, _extend2.default)(true, {}, Quill.DEFAULTS, { modules: moduleConfig }, themeConfig, userConfig);\n\t ['bounds', 'container', 'scrollingContainer'].forEach(function (key) {\n\t if (typeof userConfig[key] === 'string') {\n\t userConfig[key] = document.querySelector(userConfig[key]);\n\t }\n\t });\n\t userConfig.modules = Object.keys(userConfig.modules).reduce(function (config, name) {\n\t if (userConfig.modules[name]) {\n\t config[name] = userConfig.modules[name];\n\t }\n\t return config;\n\t }, {});\n\t return userConfig;\n\t}\n\t\n\t// Handle selection preservation and TEXT_CHANGE emission\n\t// common to modification APIs\n\tfunction modify(modifier, source, index, shift) {\n\t if (this.options.strict && !this.isEnabled() && source === _emitter4.default.sources.USER) {\n\t return new _quillDelta2.default();\n\t }\n\t var range = index == null ? null : this.getSelection();\n\t var oldDelta = this.editor.delta;\n\t var change = modifier();\n\t if (range != null && source === _emitter4.default.sources.USER) {\n\t if (index === true) index = range.index;\n\t if (shift == null) {\n\t range = shiftRange(range, change, source);\n\t } else if (shift !== 0) {\n\t range = shiftRange(range, index, shift, source);\n\t }\n\t this.setSelection(range, _emitter4.default.sources.SILENT);\n\t }\n\t if (change.length() > 0) {\n\t var _emitter;\n\t\n\t var args = [_emitter4.default.events.TEXT_CHANGE, change, oldDelta, source];\n\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t var _emitter2;\n\t\n\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t }\n\t }\n\t return change;\n\t}\n\t\n\tfunction overload(index, length, name, value, source) {\n\t var formats = {};\n\t if (typeof index.index === 'number' && typeof index.length === 'number') {\n\t // Allow for throwaway end (used by insertText/insertEmbed)\n\t if (typeof length !== 'number') {\n\t source = value, value = name, name = length, length = index.length, index = index.index;\n\t } else {\n\t length = index.length, index = index.index;\n\t }\n\t } else if (typeof length !== 'number') {\n\t source = value, value = name, name = length, length = 0;\n\t }\n\t // Handle format being object, two format name/value strings or excluded\n\t if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {\n\t formats = name;\n\t source = value;\n\t } else if (typeof name === 'string') {\n\t if (value != null) {\n\t formats[name] = value;\n\t } else {\n\t source = name;\n\t }\n\t }\n\t // Handle optional source\n\t source = source || _emitter4.default.sources.API;\n\t return [index, length, formats, source];\n\t}\n\t\n\tfunction shiftRange(range, index, length, source) {\n\t if (range == null) return null;\n\t var start = void 0,\n\t end = void 0;\n\t if (index instanceof _quillDelta2.default) {\n\t var _map = [range.index, range.index + range.length].map(function (pos) {\n\t return index.transformPosition(pos, source === _emitter4.default.sources.USER);\n\t });\n\t\n\t var _map2 = _slicedToArray(_map, 2);\n\t\n\t start = _map2[0];\n\t end = _map2[1];\n\t } else {\n\t var _map3 = [range.index, range.index + range.length].map(function (pos) {\n\t if (pos < index || pos === index && source !== _emitter4.default.sources.USER) return pos;\n\t if (length >= 0) {\n\t return pos + length;\n\t } else {\n\t return Math.max(index, pos + length);\n\t }\n\t });\n\t\n\t var _map4 = _slicedToArray(_map3, 2);\n\t\n\t start = _map4[0];\n\t end = _map4[1];\n\t }\n\t return new _selection.Range(start, end - start);\n\t}\n\t\n\texports.expandConfig = expandConfig;\n\texports.overload = overload;\n\texports.default = Quill;\n\n/***/ },\n/* 19 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar elem = document.createElement('div');\n\telem.classList.toggle('test-class', false);\n\tif (elem.classList.contains('test-class')) {\n\t (function () {\n\t var _toggle = DOMTokenList.prototype.toggle;\n\t DOMTokenList.prototype.toggle = function (token, force) {\n\t if (arguments.length > 1 && !this.contains(token) === !force) {\n\t return force;\n\t } else {\n\t return _toggle.call(this, token);\n\t }\n\t };\n\t })();\n\t}\n\t\n\tif (!String.prototype.startsWith) {\n\t String.prototype.startsWith = function (searchString, position) {\n\t position = position || 0;\n\t return this.substr(position, searchString.length) === searchString;\n\t };\n\t}\n\t\n\tif (!String.prototype.endsWith) {\n\t String.prototype.endsWith = function (searchString, position) {\n\t var subjectString = this.toString();\n\t if (typeof position !== 'number' || !isFinite(position) || Math.floor(position) !== position || position > subjectString.length) {\n\t position = subjectString.length;\n\t }\n\t position -= searchString.length;\n\t var lastIndex = subjectString.indexOf(searchString, position);\n\t return lastIndex !== -1 && lastIndex === position;\n\t };\n\t}\n\t\n\tif (!Array.prototype.find) {\n\t Object.defineProperty(Array.prototype, \"find\", {\n\t value: function value(predicate) {\n\t if (this === null) {\n\t throw new TypeError('Array.prototype.find called on null or undefined');\n\t }\n\t if (typeof predicate !== 'function') {\n\t throw new TypeError('predicate must be a function');\n\t }\n\t var list = Object(this);\n\t var length = list.length >>> 0;\n\t var thisArg = arguments[1];\n\t var value;\n\t\n\t for (var i = 0; i < length; i++) {\n\t value = list[i];\n\t if (predicate.call(thisArg, value, i, list)) {\n\t return value;\n\t }\n\t }\n\t return undefined;\n\t }\n\t });\n\t}\n\t\n\t// Disable resizing in Firefox\n\tdocument.addEventListener(\"DOMContentLoaded\", function () {\n\t document.execCommand(\"enableObjectResizing\", false, false);\n\t});\n\n/***/ },\n/* 20 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar diff = __webpack_require__(21);\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\tvar op = __webpack_require__(26);\n\t\n\t\n\tvar NULL_CHARACTER = String.fromCharCode(0); // Placeholder char for embed in diff()\n\t\n\t\n\tvar Delta = function (ops) {\n\t // Assume we are given a well formed ops\n\t if (Array.isArray(ops)) {\n\t this.ops = ops;\n\t } else if (ops != null && Array.isArray(ops.ops)) {\n\t this.ops = ops.ops;\n\t } else {\n\t this.ops = [];\n\t }\n\t};\n\t\n\t\n\tDelta.prototype.insert = function (text, attributes) {\n\t var newOp = {};\n\t if (text.length === 0) return this;\n\t newOp.insert = text;\n\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t newOp.attributes = attributes;\n\t }\n\t return this.push(newOp);\n\t};\n\t\n\tDelta.prototype['delete'] = function (length) {\n\t if (length <= 0) return this;\n\t return this.push({ 'delete': length });\n\t};\n\t\n\tDelta.prototype.retain = function (length, attributes) {\n\t if (length <= 0) return this;\n\t var newOp = { retain: length };\n\t if (attributes != null && typeof attributes === 'object' && Object.keys(attributes).length > 0) {\n\t newOp.attributes = attributes;\n\t }\n\t return this.push(newOp);\n\t};\n\t\n\tDelta.prototype.push = function (newOp) {\n\t var index = this.ops.length;\n\t var lastOp = this.ops[index - 1];\n\t newOp = extend(true, {}, newOp);\n\t if (typeof lastOp === 'object') {\n\t if (typeof newOp['delete'] === 'number' && typeof lastOp['delete'] === 'number') {\n\t this.ops[index - 1] = { 'delete': lastOp['delete'] + newOp['delete'] };\n\t return this;\n\t }\n\t // Since it does not matter if we insert before or after deleting at the same index,\n\t // always prefer to insert first\n\t if (typeof lastOp['delete'] === 'number' && newOp.insert != null) {\n\t index -= 1;\n\t lastOp = this.ops[index - 1];\n\t if (typeof lastOp !== 'object') {\n\t this.ops.unshift(newOp);\n\t return this;\n\t }\n\t }\n\t if (equal(newOp.attributes, lastOp.attributes)) {\n\t if (typeof newOp.insert === 'string' && typeof lastOp.insert === 'string') {\n\t this.ops[index - 1] = { insert: lastOp.insert + newOp.insert };\n\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t return this;\n\t } else if (typeof newOp.retain === 'number' && typeof lastOp.retain === 'number') {\n\t this.ops[index - 1] = { retain: lastOp.retain + newOp.retain };\n\t if (typeof newOp.attributes === 'object') this.ops[index - 1].attributes = newOp.attributes\n\t return this;\n\t }\n\t }\n\t }\n\t if (index === this.ops.length) {\n\t this.ops.push(newOp);\n\t } else {\n\t this.ops.splice(index, 0, newOp);\n\t }\n\t return this;\n\t};\n\t\n\tDelta.prototype.filter = function (predicate) {\n\t return this.ops.filter(predicate);\n\t};\n\t\n\tDelta.prototype.forEach = function (predicate) {\n\t this.ops.forEach(predicate);\n\t};\n\t\n\tDelta.prototype.map = function (predicate) {\n\t return this.ops.map(predicate);\n\t};\n\t\n\tDelta.prototype.partition = function (predicate) {\n\t var passed = [], failed = [];\n\t this.forEach(function(op) {\n\t var target = predicate(op) ? passed : failed;\n\t target.push(op);\n\t });\n\t return [passed, failed];\n\t};\n\t\n\tDelta.prototype.reduce = function (predicate, initial) {\n\t return this.ops.reduce(predicate, initial);\n\t};\n\t\n\tDelta.prototype.chop = function () {\n\t var lastOp = this.ops[this.ops.length - 1];\n\t if (lastOp && lastOp.retain && !lastOp.attributes) {\n\t this.ops.pop();\n\t }\n\t return this;\n\t};\n\t\n\tDelta.prototype.length = function () {\n\t return this.reduce(function (length, elem) {\n\t return length + op.length(elem);\n\t }, 0);\n\t};\n\t\n\tDelta.prototype.slice = function (start, end) {\n\t start = start || 0;\n\t if (typeof end !== 'number') end = Infinity;\n\t var ops = [];\n\t var iter = op.iterator(this.ops);\n\t var index = 0;\n\t while (index < end && iter.hasNext()) {\n\t var nextOp;\n\t if (index < start) {\n\t nextOp = iter.next(start - index);\n\t } else {\n\t nextOp = iter.next(end - index);\n\t ops.push(nextOp);\n\t }\n\t index += op.length(nextOp);\n\t }\n\t return new Delta(ops);\n\t};\n\t\n\t\n\tDelta.prototype.compose = function (other) {\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t var delta = new Delta();\n\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t if (otherIter.peekType() === 'insert') {\n\t delta.push(otherIter.next());\n\t } else if (thisIter.peekType() === 'delete') {\n\t delta.push(thisIter.next());\n\t } else {\n\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t var thisOp = thisIter.next(length);\n\t var otherOp = otherIter.next(length);\n\t if (typeof otherOp.retain === 'number') {\n\t var newOp = {};\n\t if (typeof thisOp.retain === 'number') {\n\t newOp.retain = length;\n\t } else {\n\t newOp.insert = thisOp.insert;\n\t }\n\t // Preserve null when composing with a retain, otherwise remove it for inserts\n\t var attributes = op.attributes.compose(thisOp.attributes, otherOp.attributes, typeof thisOp.retain === 'number');\n\t if (attributes) newOp.attributes = attributes;\n\t delta.push(newOp);\n\t // Other op should be delete, we could be an insert or retain\n\t // Insert + delete cancels out\n\t } else if (typeof otherOp['delete'] === 'number' && typeof thisOp.retain === 'number') {\n\t delta.push(otherOp);\n\t }\n\t }\n\t }\n\t return delta.chop();\n\t};\n\t\n\tDelta.prototype.concat = function (other) {\n\t var delta = new Delta(this.ops.slice());\n\t if (other.ops.length > 0) {\n\t delta.push(other.ops[0]);\n\t delta.ops = delta.ops.concat(other.ops.slice(1));\n\t }\n\t return delta;\n\t};\n\t\n\tDelta.prototype.diff = function (other, index) {\n\t if (this.ops === other.ops) {\n\t return new Delta();\n\t }\n\t var strings = [this, other].map(function (delta) {\n\t return delta.map(function (op) {\n\t if (op.insert != null) {\n\t return typeof op.insert === 'string' ? op.insert : NULL_CHARACTER;\n\t }\n\t var prep = (ops === other.ops) ? 'on' : 'with';\n\t throw new Error('diff() called ' + prep + ' non-document');\n\t }).join('');\n\t });\n\t var delta = new Delta();\n\t var diffResult = diff(strings[0], strings[1], index);\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t diffResult.forEach(function (component) {\n\t var length = component[1].length;\n\t while (length > 0) {\n\t var opLength = 0;\n\t switch (component[0]) {\n\t case diff.INSERT:\n\t opLength = Math.min(otherIter.peekLength(), length);\n\t delta.push(otherIter.next(opLength));\n\t break;\n\t case diff.DELETE:\n\t opLength = Math.min(length, thisIter.peekLength());\n\t thisIter.next(opLength);\n\t delta['delete'](opLength);\n\t break;\n\t case diff.EQUAL:\n\t opLength = Math.min(thisIter.peekLength(), otherIter.peekLength(), length);\n\t var thisOp = thisIter.next(opLength);\n\t var otherOp = otherIter.next(opLength);\n\t if (equal(thisOp.insert, otherOp.insert)) {\n\t delta.retain(opLength, op.attributes.diff(thisOp.attributes, otherOp.attributes));\n\t } else {\n\t delta.push(otherOp)['delete'](opLength);\n\t }\n\t break;\n\t }\n\t length -= opLength;\n\t }\n\t });\n\t return delta.chop();\n\t};\n\t\n\tDelta.prototype.eachLine = function (predicate, newline) {\n\t newline = newline || '\\n';\n\t var iter = op.iterator(this.ops);\n\t var line = new Delta();\n\t while (iter.hasNext()) {\n\t if (iter.peekType() !== 'insert') return;\n\t var thisOp = iter.peek();\n\t var start = op.length(thisOp) - iter.peekLength();\n\t var index = typeof thisOp.insert === 'string' ?\n\t thisOp.insert.indexOf(newline, start) - start : -1;\n\t if (index < 0) {\n\t line.push(iter.next());\n\t } else if (index > 0) {\n\t line.push(iter.next(index));\n\t } else {\n\t predicate(line, iter.next(1).attributes || {});\n\t line = new Delta();\n\t }\n\t }\n\t if (line.length() > 0) {\n\t predicate(line, {});\n\t }\n\t};\n\t\n\tDelta.prototype.transform = function (other, priority) {\n\t priority = !!priority;\n\t if (typeof other === 'number') {\n\t return this.transformPosition(other, priority);\n\t }\n\t var thisIter = op.iterator(this.ops);\n\t var otherIter = op.iterator(other.ops);\n\t var delta = new Delta();\n\t while (thisIter.hasNext() || otherIter.hasNext()) {\n\t if (thisIter.peekType() === 'insert' && (priority || otherIter.peekType() !== 'insert')) {\n\t delta.retain(op.length(thisIter.next()));\n\t } else if (otherIter.peekType() === 'insert') {\n\t delta.push(otherIter.next());\n\t } else {\n\t var length = Math.min(thisIter.peekLength(), otherIter.peekLength());\n\t var thisOp = thisIter.next(length);\n\t var otherOp = otherIter.next(length);\n\t if (thisOp['delete']) {\n\t // Our delete either makes their delete redundant or removes their retain\n\t continue;\n\t } else if (otherOp['delete']) {\n\t delta.push(otherOp);\n\t } else {\n\t // We retain either their retain or insert\n\t delta.retain(length, op.attributes.transform(thisOp.attributes, otherOp.attributes, priority));\n\t }\n\t }\n\t }\n\t return delta.chop();\n\t};\n\t\n\tDelta.prototype.transformPosition = function (index, priority) {\n\t priority = !!priority;\n\t var thisIter = op.iterator(this.ops);\n\t var offset = 0;\n\t while (thisIter.hasNext() && offset <= index) {\n\t var length = thisIter.peekLength();\n\t var nextType = thisIter.peekType();\n\t thisIter.next();\n\t if (nextType === 'delete') {\n\t index -= Math.min(length, index - offset);\n\t continue;\n\t } else if (nextType === 'insert' && (offset < index || !priority)) {\n\t index += length;\n\t }\n\t offset += length;\n\t }\n\t return index;\n\t};\n\t\n\t\n\tmodule.exports = Delta;\n\n\n/***/ },\n/* 21 */\n/***/ function(module, exports) {\n\n\t/**\n\t * This library modifies the diff-patch-match library by Neil Fraser\n\t * by removing the patch and match functionality and certain advanced\n\t * options in the diff function. The original license is as follows:\n\t *\n\t * ===\n\t *\n\t * Diff Match and Patch\n\t *\n\t * Copyright 2006 Google Inc.\n\t * http://code.google.com/p/google-diff-match-patch/\n\t *\n\t * Licensed under the Apache License, Version 2.0 (the \"License\");\n\t * you may not use this file except in compliance with the License.\n\t * You may obtain a copy of the License at\n\t *\n\t * http://www.apache.org/licenses/LICENSE-2.0\n\t *\n\t * Unless required by applicable law or agreed to in writing, software\n\t * distributed under the License is distributed on an \"AS IS\" BASIS,\n\t * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n\t * See the License for the specific language governing permissions and\n\t * limitations under the License.\n\t */\n\t\n\t\n\t/**\n\t * The data structure representing a diff is an array of tuples:\n\t * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n\t * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n\t */\n\tvar DIFF_DELETE = -1;\n\tvar DIFF_INSERT = 1;\n\tvar DIFF_EQUAL = 0;\n\t\n\t\n\t/**\n\t * Find the differences between two texts. Simplifies the problem by stripping\n\t * any common prefix or suffix off the texts before diffing.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {Int} cursor_pos Expected edit position in text1 (optional)\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_main(text1, text2, cursor_pos) {\n\t // Check for equality (speedup).\n\t if (text1 == text2) {\n\t if (text1) {\n\t return [[DIFF_EQUAL, text1]];\n\t }\n\t return [];\n\t }\n\t\n\t // Check cursor_pos within bounds\n\t if (cursor_pos < 0 || text1.length < cursor_pos) {\n\t cursor_pos = null;\n\t }\n\t\n\t // Trim off common prefix (speedup).\n\t var commonlength = diff_commonPrefix(text1, text2);\n\t var commonprefix = text1.substring(0, commonlength);\n\t text1 = text1.substring(commonlength);\n\t text2 = text2.substring(commonlength);\n\t\n\t // Trim off common suffix (speedup).\n\t commonlength = diff_commonSuffix(text1, text2);\n\t var commonsuffix = text1.substring(text1.length - commonlength);\n\t text1 = text1.substring(0, text1.length - commonlength);\n\t text2 = text2.substring(0, text2.length - commonlength);\n\t\n\t // Compute the diff on the middle block.\n\t var diffs = diff_compute_(text1, text2);\n\t\n\t // Restore the prefix and suffix.\n\t if (commonprefix) {\n\t diffs.unshift([DIFF_EQUAL, commonprefix]);\n\t }\n\t if (commonsuffix) {\n\t diffs.push([DIFF_EQUAL, commonsuffix]);\n\t }\n\t diff_cleanupMerge(diffs);\n\t if (cursor_pos != null) {\n\t diffs = fix_cursor(diffs, cursor_pos);\n\t }\n\t return diffs;\n\t};\n\t\n\t\n\t/**\n\t * Find the differences between two texts. Assumes that the texts do not\n\t * have any common prefix or suffix.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_compute_(text1, text2) {\n\t var diffs;\n\t\n\t if (!text1) {\n\t // Just add some text (speedup).\n\t return [[DIFF_INSERT, text2]];\n\t }\n\t\n\t if (!text2) {\n\t // Just delete some text (speedup).\n\t return [[DIFF_DELETE, text1]];\n\t }\n\t\n\t var longtext = text1.length > text2.length ? text1 : text2;\n\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t var i = longtext.indexOf(shorttext);\n\t if (i != -1) {\n\t // Shorter text is inside the longer text (speedup).\n\t diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n\t [DIFF_EQUAL, shorttext],\n\t [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n\t // Swap insertions for deletions if diff is reversed.\n\t if (text1.length > text2.length) {\n\t diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n\t }\n\t return diffs;\n\t }\n\t\n\t if (shorttext.length == 1) {\n\t // Single character string.\n\t // After the previous speedup, the character can't be an equality.\n\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t }\n\t\n\t // Check to see if the problem can be split in two.\n\t var hm = diff_halfMatch_(text1, text2);\n\t if (hm) {\n\t // A half-match was found, sort out the return data.\n\t var text1_a = hm[0];\n\t var text1_b = hm[1];\n\t var text2_a = hm[2];\n\t var text2_b = hm[3];\n\t var mid_common = hm[4];\n\t // Send both pairs off for separate processing.\n\t var diffs_a = diff_main(text1_a, text2_a);\n\t var diffs_b = diff_main(text1_b, text2_b);\n\t // Merge the results.\n\t return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n\t }\n\t\n\t return diff_bisect_(text1, text2);\n\t};\n\t\n\t\n\t/**\n\t * Find the 'middle snake' of a diff, split the problem in two\n\t * and return the recursively constructed diff.\n\t * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @return {Array} Array of diff tuples.\n\t * @private\n\t */\n\tfunction diff_bisect_(text1, text2) {\n\t // Cache the text lengths to prevent multiple calls.\n\t var text1_length = text1.length;\n\t var text2_length = text2.length;\n\t var max_d = Math.ceil((text1_length + text2_length) / 2);\n\t var v_offset = max_d;\n\t var v_length = 2 * max_d;\n\t var v1 = new Array(v_length);\n\t var v2 = new Array(v_length);\n\t // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n\t // integers and undefined.\n\t for (var x = 0; x < v_length; x++) {\n\t v1[x] = -1;\n\t v2[x] = -1;\n\t }\n\t v1[v_offset + 1] = 0;\n\t v2[v_offset + 1] = 0;\n\t var delta = text1_length - text2_length;\n\t // If the total number of characters is odd, then the front path will collide\n\t // with the reverse path.\n\t var front = (delta % 2 != 0);\n\t // Offsets for start and end of k loop.\n\t // Prevents mapping of space beyond the grid.\n\t var k1start = 0;\n\t var k1end = 0;\n\t var k2start = 0;\n\t var k2end = 0;\n\t for (var d = 0; d < max_d; d++) {\n\t // Walk the front path one step.\n\t for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n\t var k1_offset = v_offset + k1;\n\t var x1;\n\t if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n\t x1 = v1[k1_offset + 1];\n\t } else {\n\t x1 = v1[k1_offset - 1] + 1;\n\t }\n\t var y1 = x1 - k1;\n\t while (x1 < text1_length && y1 < text2_length &&\n\t text1.charAt(x1) == text2.charAt(y1)) {\n\t x1++;\n\t y1++;\n\t }\n\t v1[k1_offset] = x1;\n\t if (x1 > text1_length) {\n\t // Ran off the right of the graph.\n\t k1end += 2;\n\t } else if (y1 > text2_length) {\n\t // Ran off the bottom of the graph.\n\t k1start += 2;\n\t } else if (front) {\n\t var k2_offset = v_offset + delta - k1;\n\t if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n\t // Mirror x2 onto top-left coordinate system.\n\t var x2 = text1_length - v2[k2_offset];\n\t if (x1 >= x2) {\n\t // Overlap detected.\n\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t }\n\t }\n\t }\n\t }\n\t\n\t // Walk the reverse path one step.\n\t for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n\t var k2_offset = v_offset + k2;\n\t var x2;\n\t if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n\t x2 = v2[k2_offset + 1];\n\t } else {\n\t x2 = v2[k2_offset - 1] + 1;\n\t }\n\t var y2 = x2 - k2;\n\t while (x2 < text1_length && y2 < text2_length &&\n\t text1.charAt(text1_length - x2 - 1) ==\n\t text2.charAt(text2_length - y2 - 1)) {\n\t x2++;\n\t y2++;\n\t }\n\t v2[k2_offset] = x2;\n\t if (x2 > text1_length) {\n\t // Ran off the left of the graph.\n\t k2end += 2;\n\t } else if (y2 > text2_length) {\n\t // Ran off the top of the graph.\n\t k2start += 2;\n\t } else if (!front) {\n\t var k1_offset = v_offset + delta - k2;\n\t if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n\t var x1 = v1[k1_offset];\n\t var y1 = v_offset + x1 - k1_offset;\n\t // Mirror x2 onto top-left coordinate system.\n\t x2 = text1_length - x2;\n\t if (x1 >= x2) {\n\t // Overlap detected.\n\t return diff_bisectSplit_(text1, text2, x1, y1);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t // Diff took too long and hit the deadline or\n\t // number of diffs equals number of characters, no commonality at all.\n\t return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n\t};\n\t\n\t\n\t/**\n\t * Given the location of the 'middle snake', split the diff in two parts\n\t * and recurse.\n\t * @param {string} text1 Old string to be diffed.\n\t * @param {string} text2 New string to be diffed.\n\t * @param {number} x Index of split point in text1.\n\t * @param {number} y Index of split point in text2.\n\t * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_bisectSplit_(text1, text2, x, y) {\n\t var text1a = text1.substring(0, x);\n\t var text2a = text2.substring(0, y);\n\t var text1b = text1.substring(x);\n\t var text2b = text2.substring(y);\n\t\n\t // Compute both diffs serially.\n\t var diffs = diff_main(text1a, text2a);\n\t var diffsb = diff_main(text1b, text2b);\n\t\n\t return diffs.concat(diffsb);\n\t};\n\t\n\t\n\t/**\n\t * Determine the common prefix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the start of each\n\t * string.\n\t */\n\tfunction diff_commonPrefix(text1, text2) {\n\t // Quick check for common null cases.\n\t if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n\t return 0;\n\t }\n\t // Binary search.\n\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t var pointermin = 0;\n\t var pointermax = Math.min(text1.length, text2.length);\n\t var pointermid = pointermax;\n\t var pointerstart = 0;\n\t while (pointermin < pointermid) {\n\t if (text1.substring(pointerstart, pointermid) ==\n\t text2.substring(pointerstart, pointermid)) {\n\t pointermin = pointermid;\n\t pointerstart = pointermin;\n\t } else {\n\t pointermax = pointermid;\n\t }\n\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t }\n\t return pointermid;\n\t};\n\t\n\t\n\t/**\n\t * Determine the common suffix of two strings.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {number} The number of characters common to the end of each string.\n\t */\n\tfunction diff_commonSuffix(text1, text2) {\n\t // Quick check for common null cases.\n\t if (!text1 || !text2 ||\n\t text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n\t return 0;\n\t }\n\t // Binary search.\n\t // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n\t var pointermin = 0;\n\t var pointermax = Math.min(text1.length, text2.length);\n\t var pointermid = pointermax;\n\t var pointerend = 0;\n\t while (pointermin < pointermid) {\n\t if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n\t text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n\t pointermin = pointermid;\n\t pointerend = pointermin;\n\t } else {\n\t pointermax = pointermid;\n\t }\n\t pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n\t }\n\t return pointermid;\n\t};\n\t\n\t\n\t/**\n\t * Do the two texts share a substring which is at least half the length of the\n\t * longer text?\n\t * This speedup can produce non-minimal diffs.\n\t * @param {string} text1 First string.\n\t * @param {string} text2 Second string.\n\t * @return {Array.<string>} Five element Array, containing the prefix of\n\t * text1, the suffix of text1, the prefix of text2, the suffix of\n\t * text2 and the common middle. Or null if there was no match.\n\t */\n\tfunction diff_halfMatch_(text1, text2) {\n\t var longtext = text1.length > text2.length ? text1 : text2;\n\t var shorttext = text1.length > text2.length ? text2 : text1;\n\t if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n\t return null; // Pointless.\n\t }\n\t\n\t /**\n\t * Does a substring of shorttext exist within longtext such that the substring\n\t * is at least half the length of longtext?\n\t * Closure, but does not reference any external variables.\n\t * @param {string} longtext Longer string.\n\t * @param {string} shorttext Shorter string.\n\t * @param {number} i Start index of quarter length substring within longtext.\n\t * @return {Array.<string>} Five element Array, containing the prefix of\n\t * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n\t * of shorttext and the common middle. Or null if there was no match.\n\t * @private\n\t */\n\t function diff_halfMatchI_(longtext, shorttext, i) {\n\t // Start with a 1/4 length substring at position i as a seed.\n\t var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n\t var j = -1;\n\t var best_common = '';\n\t var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n\t while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n\t var prefixLength = diff_commonPrefix(longtext.substring(i),\n\t shorttext.substring(j));\n\t var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n\t shorttext.substring(0, j));\n\t if (best_common.length < suffixLength + prefixLength) {\n\t best_common = shorttext.substring(j - suffixLength, j) +\n\t shorttext.substring(j, j + prefixLength);\n\t best_longtext_a = longtext.substring(0, i - suffixLength);\n\t best_longtext_b = longtext.substring(i + prefixLength);\n\t best_shorttext_a = shorttext.substring(0, j - suffixLength);\n\t best_shorttext_b = shorttext.substring(j + prefixLength);\n\t }\n\t }\n\t if (best_common.length * 2 >= longtext.length) {\n\t return [best_longtext_a, best_longtext_b,\n\t best_shorttext_a, best_shorttext_b, best_common];\n\t } else {\n\t return null;\n\t }\n\t }\n\t\n\t // First check if the second quarter is the seed for a half-match.\n\t var hm1 = diff_halfMatchI_(longtext, shorttext,\n\t Math.ceil(longtext.length / 4));\n\t // Check again based on the third quarter.\n\t var hm2 = diff_halfMatchI_(longtext, shorttext,\n\t Math.ceil(longtext.length / 2));\n\t var hm;\n\t if (!hm1 && !hm2) {\n\t return null;\n\t } else if (!hm2) {\n\t hm = hm1;\n\t } else if (!hm1) {\n\t hm = hm2;\n\t } else {\n\t // Both matched. Select the longest.\n\t hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n\t }\n\t\n\t // A half-match was found, sort out the return data.\n\t var text1_a, text1_b, text2_a, text2_b;\n\t if (text1.length > text2.length) {\n\t text1_a = hm[0];\n\t text1_b = hm[1];\n\t text2_a = hm[2];\n\t text2_b = hm[3];\n\t } else {\n\t text2_a = hm[0];\n\t text2_b = hm[1];\n\t text1_a = hm[2];\n\t text1_b = hm[3];\n\t }\n\t var mid_common = hm[4];\n\t return [text1_a, text1_b, text2_a, text2_b, mid_common];\n\t};\n\t\n\t\n\t/**\n\t * Reorder and merge like edit sections. Merge equalities.\n\t * Any edit section can move as long as it doesn't cross an equality.\n\t * @param {Array} diffs Array of diff tuples.\n\t */\n\tfunction diff_cleanupMerge(diffs) {\n\t diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n\t var pointer = 0;\n\t var count_delete = 0;\n\t var count_insert = 0;\n\t var text_delete = '';\n\t var text_insert = '';\n\t var commonlength;\n\t while (pointer < diffs.length) {\n\t switch (diffs[pointer][0]) {\n\t case DIFF_INSERT:\n\t count_insert++;\n\t text_insert += diffs[pointer][1];\n\t pointer++;\n\t break;\n\t case DIFF_DELETE:\n\t count_delete++;\n\t text_delete += diffs[pointer][1];\n\t pointer++;\n\t break;\n\t case DIFF_EQUAL:\n\t // Upon reaching an equality, check for prior redundancies.\n\t if (count_delete + count_insert > 1) {\n\t if (count_delete !== 0 && count_insert !== 0) {\n\t // Factor out any common prefixies.\n\t commonlength = diff_commonPrefix(text_insert, text_delete);\n\t if (commonlength !== 0) {\n\t if ((pointer - count_delete - count_insert) > 0 &&\n\t diffs[pointer - count_delete - count_insert - 1][0] ==\n\t DIFF_EQUAL) {\n\t diffs[pointer - count_delete - count_insert - 1][1] +=\n\t text_insert.substring(0, commonlength);\n\t } else {\n\t diffs.splice(0, 0, [DIFF_EQUAL,\n\t text_insert.substring(0, commonlength)]);\n\t pointer++;\n\t }\n\t text_insert = text_insert.substring(commonlength);\n\t text_delete = text_delete.substring(commonlength);\n\t }\n\t // Factor out any common suffixies.\n\t commonlength = diff_commonSuffix(text_insert, text_delete);\n\t if (commonlength !== 0) {\n\t diffs[pointer][1] = text_insert.substring(text_insert.length -\n\t commonlength) + diffs[pointer][1];\n\t text_insert = text_insert.substring(0, text_insert.length -\n\t commonlength);\n\t text_delete = text_delete.substring(0, text_delete.length -\n\t commonlength);\n\t }\n\t }\n\t // Delete the offending records and add the merged ones.\n\t if (count_delete === 0) {\n\t diffs.splice(pointer - count_insert,\n\t count_delete + count_insert, [DIFF_INSERT, text_insert]);\n\t } else if (count_insert === 0) {\n\t diffs.splice(pointer - count_delete,\n\t count_delete + count_insert, [DIFF_DELETE, text_delete]);\n\t } else {\n\t diffs.splice(pointer - count_delete - count_insert,\n\t count_delete + count_insert, [DIFF_DELETE, text_delete],\n\t [DIFF_INSERT, text_insert]);\n\t }\n\t pointer = pointer - count_delete - count_insert +\n\t (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n\t } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n\t // Merge this equality with the previous one.\n\t diffs[pointer - 1][1] += diffs[pointer][1];\n\t diffs.splice(pointer, 1);\n\t } else {\n\t pointer++;\n\t }\n\t count_insert = 0;\n\t count_delete = 0;\n\t text_delete = '';\n\t text_insert = '';\n\t break;\n\t }\n\t }\n\t if (diffs[diffs.length - 1][1] === '') {\n\t diffs.pop(); // Remove the dummy entry at the end.\n\t }\n\t\n\t // Second pass: look for single edits surrounded on both sides by equalities\n\t // which can be shifted sideways to eliminate an equality.\n\t // e.g: A<ins>BA</ins>C -> <ins>AB</ins>AC\n\t var changes = false;\n\t pointer = 1;\n\t // Intentionally ignore the first and last element (don't need checking).\n\t while (pointer < diffs.length - 1) {\n\t if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n\t diffs[pointer + 1][0] == DIFF_EQUAL) {\n\t // This is a single edit surrounded by equalities.\n\t if (diffs[pointer][1].substring(diffs[pointer][1].length -\n\t diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n\t // Shift the edit over the previous equality.\n\t diffs[pointer][1] = diffs[pointer - 1][1] +\n\t diffs[pointer][1].substring(0, diffs[pointer][1].length -\n\t diffs[pointer - 1][1].length);\n\t diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n\t diffs.splice(pointer - 1, 1);\n\t changes = true;\n\t } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n\t diffs[pointer + 1][1]) {\n\t // Shift the edit over the next equality.\n\t diffs[pointer - 1][1] += diffs[pointer + 1][1];\n\t diffs[pointer][1] =\n\t diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n\t diffs[pointer + 1][1];\n\t diffs.splice(pointer + 1, 1);\n\t changes = true;\n\t }\n\t }\n\t pointer++;\n\t }\n\t // If shifts were made, the diff needs reordering and another shift sweep.\n\t if (changes) {\n\t diff_cleanupMerge(diffs);\n\t }\n\t};\n\t\n\t\n\tvar diff = diff_main;\n\tdiff.INSERT = DIFF_INSERT;\n\tdiff.DELETE = DIFF_DELETE;\n\tdiff.EQUAL = DIFF_EQUAL;\n\t\n\tmodule.exports = diff;\n\t\n\t/*\n\t * Modify a diff such that the cursor position points to the start of a change:\n\t * E.g.\n\t * cursor_normalize_diff([[DIFF_EQUAL, 'abc']], 1)\n\t * => [1, [[DIFF_EQUAL, 'a'], [DIFF_EQUAL, 'bc']]]\n\t * cursor_normalize_diff([[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xyz']], 2)\n\t * => [2, [[DIFF_INSERT, 'new'], [DIFF_DELETE, 'xy'], [DIFF_DELETE, 'z']]]\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} A tuple [cursor location in the modified diff, modified diff]\n\t */\n\tfunction cursor_normalize_diff (diffs, cursor_pos) {\n\t if (cursor_pos === 0) {\n\t return [DIFF_EQUAL, diffs];\n\t }\n\t for (var current_pos = 0, i = 0; i < diffs.length; i++) {\n\t var d = diffs[i];\n\t if (d[0] === DIFF_DELETE || d[0] === DIFF_EQUAL) {\n\t var next_pos = current_pos + d[1].length;\n\t if (cursor_pos === next_pos) {\n\t return [i + 1, diffs];\n\t } else if (cursor_pos < next_pos) {\n\t // copy to prevent side effects\n\t diffs = diffs.slice();\n\t // split d into two diff changes\n\t var split_pos = cursor_pos - current_pos;\n\t var d_left = [d[0], d[1].slice(0, split_pos)];\n\t var d_right = [d[0], d[1].slice(split_pos)];\n\t diffs.splice(i, 1, d_left, d_right);\n\t return [i + 1, diffs];\n\t } else {\n\t current_pos = next_pos;\n\t }\n\t }\n\t }\n\t throw new Error('cursor_pos is out of bounds!')\n\t}\n\t\n\t/*\n\t * Modify a diff such that the edit position is \"shifted\" to the proposed edit location (cursor_position).\n\t *\n\t * Case 1)\n\t * Check if a naive shift is possible:\n\t * [0, X], [ 1, Y] -> [ 1, Y], [0, X] (if X + Y === Y + X)\n\t * [0, X], [-1, Y] -> [-1, Y], [0, X] (if X + Y === Y + X) - holds same result\n\t * Case 2)\n\t * Check if the following shifts are possible:\n\t * [0, 'pre'], [ 1, 'prefix'] -> [ 1, 'pre'], [0, 'pre'], [ 1, 'fix']\n\t * [0, 'pre'], [-1, 'prefix'] -> [-1, 'pre'], [0, 'pre'], [-1, 'fix']\n\t * ^ ^\n\t * d d_next\n\t *\n\t * @param {Array} diffs Array of diff tuples\n\t * @param {Int} cursor_pos Suggested edit position. Must not be out of bounds!\n\t * @return {Array} Array of diff tuples\n\t */\n\tfunction fix_cursor (diffs, cursor_pos) {\n\t var norm = cursor_normalize_diff(diffs, cursor_pos);\n\t var ndiffs = norm[1];\n\t var cursor_pointer = norm[0];\n\t var d = ndiffs[cursor_pointer];\n\t var d_next = ndiffs[cursor_pointer + 1];\n\t\n\t if (d == null) {\n\t // Text was deleted from end of original string,\n\t // cursor is now out of bounds in new string\n\t return diffs;\n\t } else if (d[0] !== DIFF_EQUAL) {\n\t // A modification happened at the cursor location.\n\t // This is the expected outcome, so we can return the original diff.\n\t return diffs;\n\t } else {\n\t if (d_next != null && d[1] + d_next[1] === d_next[1] + d[1]) {\n\t // Case 1)\n\t // It is possible to perform a naive shift\n\t ndiffs.splice(cursor_pointer, 2, d_next, d)\n\t return merge_tuples(ndiffs, cursor_pointer, 2)\n\t } else if (d_next != null && d_next[1].indexOf(d[1]) === 0) {\n\t // Case 2)\n\t // d[1] is a prefix of d_next[1]\n\t // We can assume that d_next[0] !== 0, since d[0] === 0\n\t // Shift edit locations..\n\t ndiffs.splice(cursor_pointer, 2, [d_next[0], d[1]], [0, d[1]]);\n\t var suffix = d_next[1].slice(d[1].length);\n\t if (suffix.length > 0) {\n\t ndiffs.splice(cursor_pointer + 2, 0, [d_next[0], suffix]);\n\t }\n\t return merge_tuples(ndiffs, cursor_pointer, 3)\n\t } else {\n\t // Not possible to perform any modification\n\t return diffs;\n\t }\n\t }\n\t\n\t}\n\t\n\t/*\n\t * Try to merge tuples with their neigbors in a given range.\n\t * E.g. [0, 'a'], [0, 'b'] -> [0, 'ab']\n\t *\n\t * @param {Array} diffs Array of diff tuples.\n\t * @param {Int} start Position of the first element to merge (diffs[start] is also merged with diffs[start - 1]).\n\t * @param {Int} length Number of consecutive elements to check.\n\t * @return {Array} Array of merged diff tuples.\n\t */\n\tfunction merge_tuples (diffs, start, length) {\n\t // Check from (start-1) to (start+length).\n\t for (var i = start + length - 1; i >= 0 && i >= start - 1; i--) {\n\t if (i + 1 < diffs.length) {\n\t var left_d = diffs[i];\n\t var right_d = diffs[i+1];\n\t if (left_d[0] === right_d[1]) {\n\t diffs.splice(i, 2, [left_d[0], left_d[1] + right_d[1]]);\n\t }\n\t }\n\t }\n\t return diffs;\n\t}\n\n\n/***/ },\n/* 22 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar pSlice = Array.prototype.slice;\n\tvar objectKeys = __webpack_require__(23);\n\tvar isArguments = __webpack_require__(24);\n\t\n\tvar deepEqual = module.exports = function (actual, expected, opts) {\n\t if (!opts) opts = {};\n\t // 7.1. All identical values are equivalent, as determined by ===.\n\t if (actual === expected) {\n\t return true;\n\t\n\t } else if (actual instanceof Date && expected instanceof Date) {\n\t return actual.getTime() === expected.getTime();\n\t\n\t // 7.3. Other pairs that do not both pass typeof value == 'object',\n\t // equivalence is determined by ==.\n\t } else if (!actual || !expected || typeof actual != 'object' && typeof expected != 'object') {\n\t return opts.strict ? actual === expected : actual == expected;\n\t\n\t // 7.4. For all other Object pairs, including Array objects, equivalence is\n\t // determined by having the same number of owned properties (as verified\n\t // with Object.prototype.hasOwnProperty.call), the same set of keys\n\t // (although not necessarily the same order), equivalent values for every\n\t // corresponding key, and an identical 'prototype' property. Note: this\n\t // accounts for both named and indexed properties on Arrays.\n\t } else {\n\t return objEquiv(actual, expected, opts);\n\t }\n\t}\n\t\n\tfunction isUndefinedOrNull(value) {\n\t return value === null || value === undefined;\n\t}\n\t\n\tfunction isBuffer (x) {\n\t if (!x || typeof x !== 'object' || typeof x.length !== 'number') return false;\n\t if (typeof x.copy !== 'function' || typeof x.slice !== 'function') {\n\t return false;\n\t }\n\t if (x.length > 0 && typeof x[0] !== 'number') return false;\n\t return true;\n\t}\n\t\n\tfunction objEquiv(a, b, opts) {\n\t var i, key;\n\t if (isUndefinedOrNull(a) || isUndefinedOrNull(b))\n\t return false;\n\t // an identical 'prototype' property.\n\t if (a.prototype !== b.prototype) return false;\n\t //~~~I've managed to break Object.keys through screwy arguments passing.\n\t // Converting to array solves the problem.\n\t if (isArguments(a)) {\n\t if (!isArguments(b)) {\n\t return false;\n\t }\n\t a = pSlice.call(a);\n\t b = pSlice.call(b);\n\t return deepEqual(a, b, opts);\n\t }\n\t if (isBuffer(a)) {\n\t if (!isBuffer(b)) {\n\t return false;\n\t }\n\t if (a.length !== b.length) return false;\n\t for (i = 0; i < a.length; i++) {\n\t if (a[i] !== b[i]) return false;\n\t }\n\t return true;\n\t }\n\t try {\n\t var ka = objectKeys(a),\n\t kb = objectKeys(b);\n\t } catch (e) {//happens when one is a string literal and the other isn't\n\t return false;\n\t }\n\t // having the same number of owned properties (keys incorporates\n\t // hasOwnProperty)\n\t if (ka.length != kb.length)\n\t return false;\n\t //the same set of keys (although not necessarily the same order),\n\t ka.sort();\n\t kb.sort();\n\t //~~~cheap key test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t if (ka[i] != kb[i])\n\t return false;\n\t }\n\t //equivalent values for every corresponding key, and\n\t //~~~possibly expensive deep test\n\t for (i = ka.length - 1; i >= 0; i--) {\n\t key = ka[i];\n\t if (!deepEqual(a[key], b[key], opts)) return false;\n\t }\n\t return typeof a === typeof b;\n\t}\n\n\n/***/ },\n/* 23 */\n/***/ function(module, exports) {\n\n\texports = module.exports = typeof Object.keys === 'function'\n\t ? Object.keys : shim;\n\t\n\texports.shim = shim;\n\tfunction shim (obj) {\n\t var keys = [];\n\t for (var key in obj) keys.push(key);\n\t return keys;\n\t}\n\n\n/***/ },\n/* 24 */\n/***/ function(module, exports) {\n\n\tvar supportsArgumentsClass = (function(){\n\t return Object.prototype.toString.call(arguments)\n\t})() == '[object Arguments]';\n\t\n\texports = module.exports = supportsArgumentsClass ? supported : unsupported;\n\t\n\texports.supported = supported;\n\tfunction supported(object) {\n\t return Object.prototype.toString.call(object) == '[object Arguments]';\n\t};\n\t\n\texports.unsupported = unsupported;\n\tfunction unsupported(object){\n\t return object &&\n\t typeof object == 'object' &&\n\t typeof object.length == 'number' &&\n\t Object.prototype.hasOwnProperty.call(object, 'callee') &&\n\t !Object.prototype.propertyIsEnumerable.call(object, 'callee') ||\n\t false;\n\t};\n\n\n/***/ },\n/* 25 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar hasOwn = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\t\n\tvar isArray = function isArray(arr) {\n\t\tif (typeof Array.isArray === 'function') {\n\t\t\treturn Array.isArray(arr);\n\t\t}\n\t\n\t\treturn toStr.call(arr) === '[object Array]';\n\t};\n\t\n\tvar isPlainObject = function isPlainObject(obj) {\n\t\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\t\treturn false;\n\t\t}\n\t\n\t\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\t\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t\t// Not own constructor property must be Object\n\t\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\t\treturn false;\n\t\t}\n\t\n\t\t// Own properties are enumerated firstly, so to speed up,\n\t\t// if last one is own, then all properties are own.\n\t\tvar key;\n\t\tfor (key in obj) {/**/}\n\t\n\t\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n\t};\n\t\n\tmodule.exports = function extend() {\n\t\tvar options, name, src, copy, copyIsArray, clone,\n\t\t\ttarget = arguments[0],\n\t\t\ti = 1,\n\t\t\tlength = arguments.length,\n\t\t\tdeep = false;\n\t\n\t\t// Handle a deep copy situation\n\t\tif (typeof target === 'boolean') {\n\t\t\tdeep = target;\n\t\t\ttarget = arguments[1] || {};\n\t\t\t// skip the boolean and the target\n\t\t\ti = 2;\n\t\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\t\ttarget = {};\n\t\t}\n\t\n\t\tfor (; i < length; ++i) {\n\t\t\toptions = arguments[i];\n\t\t\t// Only deal with non-null/undefined values\n\t\t\tif (options != null) {\n\t\t\t\t// Extend the base object\n\t\t\t\tfor (name in options) {\n\t\t\t\t\tsrc = target[name];\n\t\t\t\t\tcopy = options[name];\n\t\n\t\t\t\t\t// Prevent never-ending loop\n\t\t\t\t\tif (target !== copy) {\n\t\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t\t}\n\t\n\t\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\t\n\t\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\n\t\t// Return the modified object\n\t\treturn target;\n\t};\n\t\n\n\n/***/ },\n/* 26 */\n/***/ function(module, exports, __webpack_require__) {\n\n\tvar equal = __webpack_require__(22);\n\tvar extend = __webpack_require__(25);\n\t\n\t\n\tvar lib = {\n\t attributes: {\n\t compose: function (a, b, keepNull) {\n\t if (typeof a !== 'object') a = {};\n\t if (typeof b !== 'object') b = {};\n\t var attributes = extend(true, {}, b);\n\t if (!keepNull) {\n\t attributes = Object.keys(attributes).reduce(function (copy, key) {\n\t if (attributes[key] != null) {\n\t copy[key] = attributes[key];\n\t }\n\t return copy;\n\t }, {});\n\t }\n\t for (var key in a) {\n\t if (a[key] !== undefined && b[key] === undefined) {\n\t attributes[key] = a[key];\n\t }\n\t }\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t },\n\t\n\t diff: function(a, b) {\n\t if (typeof a !== 'object') a = {};\n\t if (typeof b !== 'object') b = {};\n\t var attributes = Object.keys(a).concat(Object.keys(b)).reduce(function (attributes, key) {\n\t if (!equal(a[key], b[key])) {\n\t attributes[key] = b[key] === undefined ? null : b[key];\n\t }\n\t return attributes;\n\t }, {});\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t },\n\t\n\t transform: function (a, b, priority) {\n\t if (typeof a !== 'object') return b;\n\t if (typeof b !== 'object') return undefined;\n\t if (!priority) return b; // b simply overwrites us without priority\n\t var attributes = Object.keys(b).reduce(function (attributes, key) {\n\t if (a[key] === undefined) attributes[key] = b[key]; // null is a valid value\n\t return attributes;\n\t }, {});\n\t return Object.keys(attributes).length > 0 ? attributes : undefined;\n\t }\n\t },\n\t\n\t iterator: function (ops) {\n\t return new Iterator(ops);\n\t },\n\t\n\t length: function (op) {\n\t if (typeof op['delete'] === 'number') {\n\t return op['delete'];\n\t } else if (typeof op.retain === 'number') {\n\t return op.retain;\n\t } else {\n\t return typeof op.insert === 'string' ? op.insert.length : 1;\n\t }\n\t }\n\t};\n\t\n\t\n\tfunction Iterator(ops) {\n\t this.ops = ops;\n\t this.index = 0;\n\t this.offset = 0;\n\t};\n\t\n\tIterator.prototype.hasNext = function () {\n\t return this.peekLength() < Infinity;\n\t};\n\t\n\tIterator.prototype.next = function (length) {\n\t if (!length) length = Infinity;\n\t var nextOp = this.ops[this.index];\n\t if (nextOp) {\n\t var offset = this.offset;\n\t var opLength = lib.length(nextOp)\n\t if (length >= opLength - offset) {\n\t length = opLength - offset;\n\t this.index += 1;\n\t this.offset = 0;\n\t } else {\n\t this.offset += length;\n\t }\n\t if (typeof nextOp['delete'] === 'number') {\n\t return { 'delete': length };\n\t } else {\n\t var retOp = {};\n\t if (nextOp.attributes) {\n\t retOp.attributes = nextOp.attributes;\n\t }\n\t if (typeof nextOp.retain === 'number') {\n\t retOp.retain = length;\n\t } else if (typeof nextOp.insert === 'string') {\n\t retOp.insert = nextOp.insert.substr(offset, length);\n\t } else {\n\t // offset should === 0, length should === 1\n\t retOp.insert = nextOp.insert;\n\t }\n\t return retOp;\n\t }\n\t } else {\n\t return { retain: Infinity };\n\t }\n\t};\n\t\n\tIterator.prototype.peek = function () {\n\t return this.ops[this.index];\n\t};\n\t\n\tIterator.prototype.peekLength = function () {\n\t if (this.ops[this.index]) {\n\t // Should never return 0 if our index is being managed correctly\n\t return lib.length(this.ops[this.index]) - this.offset;\n\t } else {\n\t return Infinity;\n\t }\n\t};\n\t\n\tIterator.prototype.peekType = function () {\n\t if (this.ops[this.index]) {\n\t if (typeof this.ops[this.index]['delete'] === 'number') {\n\t return 'delete';\n\t } else if (typeof this.ops[this.index].retain === 'number') {\n\t return 'retain';\n\t } else {\n\t return 'insert';\n\t }\n\t }\n\t return 'retain';\n\t};\n\t\n\t\n\tmodule.exports = lib;\n\n\n/***/ },\n/* 27 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _op = __webpack_require__(26);\n\t\n\tvar _op2 = _interopRequireDefault(_op);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tvar _cursor = __webpack_require__(34);\n\t\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _clone = __webpack_require__(38);\n\t\n\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\tvar _deepEqual = __webpack_require__(22);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Editor = function () {\n\t function Editor(scroll) {\n\t _classCallCheck(this, Editor);\n\t\n\t this.scroll = scroll;\n\t this.delta = this.getDelta();\n\t }\n\t\n\t _createClass(Editor, [{\n\t key: 'applyDelta',\n\t value: function applyDelta(delta) {\n\t var _this = this;\n\t\n\t var consumeNextNewline = false;\n\t this.scroll.update();\n\t var scrollLength = this.scroll.length();\n\t this.scroll.batch = true;\n\t delta = normalizeDelta(delta);\n\t delta.reduce(function (index, op) {\n\t var length = op.retain || op.delete || op.insert.length || 1;\n\t var attributes = op.attributes || {};\n\t if (op.insert != null) {\n\t if (typeof op.insert === 'string') {\n\t var text = op.insert;\n\t if (text.endsWith('\\n') && consumeNextNewline) {\n\t consumeNextNewline = false;\n\t text = text.slice(0, -1);\n\t }\n\t if (index >= scrollLength && !text.endsWith('\\n')) {\n\t consumeNextNewline = true;\n\t }\n\t _this.scroll.insertAt(index, text);\n\t\n\t var _scroll$line = _this.scroll.line(index),\n\t _scroll$line2 = _slicedToArray(_scroll$line, 2),\n\t line = _scroll$line2[0],\n\t offset = _scroll$line2[1];\n\t\n\t var formats = (0, _extend2.default)({}, (0, _block.bubbleFormats)(line));\n\t if (line instanceof _block2.default) {\n\t var _line$descendant = line.descendant(_parchment2.default.Leaf, offset),\n\t _line$descendant2 = _slicedToArray(_line$descendant, 1),\n\t leaf = _line$descendant2[0];\n\t\n\t formats = (0, _extend2.default)(formats, (0, _block.bubbleFormats)(leaf));\n\t }\n\t attributes = _op2.default.attributes.diff(formats, attributes) || {};\n\t } else if (_typeof(op.insert) === 'object') {\n\t var key = Object.keys(op.insert)[0]; // There should only be one key\n\t if (key == null) return index;\n\t _this.scroll.insertAt(index, key, op.insert[key]);\n\t }\n\t scrollLength += length;\n\t }\n\t Object.keys(attributes).forEach(function (name) {\n\t _this.scroll.formatAt(index, length, name, attributes[name]);\n\t });\n\t return index + length;\n\t }, 0);\n\t delta.reduce(function (index, op) {\n\t if (typeof op.delete === 'number') {\n\t _this.scroll.deleteAt(index, op.delete);\n\t return index;\n\t }\n\t return index + (op.retain || op.insert.length || 1);\n\t }, 0);\n\t this.scroll.batch = false;\n\t this.scroll.optimize();\n\t return this.update(delta);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length) {\n\t this.scroll.deleteAt(index, length);\n\t return this.update(new _quillDelta2.default().retain(index).delete(length));\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length) {\n\t var _this2 = this;\n\t\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t this.scroll.update();\n\t Object.keys(formats).forEach(function (format) {\n\t var lines = _this2.scroll.lines(index, Math.max(length, 1));\n\t var lengthRemaining = length;\n\t lines.forEach(function (line) {\n\t var lineLength = line.length();\n\t if (!(line instanceof _code2.default)) {\n\t line.format(format, formats[format]);\n\t } else {\n\t var codeIndex = index - line.offset(_this2.scroll);\n\t var codeLength = line.newlineIndex(codeIndex + lengthRemaining) - codeIndex + 1;\n\t line.formatAt(codeIndex, codeLength, format, formats[format]);\n\t }\n\t lengthRemaining -= lineLength;\n\t });\n\t });\n\t this.scroll.optimize();\n\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length) {\n\t var _this3 = this;\n\t\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t Object.keys(formats).forEach(function (format) {\n\t _this3.scroll.formatAt(index, length, format, formats[format]);\n\t });\n\t return this.update(new _quillDelta2.default().retain(index).retain(length, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'getContents',\n\t value: function getContents(index, length) {\n\t return this.delta.slice(index, index + length);\n\t }\n\t }, {\n\t key: 'getDelta',\n\t value: function getDelta() {\n\t return this.scroll.lines().reduce(function (delta, line) {\n\t return delta.concat(line.delta());\n\t }, new _quillDelta2.default());\n\t }\n\t }, {\n\t key: 'getFormat',\n\t value: function getFormat(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t var lines = [],\n\t leaves = [];\n\t if (length === 0) {\n\t this.scroll.path(index).forEach(function (path) {\n\t var _path = _slicedToArray(path, 1),\n\t blot = _path[0];\n\t\n\t if (blot instanceof _block2.default) {\n\t lines.push(blot);\n\t } else if (blot instanceof _parchment2.default.Leaf) {\n\t leaves.push(blot);\n\t }\n\t });\n\t } else {\n\t lines = this.scroll.lines(index, length);\n\t leaves = this.scroll.descendants(_parchment2.default.Leaf, index, length);\n\t }\n\t var formatsArr = [lines, leaves].map(function (blots) {\n\t if (blots.length === 0) return {};\n\t var formats = (0, _block.bubbleFormats)(blots.shift());\n\t while (Object.keys(formats).length > 0) {\n\t var blot = blots.shift();\n\t if (blot == null) return formats;\n\t formats = combineFormats((0, _block.bubbleFormats)(blot), formats);\n\t }\n\t return formats;\n\t });\n\t return _extend2.default.apply(_extend2.default, formatsArr);\n\t }\n\t }, {\n\t key: 'getText',\n\t value: function getText(index, length) {\n\t return this.getContents(index, length).filter(function (op) {\n\t return typeof op.insert === 'string';\n\t }).map(function (op) {\n\t return op.insert;\n\t }).join('');\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t this.scroll.insertAt(index, embed, value);\n\t return this.update(new _quillDelta2.default().retain(index).insert(_defineProperty({}, embed, value)));\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text) {\n\t var _this4 = this;\n\t\n\t var formats = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t text = text.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t this.scroll.insertAt(index, text);\n\t Object.keys(formats).forEach(function (format) {\n\t _this4.scroll.formatAt(index, text.length, format, formats[format]);\n\t });\n\t return this.update(new _quillDelta2.default().retain(index).insert(text, (0, _clone2.default)(formats)));\n\t }\n\t }, {\n\t key: 'isBlank',\n\t value: function isBlank() {\n\t if (this.scroll.children.length == 0) return true;\n\t if (this.scroll.children.length > 1) return false;\n\t var child = this.scroll.children.head;\n\t return child.length() <= 1 && Object.keys(child.formats()).length == 0;\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length) {\n\t var text = this.getText(index, length);\n\t\n\t var _scroll$line3 = this.scroll.line(index + length),\n\t _scroll$line4 = _slicedToArray(_scroll$line3, 2),\n\t line = _scroll$line4[0],\n\t offset = _scroll$line4[1];\n\t\n\t var suffixLength = 0,\n\t suffix = new _quillDelta2.default();\n\t if (line != null) {\n\t if (!(line instanceof _code2.default)) {\n\t suffixLength = line.length() - offset;\n\t } else {\n\t suffixLength = line.newlineIndex(offset) - offset + 1;\n\t }\n\t suffix = line.delta().slice(offset, offset + suffixLength - 1).insert('\\n');\n\t }\n\t var contents = this.getContents(index, length + suffixLength);\n\t var diff = contents.diff(new _quillDelta2.default().insert(text).concat(suffix));\n\t var delta = new _quillDelta2.default().retain(index).concat(diff);\n\t return this.applyDelta(delta);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(change) {\n\t var _this5 = this;\n\t\n\t var mutations = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];\n\t var cursorIndex = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : undefined;\n\t\n\t var oldDelta = this.delta;\n\t if (mutations.length === 1 && mutations[0].type === 'characterData' && _parchment2.default.find(mutations[0].target)) {\n\t (function () {\n\t // Optimization for character changes\n\t var textBlot = _parchment2.default.find(mutations[0].target);\n\t var formats = (0, _block.bubbleFormats)(textBlot);\n\t var index = textBlot.offset(_this5.scroll);\n\t var oldValue = mutations[0].oldValue.replace(_cursor2.default.CONTENTS, '');\n\t var oldText = new _quillDelta2.default().insert(oldValue);\n\t var newText = new _quillDelta2.default().insert(textBlot.value());\n\t var diffDelta = new _quillDelta2.default().retain(index).concat(oldText.diff(newText, cursorIndex));\n\t change = diffDelta.reduce(function (delta, op) {\n\t if (op.insert) {\n\t return delta.insert(op.insert, formats);\n\t } else {\n\t return delta.push(op);\n\t }\n\t }, new _quillDelta2.default());\n\t _this5.delta = oldDelta.compose(change);\n\t })();\n\t } else {\n\t this.delta = this.getDelta();\n\t if (!change || !(0, _deepEqual2.default)(oldDelta.compose(change), this.delta)) {\n\t change = oldDelta.diff(this.delta, cursorIndex);\n\t }\n\t }\n\t return change;\n\t }\n\t }]);\n\t\n\t return Editor;\n\t}();\n\t\n\tfunction combineFormats(formats, combined) {\n\t return Object.keys(combined).reduce(function (merged, name) {\n\t if (formats[name] == null) return merged;\n\t if (combined[name] === formats[name]) {\n\t merged[name] = combined[name];\n\t } else if (Array.isArray(combined[name])) {\n\t if (combined[name].indexOf(formats[name]) < 0) {\n\t merged[name] = combined[name].concat([formats[name]]);\n\t }\n\t } else {\n\t merged[name] = [combined[name], formats[name]];\n\t }\n\t return merged;\n\t }, {});\n\t}\n\t\n\tfunction normalizeDelta(delta) {\n\t return delta.reduce(function (delta, op) {\n\t if (op.insert === 1) {\n\t var attributes = (0, _clone2.default)(op.attributes);\n\t delete attributes['image'];\n\t return delta.insert({ image: op.attributes.image }, attributes);\n\t }\n\t if (op.attributes != null && (op.attributes.list === true || op.attributes.bullet === true)) {\n\t op = (0, _clone2.default)(op);\n\t if (op.attributes.list) {\n\t op.attributes.list = 'ordered';\n\t } else {\n\t op.attributes.list = 'bullet';\n\t delete op.attributes.bullet;\n\t }\n\t }\n\t if (typeof op.insert === 'string') {\n\t var text = op.insert.replace(/\\r\\n/g, '\\n').replace(/\\r/g, '\\n');\n\t return delta.insert(text, op.attributes);\n\t }\n\t return delta.push(op);\n\t }, new _quillDelta2.default());\n\t}\n\t\n\texports.default = Editor;\n\n/***/ },\n/* 28 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.Code = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _text = __webpack_require__(33);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Code = function (_Inline) {\n\t _inherits(Code, _Inline);\n\t\n\t function Code() {\n\t _classCallCheck(this, Code);\n\t\n\t return _possibleConstructorReturn(this, (Code.__proto__ || Object.getPrototypeOf(Code)).apply(this, arguments));\n\t }\n\t\n\t return Code;\n\t}(_inline2.default);\n\t\n\tCode.blotName = 'code';\n\tCode.tagName = 'CODE';\n\t\n\tvar CodeBlock = function (_Block) {\n\t _inherits(CodeBlock, _Block);\n\t\n\t function CodeBlock() {\n\t _classCallCheck(this, CodeBlock);\n\t\n\t return _possibleConstructorReturn(this, (CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock)).apply(this, arguments));\n\t }\n\t\n\t _createClass(CodeBlock, [{\n\t key: 'delta',\n\t value: function delta() {\n\t var _this3 = this;\n\t\n\t var text = this.domNode.textContent;\n\t if (text.endsWith('\\n')) {\n\t // Should always be true\n\t text = text.slice(0, -1);\n\t }\n\t return text.split('\\n').reduce(function (delta, frag) {\n\t return delta.insert(frag).insert('\\n', _this3.formats());\n\t }, new _quillDelta2.default());\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name === this.statics.blotName && value) return;\n\t\n\t var _descendant = this.descendant(_text2.default, this.length() - 1),\n\t _descendant2 = _slicedToArray(_descendant, 1),\n\t text = _descendant2[0];\n\t\n\t if (text != null) {\n\t text.deleteAt(text.length() - 1, 1);\n\t }\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'format', this).call(this, name, value);\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (length === 0) return;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK) == null || name === this.statics.blotName && value === this.statics.formats(this.domNode)) {\n\t return;\n\t }\n\t var nextNewline = this.newlineIndex(index);\n\t if (nextNewline < 0 || nextNewline >= index + length) return;\n\t var prevNewline = this.newlineIndex(index, true) + 1;\n\t var isolateLength = nextNewline - prevNewline + 1;\n\t var blot = this.isolate(prevNewline, isolateLength);\n\t var next = blot.next;\n\t blot.format(name, value);\n\t if (next instanceof CodeBlock) {\n\t next.formatAt(0, index - prevNewline + length - isolateLength, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null) return;\n\t\n\t var _descendant3 = this.descendant(_text2.default, index),\n\t _descendant4 = _slicedToArray(_descendant3, 2),\n\t text = _descendant4[0],\n\t offset = _descendant4[1];\n\t\n\t text.insertAt(offset, value);\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t var length = this.domNode.textContent.length;\n\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t return length + 1;\n\t }\n\t return length;\n\t }\n\t }, {\n\t key: 'newlineIndex',\n\t value: function newlineIndex(searchIndex) {\n\t var reverse = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t if (!reverse) {\n\t var offset = this.domNode.textContent.slice(searchIndex).indexOf('\\n');\n\t return offset > -1 ? searchIndex + offset : -1;\n\t } else {\n\t return this.domNode.textContent.slice(0, searchIndex).lastIndexOf('\\n');\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t if (!this.domNode.textContent.endsWith('\\n')) {\n\t this.appendChild(_parchment2.default.create('text', '\\n'));\n\t }\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'optimize', this).call(this);\n\t var next = this.next;\n\t if (next != null && next.prev === this && next.statics.blotName === this.statics.blotName && this.statics.formats(this.domNode) === next.statics.formats(next.domNode)) {\n\t next.optimize();\n\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t }\n\t }, {\n\t key: 'replace',\n\t value: function replace(target) {\n\t _get(CodeBlock.prototype.__proto__ || Object.getPrototypeOf(CodeBlock.prototype), 'replace', this).call(this, target);\n\t [].slice.call(this.domNode.querySelectorAll('*')).forEach(function (node) {\n\t var blot = _parchment2.default.find(node);\n\t if (blot == null) {\n\t node.parentNode.removeChild(node);\n\t } else if (blot instanceof _parchment2.default.Embed) {\n\t blot.remove();\n\t } else {\n\t blot.unwrap();\n\t }\n\t });\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var domNode = _get(CodeBlock.__proto__ || Object.getPrototypeOf(CodeBlock), 'create', this).call(this, value);\n\t domNode.setAttribute('spellcheck', false);\n\t return domNode;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t return true;\n\t }\n\t }]);\n\t\n\t return CodeBlock;\n\t}(_block2.default);\n\t\n\tCodeBlock.blotName = 'code-block';\n\tCodeBlock.tagName = 'PRE';\n\tCodeBlock.TAB = ' ';\n\t\n\texports.Code = Code;\n\texports.default = CodeBlock;\n\n/***/ },\n/* 29 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BlockEmbed = exports.bubbleFormats = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _break = __webpack_require__(30);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _text = __webpack_require__(33);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar NEWLINE_LENGTH = 1;\n\t\n\tvar BlockEmbed = function (_Embed) {\n\t _inherits(BlockEmbed, _Embed);\n\t\n\t function BlockEmbed() {\n\t _classCallCheck(this, BlockEmbed);\n\t\n\t return _possibleConstructorReturn(this, (BlockEmbed.__proto__ || Object.getPrototypeOf(BlockEmbed)).apply(this, arguments));\n\t }\n\t\n\t _createClass(BlockEmbed, [{\n\t key: 'attach',\n\t value: function attach() {\n\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'attach', this).call(this);\n\t this.attributes = new _parchment2.default.Attributor.Store(this.domNode);\n\t }\n\t }, {\n\t key: 'delta',\n\t value: function delta() {\n\t return new _quillDelta2.default().insert(this.value(), (0, _extend2.default)(this.formats(), this.attributes.values()));\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var attribute = _parchment2.default.query(name, _parchment2.default.Scope.BLOCK_ATTRIBUTE);\n\t if (attribute != null) {\n\t this.attributes.attribute(attribute, value);\n\t }\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t this.format(name, value);\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (typeof value === 'string' && value.endsWith('\\n')) {\n\t var block = _parchment2.default.create(Block.blotName);\n\t this.parent.insertBefore(block, index === 0 ? this : this.next);\n\t block.insertAt(0, value.slice(0, -1));\n\t } else {\n\t _get(BlockEmbed.prototype.__proto__ || Object.getPrototypeOf(BlockEmbed.prototype), 'insertAt', this).call(this, index, value, def);\n\t }\n\t }\n\t }]);\n\t\n\t return BlockEmbed;\n\t}(_embed2.default);\n\t\n\tBlockEmbed.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\t// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\t\n\t\n\tvar Block = function (_Parchment$Block) {\n\t _inherits(Block, _Parchment$Block);\n\t\n\t function Block(domNode) {\n\t _classCallCheck(this, Block);\n\t\n\t var _this2 = _possibleConstructorReturn(this, (Block.__proto__ || Object.getPrototypeOf(Block)).call(this, domNode));\n\t\n\t _this2.cache = {};\n\t return _this2;\n\t }\n\t\n\t _createClass(Block, [{\n\t key: 'delta',\n\t value: function delta() {\n\t if (this.cache.delta == null) {\n\t this.cache.delta = this.descendants(_parchment2.default.Leaf).reduce(function (delta, leaf) {\n\t if (leaf.length() === 0) {\n\t return delta;\n\t } else {\n\t return delta.insert(leaf.value(), bubbleFormats(leaf));\n\t }\n\t }, new _quillDelta2.default()).insert('\\n', bubbleFormats(this));\n\t }\n\t return this.cache.delta;\n\t }\n\t }, {\n\t key: 'deleteAt',\n\t value: function deleteAt(index, length) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'deleteAt', this).call(this, index, length);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (length <= 0) return;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t if (index + length === this.length()) {\n\t this.format(name, value);\n\t }\n\t } else {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'formatAt', this).call(this, index, Math.min(length, this.length() - index - 1), name, value);\n\t }\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null) return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, index, value, def);\n\t if (value.length === 0) return;\n\t var lines = value.split('\\n');\n\t var text = lines.shift();\n\t if (text.length > 0) {\n\t if (index < this.length() - 1 || this.children.tail == null) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertAt', this).call(this, Math.min(index, this.length() - 1), text);\n\t } else {\n\t this.children.tail.insertAt(this.children.tail.length(), text);\n\t }\n\t this.cache = {};\n\t }\n\t var block = this;\n\t lines.reduce(function (index, line) {\n\t block = block.split(index, true);\n\t block.insertAt(0, line);\n\t return line.length;\n\t }, index + text.length);\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t var head = this.children.head;\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'insertBefore', this).call(this, blot, ref);\n\t if (head instanceof _break2.default) {\n\t head.remove();\n\t }\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t if (this.cache.length == null) {\n\t this.cache.length = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'length', this).call(this) + NEWLINE_LENGTH;\n\t }\n\t return this.cache.length;\n\t }\n\t }, {\n\t key: 'moveChildren',\n\t value: function moveChildren(target, ref) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'moveChildren', this).call(this, target, ref);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'optimize', this).call(this);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'path',\n\t value: function path(index) {\n\t return _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'path', this).call(this, index, true);\n\t }\n\t }, {\n\t key: 'removeChild',\n\t value: function removeChild(child) {\n\t _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'removeChild', this).call(this, child);\n\t this.cache = {};\n\t }\n\t }, {\n\t key: 'split',\n\t value: function split(index) {\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n\t var clone = this.clone();\n\t if (index === 0) {\n\t this.parent.insertBefore(clone, this);\n\t return this;\n\t } else {\n\t this.parent.insertBefore(clone, this.next);\n\t return clone;\n\t }\n\t } else {\n\t var next = _get(Block.prototype.__proto__ || Object.getPrototypeOf(Block.prototype), 'split', this).call(this, index, force);\n\t this.cache = {};\n\t return next;\n\t }\n\t }\n\t }]);\n\t\n\t return Block;\n\t}(_parchment2.default.Block);\n\t\n\tBlock.blotName = 'block';\n\tBlock.tagName = 'P';\n\tBlock.defaultChild = 'break';\n\tBlock.allowedChildren = [_inline2.default, _embed2.default, _text2.default];\n\t\n\tfunction bubbleFormats(blot) {\n\t var formats = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t if (blot == null) return formats;\n\t if (typeof blot.formats === 'function') {\n\t formats = (0, _extend2.default)(formats, blot.formats());\n\t }\n\t if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n\t return formats;\n\t }\n\t return bubbleFormats(blot.parent, formats);\n\t}\n\t\n\texports.bubbleFormats = bubbleFormats;\n\texports.BlockEmbed = BlockEmbed;\n\texports.default = Block;\n\n/***/ },\n/* 30 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Break = function (_Embed) {\n\t _inherits(Break, _Embed);\n\t\n\t function Break() {\n\t _classCallCheck(this, Break);\n\t\n\t return _possibleConstructorReturn(this, (Break.__proto__ || Object.getPrototypeOf(Break)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Break, [{\n\t key: 'insertInto',\n\t value: function insertInto(parent, ref) {\n\t if (parent.children.length === 0) {\n\t _get(Break.prototype.__proto__ || Object.getPrototypeOf(Break.prototype), 'insertInto', this).call(this, parent, ref);\n\t } else {\n\t this.remove();\n\t }\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t return 0;\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value() {\n\t return '';\n\t }\n\t }], [{\n\t key: 'value',\n\t value: function value() {\n\t return undefined;\n\t }\n\t }]);\n\t\n\t return Break;\n\t}(_embed2.default);\n\t\n\tBreak.blotName = 'break';\n\tBreak.tagName = 'BR';\n\t\n\texports.default = Break;\n\n/***/ },\n/* 31 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Embed = function (_Parchment$Embed) {\n\t _inherits(Embed, _Parchment$Embed);\n\t\n\t function Embed() {\n\t _classCallCheck(this, Embed);\n\t\n\t return _possibleConstructorReturn(this, (Embed.__proto__ || Object.getPrototypeOf(Embed)).apply(this, arguments));\n\t }\n\t\n\t return Embed;\n\t}(_parchment2.default.Embed);\n\t\n\texports.default = Embed;\n\n/***/ },\n/* 32 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _text = __webpack_require__(33);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Inline = function (_Parchment$Inline) {\n\t _inherits(Inline, _Parchment$Inline);\n\t\n\t function Inline() {\n\t _classCallCheck(this, Inline);\n\t\n\t return _possibleConstructorReturn(this, (Inline.__proto__ || Object.getPrototypeOf(Inline)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Inline, [{\n\t key: 'formatAt',\n\t value: function formatAt(index, length, name, value) {\n\t if (Inline.compare(this.statics.blotName, name) < 0 && _parchment2.default.query(name, _parchment2.default.Scope.BLOT)) {\n\t var blot = this.isolate(index, length);\n\t if (value) {\n\t blot.wrap(name, value);\n\t }\n\t } else {\n\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'formatAt', this).call(this, index, length, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Inline.prototype.__proto__ || Object.getPrototypeOf(Inline.prototype), 'optimize', this).call(this);\n\t if (this.parent instanceof Inline && Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n\t var parent = this.parent.isolate(this.offset(), this.length());\n\t this.moveChildren(parent);\n\t parent.wrap(this);\n\t }\n\t }\n\t }], [{\n\t key: 'compare',\n\t value: function compare(self, other) {\n\t var selfIndex = Inline.order.indexOf(self);\n\t var otherIndex = Inline.order.indexOf(other);\n\t if (selfIndex >= 0 || otherIndex >= 0) {\n\t return selfIndex - otherIndex;\n\t } else if (self === other) {\n\t return 0;\n\t } else if (self < other) {\n\t return -1;\n\t } else {\n\t return 1;\n\t }\n\t }\n\t }]);\n\t\n\t return Inline;\n\t}(_parchment2.default.Inline);\n\t\n\tInline.allowedChildren = [Inline, _embed2.default, _text2.default];\n\t// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\n\tInline.order = ['cursor', 'inline', // Must be lower\n\t'code', 'underline', 'strike', 'italic', 'bold', 'script', 'link' // Must be higher\n\t];\n\t\n\texports.default = Inline;\n\n/***/ },\n/* 33 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar TextBlot = function (_Parchment$Text) {\n\t _inherits(TextBlot, _Parchment$Text);\n\t\n\t function TextBlot() {\n\t _classCallCheck(this, TextBlot);\n\t\n\t return _possibleConstructorReturn(this, (TextBlot.__proto__ || Object.getPrototypeOf(TextBlot)).apply(this, arguments));\n\t }\n\t\n\t return TextBlot;\n\t}(_parchment2.default.Text);\n\t\n\texports.default = TextBlot;\n\n/***/ },\n/* 34 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _text = __webpack_require__(33);\n\t\n\tvar _text2 = _interopRequireDefault(_text);\n\t\n\tvar _emitter = __webpack_require__(35);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Cursor = function (_Embed) {\n\t _inherits(Cursor, _Embed);\n\t\n\t _createClass(Cursor, null, [{\n\t key: 'value',\n\t value: function value() {\n\t return undefined;\n\t }\n\t }]);\n\t\n\t function Cursor(domNode, selection) {\n\t _classCallCheck(this, Cursor);\n\t\n\t var _this = _possibleConstructorReturn(this, (Cursor.__proto__ || Object.getPrototypeOf(Cursor)).call(this, domNode));\n\t\n\t _this.selection = selection;\n\t _this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t _this.domNode.appendChild(_this.textNode);\n\t _this._length = 0;\n\t return _this;\n\t }\n\t\n\t _createClass(Cursor, [{\n\t key: 'detach',\n\t value: function detach() {\n\t // super.detach() will also clear domNode.__blot\n\t if (this.parent != null) this.parent.removeChild(this);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (this._length !== 0) {\n\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'format', this).call(this, name, value);\n\t }\n\t var target = this,\n\t index = 0;\n\t while (target != null && target.statics.scope !== _parchment2.default.Scope.BLOCK_BLOT) {\n\t index += target.offset(target.parent);\n\t target = target.parent;\n\t }\n\t if (target != null) {\n\t this._length = Cursor.CONTENTS.length;\n\t target.optimize();\n\t target.formatAt(index, Cursor.CONTENTS.length, name, value);\n\t this._length = 0;\n\t }\n\t }\n\t }, {\n\t key: 'index',\n\t value: function index(node, offset) {\n\t if (node === this.textNode) return 0;\n\t return _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'index', this).call(this, node, offset);\n\t }\n\t }, {\n\t key: 'length',\n\t value: function length() {\n\t return this._length;\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position() {\n\t return [this.textNode, this.textNode.data.length];\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t _get(Cursor.prototype.__proto__ || Object.getPrototypeOf(Cursor.prototype), 'remove', this).call(this);\n\t this.parent = null;\n\t }\n\t }, {\n\t key: 'restore',\n\t value: function restore() {\n\t var _this2 = this;\n\t\n\t if (this.selection.composing) return;\n\t if (this.parent == null) return;\n\t var textNode = this.textNode;\n\t var range = this.selection.getNativeRange();\n\t var restoreText = void 0,\n\t start = void 0,\n\t end = void 0;\n\t if (range != null && range.start.node === textNode && range.end.node === textNode) {\n\t var _ref = [textNode, range.start.offset, range.end.offset];\n\t restoreText = _ref[0];\n\t start = _ref[1];\n\t end = _ref[2];\n\t }\n\t // Link format will insert text outside of anchor tag\n\t while (this.domNode.lastChild != null && this.domNode.lastChild !== this.textNode) {\n\t this.domNode.parentNode.insertBefore(this.domNode.lastChild, this.domNode);\n\t }\n\t if (this.textNode.data !== Cursor.CONTENTS) {\n\t var text = this.textNode.data.split(Cursor.CONTENTS).join('');\n\t if (this.next instanceof _text2.default) {\n\t restoreText = this.next.domNode;\n\t this.next.insertAt(0, text);\n\t this.textNode.data = Cursor.CONTENTS;\n\t } else {\n\t this.textNode.data = text;\n\t this.parent.insertBefore(_parchment2.default.create(this.textNode), this);\n\t this.textNode = document.createTextNode(Cursor.CONTENTS);\n\t this.domNode.appendChild(this.textNode);\n\t }\n\t }\n\t this.remove();\n\t if (start == null) return;\n\t this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _map = [start, end].map(function (offset) {\n\t return Math.max(0, Math.min(restoreText.data.length, offset - 1));\n\t });\n\t\n\t var _map2 = _slicedToArray(_map, 2);\n\t\n\t start = _map2[0];\n\t end = _map2[1];\n\t\n\t _this2.selection.setNativeRange(restoreText, start, restoreText, end);\n\t });\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(mutations) {\n\t var _this3 = this;\n\t\n\t mutations.forEach(function (mutation) {\n\t if (mutation.type === 'characterData' && mutation.target === _this3.textNode) {\n\t _this3.restore();\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value() {\n\t return '';\n\t }\n\t }]);\n\t\n\t return Cursor;\n\t}(_embed2.default);\n\t\n\tCursor.blotName = 'cursor';\n\tCursor.className = 'ql-cursor';\n\tCursor.tagName = 'span';\n\tCursor.CONTENTS = '\\uFEFF'; // Zero width no break space\n\t\n\t\n\texports.default = Cursor;\n\n/***/ },\n/* 35 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _eventemitter = __webpack_require__(36);\n\t\n\tvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\t\n\tvar _logger = __webpack_require__(37);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar debug = (0, _logger2.default)('quill:events');\n\t\n\tvar Emitter = function (_EventEmitter) {\n\t _inherits(Emitter, _EventEmitter);\n\t\n\t function Emitter() {\n\t _classCallCheck(this, Emitter);\n\t\n\t var _this = _possibleConstructorReturn(this, (Emitter.__proto__ || Object.getPrototypeOf(Emitter)).call(this));\n\t\n\t _this.on('error', debug.error);\n\t return _this;\n\t }\n\t\n\t _createClass(Emitter, [{\n\t key: 'emit',\n\t value: function emit() {\n\t debug.log.apply(debug, arguments);\n\t _get(Emitter.prototype.__proto__ || Object.getPrototypeOf(Emitter.prototype), 'emit', this).apply(this, arguments);\n\t }\n\t }]);\n\t\n\t return Emitter;\n\t}(_eventemitter2.default);\n\t\n\tEmitter.events = {\n\t EDITOR_CHANGE: 'editor-change',\n\t SCROLL_BEFORE_UPDATE: 'scroll-before-update',\n\t SCROLL_OPTIMIZE: 'scroll-optimize',\n\t SCROLL_UPDATE: 'scroll-update',\n\t SELECTION_CHANGE: 'selection-change',\n\t TEXT_CHANGE: 'text-change'\n\t};\n\tEmitter.sources = {\n\t API: 'api',\n\t SILENT: 'silent',\n\t USER: 'user'\n\t};\n\t\n\texports.default = Emitter;\n\n/***/ },\n/* 36 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar has = Object.prototype.hasOwnProperty\n\t , prefix = '~';\n\t\n\t/**\n\t * Constructor to create a storage for our `EE` objects.\n\t * An `Events` instance is a plain object whose properties are event names.\n\t *\n\t * @constructor\n\t * @api private\n\t */\n\tfunction Events() {}\n\t\n\t//\n\t// We try to not inherit from `Object.prototype`. In some engines creating an\n\t// instance in this way is faster than calling `Object.create(null)` directly.\n\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t// character to make sure that the built-in object properties are not\n\t// overridden or used as an attack vector.\n\t//\n\tif (Object.create) {\n\t Events.prototype = Object.create(null);\n\t\n\t //\n\t // This hack is needed because the `__proto__` property is still inherited in\n\t // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n\t //\n\t if (!new Events().__proto__) prefix = false;\n\t}\n\t\n\t/**\n\t * Representation of a single event listener.\n\t *\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} context The context to invoke the listener with.\n\t * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n\t * @constructor\n\t * @api private\n\t */\n\tfunction EE(fn, context, once) {\n\t this.fn = fn;\n\t this.context = context;\n\t this.once = once || false;\n\t}\n\t\n\t/**\n\t * Minimal `EventEmitter` interface that is molded against the Node.js\n\t * `EventEmitter` interface.\n\t *\n\t * @constructor\n\t * @api public\n\t */\n\tfunction EventEmitter() {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t}\n\t\n\t/**\n\t * Return an array listing the events for which the emitter has registered\n\t * listeners.\n\t *\n\t * @returns {Array}\n\t * @api public\n\t */\n\tEventEmitter.prototype.eventNames = function eventNames() {\n\t var names = []\n\t , events\n\t , name;\n\t\n\t if (this._eventsCount === 0) return names;\n\t\n\t for (name in (events = this._events)) {\n\t if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n\t }\n\t\n\t if (Object.getOwnPropertySymbols) {\n\t return names.concat(Object.getOwnPropertySymbols(events));\n\t }\n\t\n\t return names;\n\t};\n\t\n\t/**\n\t * Return the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Boolean} exists Only check if there are listeners.\n\t * @returns {Array|Boolean}\n\t * @api public\n\t */\n\tEventEmitter.prototype.listeners = function listeners(event, exists) {\n\t var evt = prefix ? prefix + event : event\n\t , available = this._events[evt];\n\t\n\t if (exists) return !!available;\n\t if (!available) return [];\n\t if (available.fn) return [available.fn];\n\t\n\t for (var i = 0, l = available.length, ee = new Array(l); i < l; i++) {\n\t ee[i] = available[i].fn;\n\t }\n\t\n\t return ee;\n\t};\n\t\n\t/**\n\t * Calls each of the listeners registered for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @returns {Boolean} `true` if the event had listeners, else `false`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n\t var evt = prefix ? prefix + event : event;\n\t\n\t if (!this._events[evt]) return false;\n\t\n\t var listeners = this._events[evt]\n\t , len = arguments.length\n\t , args\n\t , i;\n\t\n\t if (listeners.fn) {\n\t if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\t\n\t switch (len) {\n\t case 1: return listeners.fn.call(listeners.context), true;\n\t case 2: return listeners.fn.call(listeners.context, a1), true;\n\t case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n\t case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n\t case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n\t case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n\t }\n\t\n\t for (i = 1, args = new Array(len -1); i < len; i++) {\n\t args[i - 1] = arguments[i];\n\t }\n\t\n\t listeners.fn.apply(listeners.context, args);\n\t } else {\n\t var length = listeners.length\n\t , j;\n\t\n\t for (i = 0; i < length; i++) {\n\t if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\t\n\t switch (len) {\n\t case 1: listeners[i].fn.call(listeners[i].context); break;\n\t case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n\t case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n\t case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n\t default:\n\t if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n\t args[j - 1] = arguments[j];\n\t }\n\t\n\t listeners[i].fn.apply(listeners[i].context, args);\n\t }\n\t }\n\t }\n\t\n\t return true;\n\t};\n\t\n\t/**\n\t * Add a listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.on = function on(event, fn, context) {\n\t var listener = new EE(fn, context || this)\n\t , evt = prefix ? prefix + event : event;\n\t\n\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [this._events[evt], listener];\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Add a one-time listener for a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn The listener function.\n\t * @param {Mixed} [context=this] The context to invoke the listener with.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.once = function once(event, fn, context) {\n\t var listener = new EE(fn, context || this, true)\n\t , evt = prefix ? prefix + event : event;\n\t\n\t if (!this._events[evt]) this._events[evt] = listener, this._eventsCount++;\n\t else if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [this._events[evt], listener];\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Remove the listeners of a given event.\n\t *\n\t * @param {String|Symbol} event The event name.\n\t * @param {Function} fn Only remove the listeners that match this function.\n\t * @param {Mixed} context Only remove the listeners that have this context.\n\t * @param {Boolean} once Only remove one-time listeners.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n\t var evt = prefix ? prefix + event : event;\n\t\n\t if (!this._events[evt]) return this;\n\t if (!fn) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t return this;\n\t }\n\t\n\t var listeners = this._events[evt];\n\t\n\t if (listeners.fn) {\n\t if (\n\t listeners.fn === fn\n\t && (!once || listeners.once)\n\t && (!context || listeners.context === context)\n\t ) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t } else {\n\t for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n\t if (\n\t listeners[i].fn !== fn\n\t || (once && !listeners[i].once)\n\t || (context && listeners[i].context !== context)\n\t ) {\n\t events.push(listeners[i]);\n\t }\n\t }\n\t\n\t //\n\t // Reset the array, or remove it completely if we have no more listeners.\n\t //\n\t if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n\t else if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Remove all listeners, or those of the specified event.\n\t *\n\t * @param {String|Symbol} [event] The event name.\n\t * @returns {EventEmitter} `this`.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t var evt;\n\t\n\t if (event) {\n\t evt = prefix ? prefix + event : event;\n\t if (this._events[evt]) {\n\t if (--this._eventsCount === 0) this._events = new Events();\n\t else delete this._events[evt];\n\t }\n\t } else {\n\t this._events = new Events();\n\t this._eventsCount = 0;\n\t }\n\t\n\t return this;\n\t};\n\t\n\t//\n\t// Alias methods names because people roll like that.\n\t//\n\tEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\tEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\t\n\t//\n\t// This function doesn't apply anymore.\n\t//\n\tEventEmitter.prototype.setMaxListeners = function setMaxListeners() {\n\t return this;\n\t};\n\t\n\t//\n\t// Expose the prefix.\n\t//\n\tEventEmitter.prefixed = prefix;\n\t\n\t//\n\t// Allow `EventEmitter` to be imported as module namespace.\n\t//\n\tEventEmitter.EventEmitter = EventEmitter;\n\t\n\t//\n\t// Expose the module.\n\t//\n\tif ('undefined' !== typeof module) {\n\t module.exports = EventEmitter;\n\t}\n\n\n/***/ },\n/* 37 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\tvar levels = ['error', 'warn', 'log', 'info'];\n\tvar level = 'warn';\n\t\n\tfunction debug(method) {\n\t if (levels.indexOf(method) <= levels.indexOf(level)) {\n\t for (var _len = arguments.length, args = Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n\t args[_key - 1] = arguments[_key];\n\t }\n\t\n\t console[method].apply(console, args); // eslint-disable-line no-console\n\t }\n\t}\n\t\n\tfunction namespace(ns) {\n\t return levels.reduce(function (logger, method) {\n\t logger[method] = debug.bind(console, method, ns);\n\t return logger;\n\t }, {});\n\t}\n\t\n\tdebug.level = namespace.level = function (newLevel) {\n\t level = newLevel;\n\t};\n\t\n\texports.default = namespace;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\tvar clone = (function() {\n\t'use strict';\n\t\n\tvar nativeMap;\n\ttry {\n\t nativeMap = Map;\n\t} catch(_) {\n\t // maybe a reference error because no `Map`. Give it a dummy value that no\n\t // value will ever be an instanceof.\n\t nativeMap = function() {};\n\t}\n\t\n\tvar nativeSet;\n\ttry {\n\t nativeSet = Set;\n\t} catch(_) {\n\t nativeSet = function() {};\n\t}\n\t\n\tvar nativePromise;\n\ttry {\n\t nativePromise = Promise;\n\t} catch(_) {\n\t nativePromise = function() {};\n\t}\n\t\n\t/**\n\t * Clones (copies) an Object using deep copying.\n\t *\n\t * This function supports circular references by default, but if you are certain\n\t * there are no circular references in your object, you can save some CPU time\n\t * by calling clone(obj, false).\n\t *\n\t * Caution: if `circular` is false and `parent` contains circular references,\n\t * your program may enter an infinite loop and crash.\n\t *\n\t * @param `parent` - the object to be cloned\n\t * @param `circular` - set to true if the object to be cloned may contain\n\t * circular references. (optional - true by default)\n\t * @param `depth` - set to a number if the object is only to be cloned to\n\t * a particular depth. (optional - defaults to Infinity)\n\t * @param `prototype` - sets the prototype to be used when cloning an object.\n\t * (optional - defaults to parent prototype).\n\t * @param `includeNonEnumerable` - set to true if the non-enumerable properties\n\t * should be cloned as well. Non-enumerable properties on the prototype\n\t * chain will be ignored. (optional - false by default)\n\t*/\n\tfunction clone(parent, circular, depth, prototype, includeNonEnumerable) {\n\t if (typeof circular === 'object') {\n\t depth = circular.depth;\n\t prototype = circular.prototype;\n\t includeNonEnumerable = circular.includeNonEnumerable;\n\t circular = circular.circular;\n\t }\n\t // maintain two arrays for circular references, where corresponding parents\n\t // and children have the same index\n\t var allParents = [];\n\t var allChildren = [];\n\t\n\t var useBuffer = typeof Buffer != 'undefined';\n\t\n\t if (typeof circular == 'undefined')\n\t circular = true;\n\t\n\t if (typeof depth == 'undefined')\n\t depth = Infinity;\n\t\n\t // recurse this function so we don't reset allParents and allChildren\n\t function _clone(parent, depth) {\n\t // cloning null always returns null\n\t if (parent === null)\n\t return null;\n\t\n\t if (depth === 0)\n\t return parent;\n\t\n\t var child;\n\t var proto;\n\t if (typeof parent != 'object') {\n\t return parent;\n\t }\n\t\n\t if (parent instanceof nativeMap) {\n\t child = new nativeMap();\n\t } else if (parent instanceof nativeSet) {\n\t child = new nativeSet();\n\t } else if (parent instanceof nativePromise) {\n\t child = new nativePromise(function (resolve, reject) {\n\t parent.then(function(value) {\n\t resolve(_clone(value, depth - 1));\n\t }, function(err) {\n\t reject(_clone(err, depth - 1));\n\t });\n\t });\n\t } else if (clone.__isArray(parent)) {\n\t child = [];\n\t } else if (clone.__isRegExp(parent)) {\n\t child = new RegExp(parent.source, __getRegExpFlags(parent));\n\t if (parent.lastIndex) child.lastIndex = parent.lastIndex;\n\t } else if (clone.__isDate(parent)) {\n\t child = new Date(parent.getTime());\n\t } else if (useBuffer && Buffer.isBuffer(parent)) {\n\t child = new Buffer(parent.length);\n\t parent.copy(child);\n\t return child;\n\t } else if (parent instanceof Error) {\n\t child = Object.create(parent);\n\t } else {\n\t if (typeof prototype == 'undefined') {\n\t proto = Object.getPrototypeOf(parent);\n\t child = Object.create(proto);\n\t }\n\t else {\n\t child = Object.create(prototype);\n\t proto = prototype;\n\t }\n\t }\n\t\n\t if (circular) {\n\t var index = allParents.indexOf(parent);\n\t\n\t if (index != -1) {\n\t return allChildren[index];\n\t }\n\t allParents.push(parent);\n\t allChildren.push(child);\n\t }\n\t\n\t if (parent instanceof nativeMap) {\n\t var keyIterator = parent.keys();\n\t while(true) {\n\t var next = keyIterator.next();\n\t if (next.done) {\n\t break;\n\t }\n\t var keyChild = _clone(next.value, depth - 1);\n\t var valueChild = _clone(parent.get(next.value), depth - 1);\n\t child.set(keyChild, valueChild);\n\t }\n\t }\n\t if (parent instanceof nativeSet) {\n\t var iterator = parent.keys();\n\t while(true) {\n\t var next = iterator.next();\n\t if (next.done) {\n\t break;\n\t }\n\t var entryChild = _clone(next.value, depth - 1);\n\t child.add(entryChild);\n\t }\n\t }\n\t\n\t for (var i in parent) {\n\t var attrs;\n\t if (proto) {\n\t attrs = Object.getOwnPropertyDescriptor(proto, i);\n\t }\n\t\n\t if (attrs && attrs.set == null) {\n\t continue;\n\t }\n\t child[i] = _clone(parent[i], depth - 1);\n\t }\n\t\n\t if (Object.getOwnPropertySymbols) {\n\t var symbols = Object.getOwnPropertySymbols(parent);\n\t for (var i = 0; i < symbols.length; i++) {\n\t // Don't need to worry about cloning a symbol because it is a primitive,\n\t // like a number or string.\n\t var symbol = symbols[i];\n\t var descriptor = Object.getOwnPropertyDescriptor(parent, symbol);\n\t if (descriptor && !descriptor.enumerable && !includeNonEnumerable) {\n\t continue;\n\t }\n\t child[symbol] = _clone(parent[symbol], depth - 1);\n\t if (!descriptor.enumerable) {\n\t Object.defineProperty(child, symbol, {\n\t enumerable: false\n\t });\n\t }\n\t }\n\t }\n\t\n\t if (includeNonEnumerable) {\n\t var allPropertyNames = Object.getOwnPropertyNames(parent);\n\t for (var i = 0; i < allPropertyNames.length; i++) {\n\t var propertyName = allPropertyNames[i];\n\t var descriptor = Object.getOwnPropertyDescriptor(parent, propertyName);\n\t if (descriptor && descriptor.enumerable) {\n\t continue;\n\t }\n\t child[propertyName] = _clone(parent[propertyName], depth - 1);\n\t Object.defineProperty(child, propertyName, {\n\t enumerable: false\n\t });\n\t }\n\t }\n\t\n\t return child;\n\t }\n\t\n\t return _clone(parent, depth);\n\t}\n\t\n\t/**\n\t * Simple flat clone using prototype, accepts only objects, usefull for property\n\t * override on FLAT configuration object (no nested props).\n\t *\n\t * USE WITH CAUTION! This may not behave as you wish if you do not know how this\n\t * works.\n\t */\n\tclone.clonePrototype = function clonePrototype(parent) {\n\t if (parent === null)\n\t return null;\n\t\n\t var c = function () {};\n\t c.prototype = parent;\n\t return new c();\n\t};\n\t\n\t// private utility functions\n\t\n\tfunction __objToStr(o) {\n\t return Object.prototype.toString.call(o);\n\t}\n\tclone.__objToStr = __objToStr;\n\t\n\tfunction __isDate(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object Date]';\n\t}\n\tclone.__isDate = __isDate;\n\t\n\tfunction __isArray(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object Array]';\n\t}\n\tclone.__isArray = __isArray;\n\t\n\tfunction __isRegExp(o) {\n\t return typeof o === 'object' && __objToStr(o) === '[object RegExp]';\n\t}\n\tclone.__isRegExp = __isRegExp;\n\t\n\tfunction __getRegExpFlags(re) {\n\t var flags = '';\n\t if (re.global) flags += 'g';\n\t if (re.ignoreCase) flags += 'i';\n\t if (re.multiline) flags += 'm';\n\t return flags;\n\t}\n\tclone.__getRegExpFlags = __getRegExpFlags;\n\t\n\treturn clone;\n\t})();\n\t\n\tif (typeof module === 'object' && module.exports) {\n\t module.exports = clone;\n\t}\n\n\n/***/ },\n/* 39 */\n/***/ function(module, exports) {\n\n\t\"use strict\";\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Module = function Module(quill) {\n\t var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t\n\t _classCallCheck(this, Module);\n\t\n\t this.quill = quill;\n\t this.options = options;\n\t};\n\t\n\tModule.DEFAULTS = {};\n\t\n\texports.default = Module;\n\n/***/ },\n/* 40 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.Range = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _clone = __webpack_require__(38);\n\t\n\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\tvar _deepEqual = __webpack_require__(22);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _emitter3 = __webpack_require__(35);\n\t\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\tvar _logger = __webpack_require__(37);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar debug = (0, _logger2.default)('quill:selection');\n\t\n\tvar Range = function Range(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t _classCallCheck(this, Range);\n\t\n\t this.index = index;\n\t this.length = length;\n\t};\n\t\n\tvar Selection = function () {\n\t function Selection(scroll, emitter) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, Selection);\n\t\n\t this.emitter = emitter;\n\t this.scroll = scroll;\n\t this.composing = false;\n\t this.root = this.scroll.domNode;\n\t this.root.addEventListener('compositionstart', function () {\n\t _this.composing = true;\n\t });\n\t this.root.addEventListener('compositionend', function () {\n\t _this.composing = false;\n\t });\n\t this.cursor = _parchment2.default.create('cursor', this);\n\t // savedRange is last non-null range\n\t this.lastRange = this.savedRange = new Range(0, 0);\n\t ['keyup', 'mouseup', 'mouseleave', 'touchend', 'touchleave', 'focus', 'blur'].forEach(function (eventName) {\n\t _this.root.addEventListener(eventName, function () {\n\t // When range used to be a selection and user click within the selection,\n\t // the range now being a cursor has not updated yet without setTimeout\n\t setTimeout(_this.update.bind(_this, _emitter4.default.sources.USER), 100);\n\t });\n\t });\n\t this.emitter.on(_emitter4.default.events.EDITOR_CHANGE, function (type, delta) {\n\t if (type === _emitter4.default.events.TEXT_CHANGE && delta.length() > 0) {\n\t _this.update(_emitter4.default.sources.SILENT);\n\t }\n\t });\n\t this.emitter.on(_emitter4.default.events.SCROLL_BEFORE_UPDATE, function () {\n\t var native = _this.getNativeRange();\n\t if (native == null) return;\n\t if (native.start.node === _this.cursor.textNode) return; // cursor.restore() will handle\n\t // TODO unclear if this has negative side effects\n\t _this.emitter.once(_emitter4.default.events.SCROLL_UPDATE, function () {\n\t try {\n\t _this.setNativeRange(native.start.node, native.start.offset, native.end.node, native.end.offset);\n\t } catch (ignored) {}\n\t });\n\t });\n\t this.update(_emitter4.default.sources.SILENT);\n\t }\n\t\n\t _createClass(Selection, [{\n\t key: 'focus',\n\t value: function focus() {\n\t if (this.hasFocus()) return;\n\t this.root.focus();\n\t this.setRange(this.savedRange);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(_format, value) {\n\t if (this.scroll.whitelist != null && !this.scroll.whitelist[_format]) return;\n\t this.scroll.update();\n\t var nativeRange = this.getNativeRange();\n\t if (nativeRange == null || !nativeRange.native.collapsed || _parchment2.default.query(_format, _parchment2.default.Scope.BLOCK)) return;\n\t if (nativeRange.start.node !== this.cursor.textNode) {\n\t var blot = _parchment2.default.find(nativeRange.start.node, false);\n\t if (blot == null) return;\n\t // TODO Give blot ability to not split\n\t if (blot instanceof _parchment2.default.Leaf) {\n\t var after = blot.split(nativeRange.start.offset);\n\t blot.parent.insertBefore(this.cursor, after);\n\t } else {\n\t blot.insertBefore(this.cursor, nativeRange.start.node); // Should never happen\n\t }\n\t this.cursor.attach();\n\t }\n\t this.cursor.format(_format, value);\n\t this.scroll.optimize();\n\t this.setNativeRange(this.cursor.textNode, this.cursor.textNode.data.length);\n\t this.update();\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;\n\t\n\t var scrollLength = this.scroll.length();\n\t index = Math.min(index, scrollLength - 1);\n\t length = Math.min(index + length, scrollLength - 1) - index;\n\t var bounds = void 0,\n\t node = void 0,\n\t _scroll$leaf = this.scroll.leaf(index),\n\t _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2),\n\t leaf = _scroll$leaf2[0],\n\t offset = _scroll$leaf2[1];\n\t if (leaf == null) return null;\n\t\n\t var _leaf$position = leaf.position(offset, true);\n\t\n\t var _leaf$position2 = _slicedToArray(_leaf$position, 2);\n\t\n\t node = _leaf$position2[0];\n\t offset = _leaf$position2[1];\n\t\n\t var range = document.createRange();\n\t if (length > 0) {\n\t range.setStart(node, offset);\n\t\n\t var _scroll$leaf3 = this.scroll.leaf(index + length);\n\t\n\t var _scroll$leaf4 = _slicedToArray(_scroll$leaf3, 2);\n\t\n\t leaf = _scroll$leaf4[0];\n\t offset = _scroll$leaf4[1];\n\t\n\t if (leaf == null) return null;\n\t\n\t var _leaf$position3 = leaf.position(offset, true);\n\t\n\t var _leaf$position4 = _slicedToArray(_leaf$position3, 2);\n\t\n\t node = _leaf$position4[0];\n\t offset = _leaf$position4[1];\n\t\n\t range.setEnd(node, offset);\n\t bounds = range.getBoundingClientRect();\n\t } else {\n\t var side = 'left';\n\t var rect = void 0;\n\t if (node instanceof Text) {\n\t if (offset < node.data.length) {\n\t range.setStart(node, offset);\n\t range.setEnd(node, offset + 1);\n\t } else {\n\t range.setStart(node, offset - 1);\n\t range.setEnd(node, offset);\n\t side = 'right';\n\t }\n\t rect = range.getBoundingClientRect();\n\t } else {\n\t rect = leaf.domNode.getBoundingClientRect();\n\t if (offset > 0) side = 'right';\n\t }\n\t bounds = {\n\t height: rect.height,\n\t left: rect[side],\n\t width: 0,\n\t top: rect.top\n\t };\n\t }\n\t var containerBounds = this.root.parentNode.getBoundingClientRect();\n\t return {\n\t left: bounds.left - containerBounds.left,\n\t right: bounds.left + bounds.width - containerBounds.left,\n\t top: bounds.top - containerBounds.top,\n\t bottom: bounds.top + bounds.height - containerBounds.top,\n\t height: bounds.height,\n\t width: bounds.width\n\t };\n\t }\n\t }, {\n\t key: 'getNativeRange',\n\t value: function getNativeRange() {\n\t var selection = document.getSelection();\n\t if (selection == null || selection.rangeCount <= 0) return null;\n\t var nativeRange = selection.getRangeAt(0);\n\t if (nativeRange == null) return null;\n\t if (!contains(this.root, nativeRange.startContainer) || !nativeRange.collapsed && !contains(this.root, nativeRange.endContainer)) {\n\t return null;\n\t }\n\t var range = {\n\t start: { node: nativeRange.startContainer, offset: nativeRange.startOffset },\n\t end: { node: nativeRange.endContainer, offset: nativeRange.endOffset },\n\t native: nativeRange\n\t };\n\t [range.start, range.end].forEach(function (position) {\n\t var node = position.node,\n\t offset = position.offset;\n\t while (!(node instanceof Text) && node.childNodes.length > 0) {\n\t if (node.childNodes.length > offset) {\n\t node = node.childNodes[offset];\n\t offset = 0;\n\t } else if (node.childNodes.length === offset) {\n\t node = node.lastChild;\n\t offset = node instanceof Text ? node.data.length : node.childNodes.length + 1;\n\t } else {\n\t break;\n\t }\n\t }\n\t position.node = node, position.offset = offset;\n\t });\n\t debug.info('getNativeRange', range);\n\t return range;\n\t }\n\t }, {\n\t key: 'getRange',\n\t value: function getRange() {\n\t var _this2 = this;\n\t\n\t var range = this.getNativeRange();\n\t if (range == null) return [null, null];\n\t var positions = [[range.start.node, range.start.offset]];\n\t if (!range.native.collapsed) {\n\t positions.push([range.end.node, range.end.offset]);\n\t }\n\t var indexes = positions.map(function (position) {\n\t var _position = _slicedToArray(position, 2),\n\t node = _position[0],\n\t offset = _position[1];\n\t\n\t var blot = _parchment2.default.find(node, true);\n\t var index = blot.offset(_this2.scroll);\n\t if (offset === 0) {\n\t return index;\n\t } else if (blot instanceof _parchment2.default.Container) {\n\t return index + blot.length();\n\t } else {\n\t return index + blot.index(node, offset);\n\t }\n\t });\n\t var start = Math.min.apply(Math, _toConsumableArray(indexes)),\n\t end = Math.max.apply(Math, _toConsumableArray(indexes));\n\t end = Math.min(end, this.scroll.length() - 1);\n\t return [new Range(start, end - start), range];\n\t }\n\t }, {\n\t key: 'hasFocus',\n\t value: function hasFocus() {\n\t return document.activeElement === this.root;\n\t }\n\t }, {\n\t key: 'scrollIntoView',\n\t value: function scrollIntoView() {\n\t var range = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : this.lastRange;\n\t\n\t if (range == null) return;\n\t var bounds = this.getBounds(range.index, range.length);\n\t if (bounds == null) return;\n\t if (this.root.offsetHeight < bounds.bottom) {\n\t var _scroll$line = this.scroll.line(Math.min(range.index + range.length, this.scroll.length() - 1)),\n\t _scroll$line2 = _slicedToArray(_scroll$line, 1),\n\t line = _scroll$line2[0];\n\t\n\t this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n\t } else if (bounds.top < 0) {\n\t var _scroll$line3 = this.scroll.line(Math.min(range.index, this.scroll.length() - 1)),\n\t _scroll$line4 = _slicedToArray(_scroll$line3, 1),\n\t _line = _scroll$line4[0];\n\t\n\t this.root.scrollTop = _line.domNode.offsetTop;\n\t }\n\t }\n\t }, {\n\t key: 'setNativeRange',\n\t value: function setNativeRange(startNode, startOffset) {\n\t var endNode = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : startNode;\n\t var endOffset = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : startOffset;\n\t var force = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : false;\n\t\n\t debug.info('setNativeRange', startNode, startOffset, endNode, endOffset);\n\t if (startNode != null && (this.root.parentNode == null || startNode.parentNode == null || endNode.parentNode == null)) {\n\t return;\n\t }\n\t var selection = document.getSelection();\n\t if (selection == null) return;\n\t if (startNode != null) {\n\t if (!this.hasFocus()) this.root.focus();\n\t var native = (this.getNativeRange() || {}).native;\n\t if (native == null || force || startNode !== native.startContainer || startOffset !== native.startOffset || endNode !== native.endContainer || endOffset !== native.endOffset) {\n\t var range = document.createRange();\n\t range.setStart(startNode, startOffset);\n\t range.setEnd(endNode, endOffset);\n\t selection.removeAllRanges();\n\t selection.addRange(range);\n\t }\n\t } else {\n\t selection.removeAllRanges();\n\t this.root.blur();\n\t document.body.focus(); // root.blur() not enough on IE11+Travis+SauceLabs (but not local VMs)\n\t }\n\t }\n\t }, {\n\t key: 'setRange',\n\t value: function setRange(range) {\n\t var _this3 = this;\n\t\n\t var force = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _emitter4.default.sources.API;\n\t\n\t if (typeof force === 'string') {\n\t source = force;\n\t force = false;\n\t }\n\t debug.info('setRange', range);\n\t if (range != null) {\n\t (function () {\n\t var indexes = range.collapsed ? [range.index] : [range.index, range.index + range.length];\n\t var args = [];\n\t var scrollLength = _this3.scroll.length();\n\t indexes.forEach(function (index, i) {\n\t index = Math.min(scrollLength - 1, index);\n\t var node = void 0,\n\t _scroll$leaf5 = _this3.scroll.leaf(index),\n\t _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2),\n\t leaf = _scroll$leaf6[0],\n\t offset = _scroll$leaf6[1];\n\t var _leaf$position5 = leaf.position(offset, i !== 0);\n\t\n\t var _leaf$position6 = _slicedToArray(_leaf$position5, 2);\n\t\n\t node = _leaf$position6[0];\n\t offset = _leaf$position6[1];\n\t\n\t args.push(node, offset);\n\t });\n\t if (args.length < 2) {\n\t args = args.concat(args);\n\t }\n\t _this3.setNativeRange.apply(_this3, _toConsumableArray(args).concat([force]));\n\t })();\n\t } else {\n\t this.setNativeRange(null);\n\t }\n\t this.update(source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var source = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : _emitter4.default.sources.USER;\n\t\n\t var nativeRange = void 0,\n\t oldRange = this.lastRange;\n\t\n\t var _getRange = this.getRange();\n\t\n\t var _getRange2 = _slicedToArray(_getRange, 2);\n\t\n\t this.lastRange = _getRange2[0];\n\t nativeRange = _getRange2[1];\n\t\n\t if (this.lastRange != null) {\n\t this.savedRange = this.lastRange;\n\t }\n\t if (!(0, _deepEqual2.default)(oldRange, this.lastRange)) {\n\t var _emitter;\n\t\n\t if (!this.composing && nativeRange != null && nativeRange.native.collapsed && nativeRange.start.node !== this.cursor.textNode) {\n\t this.cursor.restore();\n\t }\n\t var args = [_emitter4.default.events.SELECTION_CHANGE, (0, _clone2.default)(this.lastRange), (0, _clone2.default)(oldRange), source];\n\t (_emitter = this.emitter).emit.apply(_emitter, [_emitter4.default.events.EDITOR_CHANGE].concat(args));\n\t if (source !== _emitter4.default.sources.SILENT) {\n\t var _emitter2;\n\t\n\t (_emitter2 = this.emitter).emit.apply(_emitter2, args);\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t return Selection;\n\t}();\n\t\n\tfunction contains(parent, descendant) {\n\t try {\n\t // Firefox inserts inaccessible nodes around video elements\n\t descendant.parentNode;\n\t } catch (e) {\n\t return false;\n\t }\n\t // IE11 has bug with Text nodes\n\t // https://connect.microsoft.com/IE/feedback/details/780874/node-contains-is-incorrect\n\t if (descendant instanceof Text) {\n\t descendant = descendant.parentNode;\n\t }\n\t return parent.contains(descendant);\n\t}\n\t\n\texports.Range = Range;\n\texports.default = Selection;\n\n/***/ },\n/* 41 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Theme = function () {\n\t function Theme(quill, options) {\n\t _classCallCheck(this, Theme);\n\t\n\t this.quill = quill;\n\t this.options = options;\n\t this.modules = {};\n\t }\n\t\n\t _createClass(Theme, [{\n\t key: 'init',\n\t value: function init() {\n\t var _this = this;\n\t\n\t Object.keys(this.options.modules).forEach(function (name) {\n\t if (_this.modules[name] == null) {\n\t _this.addModule(name);\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'addModule',\n\t value: function addModule(name) {\n\t var moduleClass = this.quill.constructor.import('modules/' + name);\n\t this.modules[name] = new moduleClass(this.quill, this.options.modules[name] || {});\n\t return this.modules[name];\n\t }\n\t }]);\n\t\n\t return Theme;\n\t}();\n\t\n\tTheme.DEFAULTS = {\n\t modules: {}\n\t};\n\tTheme.themes = {\n\t 'default': Theme\n\t};\n\t\n\texports.default = Theme;\n\n/***/ },\n/* 42 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Container = function (_Parchment$Container) {\n\t _inherits(Container, _Parchment$Container);\n\t\n\t function Container() {\n\t _classCallCheck(this, Container);\n\t\n\t return _possibleConstructorReturn(this, (Container.__proto__ || Object.getPrototypeOf(Container)).apply(this, arguments));\n\t }\n\t\n\t return Container;\n\t}(_parchment2.default.Container);\n\t\n\tContainer.allowedChildren = [_block2.default, _block.BlockEmbed, Container];\n\t\n\texports.default = Container;\n\n/***/ },\n/* 43 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _emitter = __webpack_require__(35);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _break = __webpack_require__(30);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _container = __webpack_require__(42);\n\t\n\tvar _container2 = _interopRequireDefault(_container);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tfunction isLine(blot) {\n\t return blot instanceof _block2.default || blot instanceof _block.BlockEmbed;\n\t}\n\t\n\tvar Scroll = function (_Parchment$Scroll) {\n\t _inherits(Scroll, _Parchment$Scroll);\n\t\n\t function Scroll(domNode, config) {\n\t _classCallCheck(this, Scroll);\n\t\n\t var _this = _possibleConstructorReturn(this, (Scroll.__proto__ || Object.getPrototypeOf(Scroll)).call(this, domNode));\n\t\n\t _this.emitter = config.emitter;\n\t if (Array.isArray(config.whitelist)) {\n\t _this.whitelist = config.whitelist.reduce(function (whitelist, format) {\n\t whitelist[format] = true;\n\t return whitelist;\n\t }, {});\n\t }\n\t _this.optimize();\n\t _this.enable();\n\t return _this;\n\t }\n\t\n\t _createClass(Scroll, [{\n\t key: 'deleteAt',\n\t value: function deleteAt(index, length) {\n\t var _line = this.line(index),\n\t _line2 = _slicedToArray(_line, 2),\n\t first = _line2[0],\n\t offset = _line2[1];\n\t\n\t var _line3 = this.line(index + length),\n\t _line4 = _slicedToArray(_line3, 1),\n\t last = _line4[0];\n\t\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'deleteAt', this).call(this, index, length);\n\t if (last != null && first !== last && offset > 0 && !(first instanceof _block.BlockEmbed) && !(last instanceof _block.BlockEmbed)) {\n\t if (last instanceof _code2.default) {\n\t last.deleteAt(last.length() - 1, 1);\n\t }\n\t var ref = last.children.head instanceof _break2.default ? null : last.children.head;\n\t first.moveChildren(last, ref);\n\t first.remove();\n\t }\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;\n\t\n\t this.domNode.setAttribute('contenteditable', enabled);\n\t }\n\t }, {\n\t key: 'formatAt',\n\t value: function formatAt(index, length, format, value) {\n\t if (this.whitelist != null && !this.whitelist[format]) return;\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'formatAt', this).call(this, index, length, format, value);\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'insertAt',\n\t value: function insertAt(index, value, def) {\n\t if (def != null && this.whitelist != null && !this.whitelist[value]) return;\n\t if (index >= this.length()) {\n\t if (def == null || _parchment2.default.query(value, _parchment2.default.Scope.BLOCK) == null) {\n\t var blot = _parchment2.default.create(this.statics.defaultChild);\n\t this.appendChild(blot);\n\t if (def == null && value.endsWith('\\n')) {\n\t value = value.slice(0, -1);\n\t }\n\t blot.insertAt(0, value, def);\n\t } else {\n\t var embed = _parchment2.default.create(value, def);\n\t this.appendChild(embed);\n\t }\n\t } else {\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertAt', this).call(this, index, value, def);\n\t }\n\t this.optimize();\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t if (blot.statics.scope === _parchment2.default.Scope.INLINE_BLOT) {\n\t var wrapper = _parchment2.default.create(this.statics.defaultChild);\n\t wrapper.appendChild(blot);\n\t blot = wrapper;\n\t }\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'insertBefore', this).call(this, blot, ref);\n\t }\n\t }, {\n\t key: 'leaf',\n\t value: function leaf(index) {\n\t return this.path(index).pop() || [null, -1];\n\t }\n\t }, {\n\t key: 'line',\n\t value: function line(index) {\n\t if (index === this.length()) {\n\t return this.line(index - 1);\n\t }\n\t return this.descendant(isLine, index);\n\t }\n\t }, {\n\t key: 'lines',\n\t value: function lines() {\n\t var index = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;\n\t var length = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : Number.MAX_VALUE;\n\t\n\t var getLines = function getLines(blot, index, length) {\n\t var lines = [],\n\t lengthLeft = length;\n\t blot.children.forEachAt(index, length, function (child, index, length) {\n\t if (isLine(child)) {\n\t lines.push(child);\n\t } else if (child instanceof _parchment2.default.Container) {\n\t lines = lines.concat(getLines(child, index, lengthLeft));\n\t }\n\t lengthLeft -= length;\n\t });\n\t return lines;\n\t };\n\t return getLines(this, index, length);\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t var mutations = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];\n\t\n\t if (this.batch === true) return;\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'optimize', this).call(this, mutations);\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_OPTIMIZE, mutations);\n\t }\n\t }\n\t }, {\n\t key: 'path',\n\t value: function path(index) {\n\t return _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'path', this).call(this, index).slice(1); // Exclude self\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(mutations) {\n\t if (this.batch === true) return;\n\t var source = _emitter2.default.sources.USER;\n\t if (typeof mutations === 'string') {\n\t source = mutations;\n\t }\n\t if (!Array.isArray(mutations)) {\n\t mutations = this.observer.takeRecords();\n\t }\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_BEFORE_UPDATE, source, mutations);\n\t }\n\t _get(Scroll.prototype.__proto__ || Object.getPrototypeOf(Scroll.prototype), 'update', this).call(this, mutations.concat([])); // pass copy\n\t if (mutations.length > 0) {\n\t this.emitter.emit(_emitter2.default.events.SCROLL_UPDATE, source, mutations);\n\t }\n\t }\n\t }]);\n\t\n\t return Scroll;\n\t}(_parchment2.default.Scroll);\n\t\n\tScroll.blotName = 'scroll';\n\tScroll.className = 'ql-editor';\n\tScroll.tagName = 'DIV';\n\tScroll.defaultChild = 'block';\n\tScroll.allowedChildren = [_block2.default, _block.BlockEmbed, _container2.default];\n\t\n\texports.default = Scroll;\n\n/***/ },\n/* 44 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.matchText = exports.matchSpacing = exports.matchNewline = exports.matchBlot = exports.matchAttributor = exports.default = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _logger = __webpack_require__(37);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _module = __webpack_require__(39);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tvar _align = __webpack_require__(45);\n\t\n\tvar _background = __webpack_require__(46);\n\t\n\tvar _color = __webpack_require__(47);\n\t\n\tvar _direction = __webpack_require__(48);\n\t\n\tvar _font = __webpack_require__(49);\n\t\n\tvar _size = __webpack_require__(50);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar debug = (0, _logger2.default)('quill:clipboard');\n\t\n\tvar DOM_KEY = '__ql-matcher';\n\t\n\tvar 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\t\n\tvar ATTRIBUTE_ATTRIBUTORS = [_align.AlignAttribute, _direction.DirectionAttribute].reduce(function (memo, attr) {\n\t memo[attr.keyName] = attr;\n\t return memo;\n\t}, {});\n\t\n\tvar STYLE_ATTRIBUTORS = [_align.AlignStyle, _background.BackgroundStyle, _color.ColorStyle, _direction.DirectionStyle, _font.FontStyle, _size.SizeStyle].reduce(function (memo, attr) {\n\t memo[attr.keyName] = attr;\n\t return memo;\n\t}, {});\n\t\n\tvar Clipboard = function (_Module) {\n\t _inherits(Clipboard, _Module);\n\t\n\t function Clipboard(quill, options) {\n\t _classCallCheck(this, Clipboard);\n\t\n\t var _this = _possibleConstructorReturn(this, (Clipboard.__proto__ || Object.getPrototypeOf(Clipboard)).call(this, quill, options));\n\t\n\t _this.quill.root.addEventListener('paste', _this.onPaste.bind(_this));\n\t _this.container = _this.quill.addContainer('ql-clipboard');\n\t _this.container.setAttribute('contenteditable', true);\n\t _this.container.setAttribute('tabindex', -1);\n\t _this.matchers = [];\n\t CLIPBOARD_CONFIG.concat(_this.options.matchers).forEach(function (pair) {\n\t _this.addMatcher.apply(_this, _toConsumableArray(pair));\n\t });\n\t return _this;\n\t }\n\t\n\t _createClass(Clipboard, [{\n\t key: 'addMatcher',\n\t value: function addMatcher(selector, matcher) {\n\t this.matchers.push([selector, matcher]);\n\t }\n\t }, {\n\t key: 'convert',\n\t value: function convert(html) {\n\t if (typeof html === 'string') {\n\t this.container.innerHTML = html;\n\t }\n\t\n\t var _prepareMatching = this.prepareMatching(),\n\t _prepareMatching2 = _slicedToArray(_prepareMatching, 2),\n\t elementMatchers = _prepareMatching2[0],\n\t textMatchers = _prepareMatching2[1];\n\t\n\t var delta = traverse(this.container, elementMatchers, textMatchers);\n\t // Remove trailing newline\n\t if (deltaEndsWith(delta, '\\n') && delta.ops[delta.ops.length - 1].attributes == null) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length() - 1).delete(1));\n\t }\n\t debug.log('convert', this.container.innerHTML, delta);\n\t this.container.innerHTML = '';\n\t return delta;\n\t }\n\t }, {\n\t key: 'dangerouslyPasteHTML',\n\t value: function dangerouslyPasteHTML(index, html) {\n\t var source = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : _quill2.default.sources.API;\n\t\n\t if (typeof index === 'string') {\n\t return this.quill.setContents(this.convert(index), html);\n\t } else {\n\t var paste = this.convert(html);\n\t return this.quill.updateContents(new _quillDelta2.default().retain(index).concat(paste), source);\n\t }\n\t }\n\t }, {\n\t key: 'onPaste',\n\t value: function onPaste(e) {\n\t var _this2 = this;\n\t\n\t if (e.defaultPrevented || !this.quill.isEnabled()) return;\n\t var range = this.quill.getSelection();\n\t var delta = new _quillDelta2.default().retain(range.index);\n\t var scrollTop = this.quill.scrollingContainer.scrollTop;\n\t this.container.focus();\n\t setTimeout(function () {\n\t _this2.quill.selection.update(_quill2.default.sources.SILENT);\n\t delta = delta.concat(_this2.convert()).delete(range.length);\n\t _this2.quill.updateContents(delta, _quill2.default.sources.USER);\n\t // range.length contributes to delta.length()\n\t _this2.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\t _this2.quill.scrollingContainer.scrollTop = scrollTop;\n\t _this2.quill.selection.scrollIntoView();\n\t }, 1);\n\t }\n\t }, {\n\t key: 'prepareMatching',\n\t value: function prepareMatching() {\n\t var _this3 = this;\n\t\n\t var elementMatchers = [],\n\t textMatchers = [];\n\t this.matchers.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2),\n\t selector = _pair[0],\n\t matcher = _pair[1];\n\t\n\t switch (selector) {\n\t case Node.TEXT_NODE:\n\t textMatchers.push(matcher);\n\t break;\n\t case Node.ELEMENT_NODE:\n\t elementMatchers.push(matcher);\n\t break;\n\t default:\n\t [].forEach.call(_this3.container.querySelectorAll(selector), function (node) {\n\t // TODO use weakmap\n\t node[DOM_KEY] = node[DOM_KEY] || [];\n\t node[DOM_KEY].push(matcher);\n\t });\n\t break;\n\t }\n\t });\n\t return [elementMatchers, textMatchers];\n\t }\n\t }]);\n\t\n\t return Clipboard;\n\t}(_module2.default);\n\t\n\tClipboard.DEFAULTS = {\n\t matchers: []\n\t};\n\t\n\tfunction computeStyle(node) {\n\t if (node.nodeType !== Node.ELEMENT_NODE) return {};\n\t var DOM_KEY = '__ql-computed-style';\n\t return node[DOM_KEY] || (node[DOM_KEY] = window.getComputedStyle(node));\n\t}\n\t\n\tfunction deltaEndsWith(delta, text) {\n\t var endText = \"\";\n\t for (var i = delta.ops.length - 1; i >= 0 && endText.length < text.length; --i) {\n\t var op = delta.ops[i];\n\t if (typeof op.insert !== 'string') break;\n\t endText = op.insert + endText;\n\t }\n\t return endText.slice(-1 * text.length) === text;\n\t}\n\t\n\tfunction isLine(node) {\n\t if (node.childNodes.length === 0) return false; // Exclude embed blocks\n\t var style = computeStyle(node);\n\t return ['block', 'list-item'].indexOf(style.display) > -1;\n\t}\n\t\n\tfunction traverse(node, elementMatchers, textMatchers) {\n\t // Post-order\n\t if (node.nodeType === node.TEXT_NODE) {\n\t return textMatchers.reduce(function (delta, matcher) {\n\t return matcher(node, delta);\n\t }, new _quillDelta2.default());\n\t } else if (node.nodeType === node.ELEMENT_NODE) {\n\t return [].reduce.call(node.childNodes || [], function (delta, childNode) {\n\t var childrenDelta = traverse(childNode, elementMatchers, textMatchers);\n\t if (childNode.nodeType === node.ELEMENT_NODE) {\n\t childrenDelta = elementMatchers.reduce(function (childrenDelta, matcher) {\n\t return matcher(childNode, childrenDelta);\n\t }, childrenDelta);\n\t childrenDelta = (childNode[DOM_KEY] || []).reduce(function (childrenDelta, matcher) {\n\t return matcher(childNode, childrenDelta);\n\t }, childrenDelta);\n\t }\n\t return delta.concat(childrenDelta);\n\t }, new _quillDelta2.default());\n\t } else {\n\t return new _quillDelta2.default();\n\t }\n\t}\n\t\n\tfunction matchAlias(format, node, delta) {\n\t return delta.compose(new _quillDelta2.default().retain(delta.length(), _defineProperty({}, format, true)));\n\t}\n\t\n\tfunction matchAttributor(node, delta) {\n\t var attributes = _parchment2.default.Attributor.Attribute.keys(node);\n\t var classes = _parchment2.default.Attributor.Class.keys(node);\n\t var styles = _parchment2.default.Attributor.Style.keys(node);\n\t var formats = {};\n\t attributes.concat(classes).concat(styles).forEach(function (name) {\n\t var attr = _parchment2.default.query(name, _parchment2.default.Scope.ATTRIBUTE);\n\t if (attr != null) {\n\t formats[attr.attrName] = attr.value(node);\n\t if (formats[attr.attrName]) return;\n\t }\n\t if (ATTRIBUTE_ATTRIBUTORS[name] != null) {\n\t attr = ATTRIBUTE_ATTRIBUTORS[name];\n\t formats[attr.attrName] = attr.value(node);\n\t }\n\t if (STYLE_ATTRIBUTORS[name] != null) {\n\t attr = STYLE_ATTRIBUTORS[name];\n\t formats[attr.attrName] = attr.value(node);\n\t }\n\t });\n\t if (Object.keys(formats).length > 0) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t return delta;\n\t}\n\t\n\tfunction matchBlot(node, delta) {\n\t var match = _parchment2.default.query(node);\n\t if (match == null) return delta;\n\t if (match.prototype instanceof _parchment2.default.Embed) {\n\t var embed = {};\n\t var value = match.value(node);\n\t if (value != null) {\n\t embed[match.blotName] = value;\n\t delta = new _quillDelta2.default().insert(embed, match.formats(node));\n\t }\n\t } else if (typeof match.formats === 'function') {\n\t var formats = _defineProperty({}, match.blotName, match.formats(node));\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t return delta;\n\t}\n\t\n\tfunction matchBreak(node, delta) {\n\t if (!deltaEndsWith(delta, '\\n')) {\n\t delta.insert('\\n');\n\t }\n\t return delta;\n\t}\n\t\n\tfunction matchIgnore() {\n\t return new _quillDelta2.default();\n\t}\n\t\n\tfunction matchNewline(node, delta) {\n\t if (isLine(node) && !deltaEndsWith(delta, '\\n')) {\n\t delta.insert('\\n');\n\t }\n\t return delta;\n\t}\n\t\n\tfunction matchSpacing(node, delta) {\n\t if (isLine(node) && node.nextElementSibling != null && !deltaEndsWith(delta, '\\n\\n')) {\n\t var nodeHeight = node.offsetHeight + parseFloat(computeStyle(node).marginTop) + parseFloat(computeStyle(node).marginBottom);\n\t if (node.nextElementSibling.offsetTop > node.offsetTop + nodeHeight * 1.5) {\n\t delta.insert('\\n');\n\t }\n\t }\n\t return delta;\n\t}\n\t\n\tfunction matchStyles(node, delta) {\n\t var formats = {};\n\t var style = node.style || {};\n\t if (style.fontStyle && computeStyle(node).fontStyle === 'italic') {\n\t formats.italic = true;\n\t }\n\t if (style.fontWeight && computeStyle(node).fontWeight === 'bold') {\n\t formats.bold = true;\n\t }\n\t if (Object.keys(formats).length > 0) {\n\t delta = delta.compose(new _quillDelta2.default().retain(delta.length(), formats));\n\t }\n\t if (parseFloat(style.textIndent || 0) > 0) {\n\t // Could be 0.5in\n\t delta = new _quillDelta2.default().insert('\\t').concat(delta);\n\t }\n\t return delta;\n\t}\n\t\n\tfunction matchText(node, delta) {\n\t var text = node.data;\n\t // Word represents empty line with <o:p> </o:p>\n\t if (node.parentNode.tagName === 'O:P') {\n\t return delta.insert(text.trim());\n\t }\n\t if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n\t // eslint-disable-next-line func-style\n\t var replacer = function replacer(collapse, match) {\n\t match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n\t return match.length < 1 && collapse ? ' ' : match;\n\t };\n\t text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n\t text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n\t if (node.previousSibling == null && isLine(node.parentNode) || node.previousSibling != null && isLine(node.previousSibling)) {\n\t text = text.replace(/^\\s+/, replacer.bind(replacer, false));\n\t }\n\t if (node.nextSibling == null && isLine(node.parentNode) || node.nextSibling != null && isLine(node.nextSibling)) {\n\t text = text.replace(/\\s+$/, replacer.bind(replacer, false));\n\t }\n\t }\n\t return delta.insert(text);\n\t}\n\t\n\texports.default = Clipboard;\n\texports.matchAttributor = matchAttributor;\n\texports.matchBlot = matchBlot;\n\texports.matchNewline = matchNewline;\n\texports.matchSpacing = matchSpacing;\n\texports.matchText = matchText;\n\n/***/ },\n/* 45 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.AlignStyle = exports.AlignClass = exports.AlignAttribute = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar config = {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: ['right', 'center', 'justify']\n\t};\n\t\n\tvar AlignAttribute = new _parchment2.default.Attributor.Attribute('align', 'align', config);\n\tvar AlignClass = new _parchment2.default.Attributor.Class('align', 'ql-align', config);\n\tvar AlignStyle = new _parchment2.default.Attributor.Style('align', 'text-align', config);\n\t\n\texports.AlignAttribute = AlignAttribute;\n\texports.AlignClass = AlignClass;\n\texports.AlignStyle = AlignStyle;\n\n/***/ },\n/* 46 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.BackgroundStyle = exports.BackgroundClass = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _color = __webpack_require__(47);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar BackgroundClass = new _parchment2.default.Attributor.Class('background', 'ql-bg', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar BackgroundStyle = new _color.ColorAttributor('background', 'background-color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\t\n\texports.BackgroundClass = BackgroundClass;\n\texports.BackgroundStyle = BackgroundStyle;\n\n/***/ },\n/* 47 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.ColorStyle = exports.ColorClass = exports.ColorAttributor = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar ColorAttributor = function (_Parchment$Attributor) {\n\t _inherits(ColorAttributor, _Parchment$Attributor);\n\t\n\t function ColorAttributor() {\n\t _classCallCheck(this, ColorAttributor);\n\t\n\t return _possibleConstructorReturn(this, (ColorAttributor.__proto__ || Object.getPrototypeOf(ColorAttributor)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ColorAttributor, [{\n\t key: 'value',\n\t value: function value(domNode) {\n\t var value = _get(ColorAttributor.prototype.__proto__ || Object.getPrototypeOf(ColorAttributor.prototype), 'value', this).call(this, domNode);\n\t if (!value.startsWith('rgb(')) return value;\n\t value = value.replace(/^[^\\d]+/, '').replace(/[^\\d]+$/, '');\n\t return '#' + value.split(',').map(function (component) {\n\t return ('00' + parseInt(component).toString(16)).slice(-2);\n\t }).join('');\n\t }\n\t }]);\n\t\n\t return ColorAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\t\n\tvar ColorClass = new _parchment2.default.Attributor.Class('color', 'ql-color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\tvar ColorStyle = new ColorAttributor('color', 'color', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\t\n\texports.ColorAttributor = ColorAttributor;\n\texports.ColorClass = ColorClass;\n\texports.ColorStyle = ColorStyle;\n\n/***/ },\n/* 48 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.DirectionStyle = exports.DirectionClass = exports.DirectionAttribute = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar config = {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: ['rtl']\n\t};\n\t\n\tvar DirectionAttribute = new _parchment2.default.Attributor.Attribute('direction', 'dir', config);\n\tvar DirectionClass = new _parchment2.default.Attributor.Class('direction', 'ql-direction', config);\n\tvar DirectionStyle = new _parchment2.default.Attributor.Style('direction', 'direction', config);\n\t\n\texports.DirectionAttribute = DirectionAttribute;\n\texports.DirectionClass = DirectionClass;\n\texports.DirectionStyle = DirectionStyle;\n\n/***/ },\n/* 49 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.FontClass = exports.FontStyle = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar config = {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['serif', 'monospace']\n\t};\n\t\n\tvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\t\n\tvar FontStyleAttributor = function (_Parchment$Attributor) {\n\t _inherits(FontStyleAttributor, _Parchment$Attributor);\n\t\n\t function FontStyleAttributor() {\n\t _classCallCheck(this, FontStyleAttributor);\n\t\n\t return _possibleConstructorReturn(this, (FontStyleAttributor.__proto__ || Object.getPrototypeOf(FontStyleAttributor)).apply(this, arguments));\n\t }\n\t\n\t _createClass(FontStyleAttributor, [{\n\t key: 'value',\n\t value: function value(node) {\n\t return _get(FontStyleAttributor.prototype.__proto__ || Object.getPrototypeOf(FontStyleAttributor.prototype), 'value', this).call(this, node).replace(/[\"']/g, '');\n\t }\n\t }]);\n\t\n\t return FontStyleAttributor;\n\t}(_parchment2.default.Attributor.Style);\n\t\n\tvar FontStyle = new FontStyleAttributor('font', 'font-family', config);\n\t\n\texports.FontStyle = FontStyle;\n\texports.FontClass = FontClass;\n\n/***/ },\n/* 50 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.SizeStyle = exports.SizeClass = undefined;\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tvar SizeClass = new _parchment2.default.Attributor.Class('size', 'ql-size', {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['small', 'large', 'huge']\n\t});\n\tvar SizeStyle = new _parchment2.default.Attributor.Style('size', 'font-size', {\n\t scope: _parchment2.default.Scope.INLINE,\n\t whitelist: ['10px', '18px', '32px']\n\t});\n\t\n\texports.SizeClass = SizeClass;\n\texports.SizeStyle = SizeStyle;\n\n/***/ },\n/* 51 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.getLastChangeIndex = exports.default = undefined;\n\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _module = __webpack_require__(39);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar History = function (_Module) {\n\t _inherits(History, _Module);\n\t\n\t function History(quill, options) {\n\t _classCallCheck(this, History);\n\t\n\t var _this = _possibleConstructorReturn(this, (History.__proto__ || Object.getPrototypeOf(History)).call(this, quill, options));\n\t\n\t _this.lastRecorded = 0;\n\t _this.ignoreChange = false;\n\t _this.clear();\n\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (eventName, delta, oldDelta, source) {\n\t if (eventName !== _quill2.default.events.TEXT_CHANGE || _this.ignoreChange) return;\n\t if (!_this.options.userOnly || source === _quill2.default.sources.USER) {\n\t _this.record(delta, oldDelta);\n\t } else {\n\t _this.transform(delta);\n\t }\n\t });\n\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true }, _this.undo.bind(_this));\n\t _this.quill.keyboard.addBinding({ key: 'Z', shortKey: true, shiftKey: true }, _this.redo.bind(_this));\n\t if (/Win/i.test(navigator.platform)) {\n\t _this.quill.keyboard.addBinding({ key: 'Y', shortKey: true }, _this.redo.bind(_this));\n\t }\n\t return _this;\n\t }\n\t\n\t _createClass(History, [{\n\t key: 'change',\n\t value: function change(source, dest) {\n\t if (this.stack[source].length === 0) return;\n\t var delta = this.stack[source].pop();\n\t this.lastRecorded = 0;\n\t this.ignoreChange = true;\n\t this.quill.updateContents(delta[source], _quill2.default.sources.USER);\n\t this.ignoreChange = false;\n\t var index = getLastChangeIndex(delta[source]);\n\t this.quill.setSelection(index);\n\t this.quill.selection.scrollIntoView();\n\t this.stack[dest].push(delta);\n\t }\n\t }, {\n\t key: 'clear',\n\t value: function clear() {\n\t this.stack = { undo: [], redo: [] };\n\t }\n\t }, {\n\t key: 'record',\n\t value: function record(changeDelta, oldDelta) {\n\t if (changeDelta.ops.length === 0) return;\n\t this.stack.redo = [];\n\t var undoDelta = this.quill.getContents().diff(oldDelta);\n\t var timestamp = Date.now();\n\t if (this.lastRecorded + this.options.delay > timestamp && this.stack.undo.length > 0) {\n\t var delta = this.stack.undo.pop();\n\t undoDelta = undoDelta.compose(delta.undo);\n\t changeDelta = delta.redo.compose(changeDelta);\n\t } else {\n\t this.lastRecorded = timestamp;\n\t }\n\t this.stack.undo.push({\n\t redo: changeDelta,\n\t undo: undoDelta\n\t });\n\t if (this.stack.undo.length > this.options.maxStack) {\n\t this.stack.undo.shift();\n\t }\n\t }\n\t }, {\n\t key: 'redo',\n\t value: function redo() {\n\t this.change('redo', 'undo');\n\t }\n\t }, {\n\t key: 'transform',\n\t value: function transform(delta) {\n\t this.stack.undo.forEach(function (change) {\n\t change.undo = delta.transform(change.undo, true);\n\t change.redo = delta.transform(change.redo, true);\n\t });\n\t this.stack.redo.forEach(function (change) {\n\t change.undo = delta.transform(change.undo, true);\n\t change.redo = delta.transform(change.redo, true);\n\t });\n\t }\n\t }, {\n\t key: 'undo',\n\t value: function undo() {\n\t this.change('undo', 'redo');\n\t }\n\t }]);\n\t\n\t return History;\n\t}(_module2.default);\n\t\n\tHistory.DEFAULTS = {\n\t delay: 1000,\n\t maxStack: 100,\n\t userOnly: false\n\t};\n\t\n\tfunction endsWithNewlineChange(delta) {\n\t var lastOp = delta.ops[delta.ops.length - 1];\n\t if (lastOp == null) return false;\n\t if (lastOp.insert != null) {\n\t return typeof lastOp.insert === 'string' && lastOp.insert.endsWith('\\n');\n\t }\n\t if (lastOp.attributes != null) {\n\t return Object.keys(lastOp.attributes).some(function (attr) {\n\t return _parchment2.default.query(attr, _parchment2.default.Scope.BLOCK) != null;\n\t });\n\t }\n\t return false;\n\t}\n\t\n\tfunction getLastChangeIndex(delta) {\n\t var deleteLength = delta.reduce(function (length, op) {\n\t length += op.delete || 0;\n\t return length;\n\t }, 0);\n\t var changeIndex = delta.length() - deleteLength;\n\t if (endsWithNewlineChange(delta)) {\n\t changeIndex -= 1;\n\t }\n\t return changeIndex;\n\t}\n\t\n\texports.default = History;\n\texports.getLastChangeIndex = getLastChangeIndex;\n\n/***/ },\n/* 52 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tvar _clone = __webpack_require__(38);\n\t\n\tvar _clone2 = _interopRequireDefault(_clone);\n\t\n\tvar _deepEqual = __webpack_require__(22);\n\t\n\tvar _deepEqual2 = _interopRequireDefault(_deepEqual);\n\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _op = __webpack_require__(26);\n\t\n\tvar _op2 = _interopRequireDefault(_op);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _logger = __webpack_require__(37);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _module = __webpack_require__(39);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar debug = (0, _logger2.default)('quill:keyboard');\n\t\n\tvar SHORTKEY = /Mac/i.test(navigator.platform) ? 'metaKey' : 'ctrlKey';\n\t\n\tvar Keyboard = function (_Module) {\n\t _inherits(Keyboard, _Module);\n\t\n\t _createClass(Keyboard, null, [{\n\t key: 'match',\n\t value: function match(evt, binding) {\n\t binding = normalize(binding);\n\t if (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n\t if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function (key) {\n\t return key != SHORTKEY && !!binding[key] !== evt[key] && binding[key] !== null;\n\t })) {\n\t return false;\n\t }\n\t return binding.key === (evt.which || evt.keyCode);\n\t }\n\t }]);\n\t\n\t function Keyboard(quill, options) {\n\t _classCallCheck(this, Keyboard);\n\t\n\t var _this = _possibleConstructorReturn(this, (Keyboard.__proto__ || Object.getPrototypeOf(Keyboard)).call(this, quill, options));\n\t\n\t _this.bindings = {};\n\t Object.keys(_this.options.bindings).forEach(function (name) {\n\t if (_this.options.bindings[name]) {\n\t _this.addBinding(_this.options.bindings[name]);\n\t }\n\t });\n\t _this.addBinding({ key: Keyboard.keys.ENTER, shiftKey: null }, handleEnter);\n\t _this.addBinding({ key: Keyboard.keys.ENTER, metaKey: null, ctrlKey: null, altKey: null }, function () {});\n\t if (/Gecko/i.test(navigator.userAgent)) {\n\t // Need to handle delete and backspace for Firefox in the general case #1171\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n\t } else {\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n\t }\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n\t if (/Trident/i.test(navigator.userAgent)) {\n\t _this.addBinding({ key: Keyboard.keys.BACKSPACE, shortKey: true }, handleBackspace);\n\t _this.addBinding({ key: Keyboard.keys.DELETE, shortKey: true }, handleDelete);\n\t }\n\t _this.listen();\n\t return _this;\n\t }\n\t\n\t _createClass(Keyboard, [{\n\t key: 'addBinding',\n\t value: function addBinding(key) {\n\t var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n\t var handler = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n\t\n\t var binding = normalize(key);\n\t if (binding == null || binding.key == null) {\n\t return debug.warn('Attempted to add invalid keyboard binding', binding);\n\t }\n\t if (typeof context === 'function') {\n\t context = { handler: context };\n\t }\n\t if (typeof handler === 'function') {\n\t handler = { handler: handler };\n\t }\n\t binding = (0, _extend2.default)(binding, context, handler);\n\t this.bindings[binding.key] = this.bindings[binding.key] || [];\n\t this.bindings[binding.key].push(binding);\n\t }\n\t }, {\n\t key: 'listen',\n\t value: function listen() {\n\t var _this2 = this;\n\t\n\t this.quill.root.addEventListener('keydown', function (evt) {\n\t if (evt.defaultPrevented) return;\n\t var which = evt.which || evt.keyCode;\n\t var bindings = (_this2.bindings[which] || []).filter(function (binding) {\n\t return Keyboard.match(evt, binding);\n\t });\n\t if (bindings.length === 0) return;\n\t var range = _this2.quill.getSelection();\n\t if (range == null || !_this2.quill.hasFocus()) return;\n\t\n\t var _quill$scroll$line = _this2.quill.scroll.line(range.index),\n\t _quill$scroll$line2 = _slicedToArray(_quill$scroll$line, 2),\n\t line = _quill$scroll$line2[0],\n\t offset = _quill$scroll$line2[1];\n\t\n\t var _quill$scroll$leaf = _this2.quill.scroll.leaf(range.index),\n\t _quill$scroll$leaf2 = _slicedToArray(_quill$scroll$leaf, 2),\n\t leafStart = _quill$scroll$leaf2[0],\n\t offsetStart = _quill$scroll$leaf2[1];\n\t\n\t var _ref = range.length === 0 ? [leafStart, offsetStart] : _this2.quill.scroll.leaf(range.index + range.length),\n\t _ref2 = _slicedToArray(_ref, 2),\n\t leafEnd = _ref2[0],\n\t offsetEnd = _ref2[1];\n\t\n\t var prefixText = leafStart instanceof _parchment2.default.Text ? leafStart.value().slice(0, offsetStart) : '';\n\t var suffixText = leafEnd instanceof _parchment2.default.Text ? leafEnd.value().slice(offsetEnd) : '';\n\t var curContext = {\n\t collapsed: range.length === 0,\n\t empty: range.length === 0 && line.length() <= 1,\n\t format: _this2.quill.getFormat(range),\n\t offset: offset,\n\t prefix: prefixText,\n\t suffix: suffixText\n\t };\n\t var prevented = bindings.some(function (binding) {\n\t if (binding.collapsed != null && binding.collapsed !== curContext.collapsed) return false;\n\t if (binding.empty != null && binding.empty !== curContext.empty) return false;\n\t if (binding.offset != null && binding.offset !== curContext.offset) return false;\n\t if (Array.isArray(binding.format)) {\n\t // any format is present\n\t if (binding.format.every(function (name) {\n\t return curContext.format[name] == null;\n\t })) {\n\t return false;\n\t }\n\t } else if (_typeof(binding.format) === 'object') {\n\t // all formats must match\n\t if (!Object.keys(binding.format).every(function (name) {\n\t if (binding.format[name] === true) return curContext.format[name] != null;\n\t if (binding.format[name] === false) return curContext.format[name] == null;\n\t return (0, _deepEqual2.default)(binding.format[name], curContext.format[name]);\n\t })) {\n\t return false;\n\t }\n\t }\n\t if (binding.prefix != null && !binding.prefix.test(curContext.prefix)) return false;\n\t if (binding.suffix != null && !binding.suffix.test(curContext.suffix)) return false;\n\t return binding.handler.call(_this2, range, curContext) !== true;\n\t });\n\t if (prevented) {\n\t evt.preventDefault();\n\t }\n\t });\n\t }\n\t }]);\n\t\n\t return Keyboard;\n\t}(_module2.default);\n\t\n\tKeyboard.keys = {\n\t BACKSPACE: 8,\n\t TAB: 9,\n\t ENTER: 13,\n\t ESCAPE: 27,\n\t LEFT: 37,\n\t UP: 38,\n\t RIGHT: 39,\n\t DOWN: 40,\n\t DELETE: 46\n\t};\n\t\n\tKeyboard.DEFAULTS = {\n\t bindings: {\n\t 'bold': makeFormatHandler('bold'),\n\t 'italic': makeFormatHandler('italic'),\n\t 'underline': makeFormatHandler('underline'),\n\t 'indent': {\n\t // highlight tab or tab at beginning of list, indent or blockquote\n\t key: Keyboard.keys.TAB,\n\t format: ['blockquote', 'indent', 'list'],\n\t handler: function handler(range, context) {\n\t if (context.collapsed && context.offset !== 0) return true;\n\t this.quill.format('indent', '+1', _quill2.default.sources.USER);\n\t }\n\t },\n\t 'outdent': {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: true,\n\t format: ['blockquote', 'indent', 'list'],\n\t // highlight tab or tab at beginning of list, indent or blockquote\n\t handler: function handler(range, context) {\n\t if (context.collapsed && context.offset !== 0) return true;\n\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t }\n\t },\n\t 'outdent backspace': {\n\t key: Keyboard.keys.BACKSPACE,\n\t collapsed: true,\n\t format: ['blockquote', 'indent', 'list'],\n\t offset: 0,\n\t handler: function handler(range, context) {\n\t if (context.format.indent != null) {\n\t this.quill.format('indent', '-1', _quill2.default.sources.USER);\n\t } else if (context.format.blockquote != null) {\n\t this.quill.format('blockquote', false, _quill2.default.sources.USER);\n\t } else if (context.format.list != null) {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t }\n\t }\n\t },\n\t 'indent code-block': makeCodeBlockHandler(true),\n\t 'outdent code-block': makeCodeBlockHandler(false),\n\t 'remove tab': {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: true,\n\t collapsed: true,\n\t prefix: /\\t$/,\n\t handler: function handler(range) {\n\t this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t }\n\t },\n\t 'tab': {\n\t key: Keyboard.keys.TAB,\n\t handler: function handler(range, context) {\n\t if (!context.collapsed) {\n\t this.quill.scroll.deleteAt(range.index, range.length);\n\t }\n\t this.quill.insertText(range.index, '\\t', _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t }\n\t },\n\t 'list empty enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['list'],\n\t empty: true,\n\t handler: function handler(range, context) {\n\t this.quill.format('list', false, _quill2.default.sources.USER);\n\t if (context.format.indent) {\n\t this.quill.format('indent', false, _quill2.default.sources.USER);\n\t }\n\t }\n\t },\n\t 'checklist enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: { list: 'checked' },\n\t handler: function handler(range) {\n\t this.quill.scroll.insertAt(range.index, '\\n');\n\t\n\t var _quill$scroll$line3 = this.quill.scroll.line(range.index + 1),\n\t _quill$scroll$line4 = _slicedToArray(_quill$scroll$line3, 1),\n\t line = _quill$scroll$line4[0];\n\t\n\t line.format('list', 'unchecked');\n\t this.quill.update(_quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t }\n\t },\n\t 'header enter': {\n\t key: Keyboard.keys.ENTER,\n\t collapsed: true,\n\t format: ['header'],\n\t suffix: /^$/,\n\t handler: function handler(range) {\n\t this.quill.scroll.insertAt(range.index, '\\n');\n\t this.quill.formatText(range.index + 1, 1, 'header', false, _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index + 1, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t }\n\t },\n\t 'list autofill': {\n\t key: ' ',\n\t collapsed: true,\n\t format: { list: false },\n\t prefix: /^(1\\.|-)$/,\n\t handler: function handler(range, context) {\n\t var length = context.prefix.length;\n\t this.quill.scroll.deleteAt(range.index - length, length);\n\t this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index - length, _quill2.default.sources.SILENT);\n\t }\n\t }\n\t }\n\t};\n\t\n\tfunction handleBackspace(range, context) {\n\t if (range.index === 0) return;\n\t\n\t var _quill$scroll$line5 = this.quill.scroll.line(range.index),\n\t _quill$scroll$line6 = _slicedToArray(_quill$scroll$line5, 1),\n\t line = _quill$scroll$line6[0];\n\t\n\t var formats = {};\n\t if (context.offset === 0) {\n\t var curFormats = line.formats();\n\t var prevFormats = this.quill.getFormat(range.index - 1, 1);\n\t formats = _op2.default.attributes.diff(curFormats, prevFormats) || {};\n\t }\n\t this.quill.deleteText(range.index - 1, 1, _quill2.default.sources.USER);\n\t if (Object.keys(formats).length > 0) {\n\t this.quill.formatLine(range.index - 1, 1, formats, _quill2.default.sources.USER);\n\t }\n\t this.quill.selection.scrollIntoView();\n\t}\n\t\n\tfunction handleDelete(range) {\n\t if (range.index >= this.quill.getLength() - 1) return;\n\t this.quill.deleteText(range.index, 1, _quill2.default.sources.USER);\n\t}\n\t\n\tfunction handleDeleteRange(range) {\n\t this.quill.deleteText(range, _quill2.default.sources.USER);\n\t this.quill.setSelection(range.index, _quill2.default.sources.SILENT);\n\t this.quill.selection.scrollIntoView();\n\t}\n\t\n\tfunction handleEnter(range, context) {\n\t var _this3 = this;\n\t\n\t if (range.length > 0) {\n\t this.quill.scroll.deleteAt(range.index, range.length); // So we do not trigger text-change\n\t }\n\t var lineFormats = Object.keys(context.format).reduce(function (lineFormats, format) {\n\t if (_parchment2.default.query(format, _parchment2.default.Scope.BLOCK) && !Array.isArray(context.format[format])) {\n\t lineFormats[format] = context.format[format];\n\t }\n\t return lineFormats;\n\t }, {});\n\t this.quill.insertText(range.index, '\\n', lineFormats, _quill2.default.sources.USER);\n\t this.quill.selection.scrollIntoView();\n\t Object.keys(context.format).forEach(function (name) {\n\t if (lineFormats[name] != null) return;\n\t if (Array.isArray(context.format[name])) return;\n\t if (name === 'link') return;\n\t _this3.quill.format(name, context.format[name], _quill2.default.sources.USER);\n\t });\n\t}\n\t\n\tfunction makeCodeBlockHandler(indent) {\n\t return {\n\t key: Keyboard.keys.TAB,\n\t shiftKey: !indent,\n\t format: { 'code-block': true },\n\t handler: function handler(range) {\n\t var CodeBlock = _parchment2.default.query('code-block');\n\t var index = range.index,\n\t length = range.length;\n\t\n\t var _quill$scroll$descend = this.quill.scroll.descendant(CodeBlock, index),\n\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t block = _quill$scroll$descend2[0],\n\t offset = _quill$scroll$descend2[1];\n\t\n\t if (block == null) return;\n\t var scrollOffset = this.quill.scroll.offset(block);\n\t var start = block.newlineIndex(offset, true) + 1;\n\t var end = block.newlineIndex(scrollOffset + offset + length);\n\t var lines = block.domNode.textContent.slice(start, end).split('\\n');\n\t offset = 0;\n\t lines.forEach(function (line, i) {\n\t if (indent) {\n\t block.insertAt(start + offset, CodeBlock.TAB);\n\t offset += CodeBlock.TAB.length;\n\t if (i === 0) {\n\t index += CodeBlock.TAB.length;\n\t } else {\n\t length += CodeBlock.TAB.length;\n\t }\n\t } else if (line.startsWith(CodeBlock.TAB)) {\n\t block.deleteAt(start + offset, CodeBlock.TAB.length);\n\t offset -= CodeBlock.TAB.length;\n\t if (i === 0) {\n\t index -= CodeBlock.TAB.length;\n\t } else {\n\t length -= CodeBlock.TAB.length;\n\t }\n\t }\n\t offset += line.length + 1;\n\t });\n\t this.quill.update(_quill2.default.sources.USER);\n\t this.quill.setSelection(index, length, _quill2.default.sources.SILENT);\n\t }\n\t };\n\t}\n\t\n\tfunction makeFormatHandler(format) {\n\t return {\n\t key: format[0].toUpperCase(),\n\t shortKey: true,\n\t handler: function handler(range, context) {\n\t this.quill.format(format, !context.format[format], _quill2.default.sources.USER);\n\t }\n\t };\n\t}\n\t\n\tfunction normalize(binding) {\n\t if (typeof binding === 'string' || typeof binding === 'number') {\n\t return normalize({ key: binding });\n\t }\n\t if ((typeof binding === 'undefined' ? 'undefined' : _typeof(binding)) === 'object') {\n\t binding = (0, _clone2.default)(binding, false);\n\t }\n\t if (typeof binding.key === 'string') {\n\t if (Keyboard.keys[binding.key.toUpperCase()] != null) {\n\t binding.key = Keyboard.keys[binding.key.toUpperCase()];\n\t } else if (binding.key.length === 1) {\n\t binding.key = binding.key.toUpperCase().charCodeAt(0);\n\t } else {\n\t return null;\n\t }\n\t }\n\t return binding;\n\t}\n\t\n\texports.default = Keyboard;\n\n/***/ },\n/* 53 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.IndentClass = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar IdentAttributor = function (_Parchment$Attributor) {\n\t _inherits(IdentAttributor, _Parchment$Attributor);\n\t\n\t function IdentAttributor() {\n\t _classCallCheck(this, IdentAttributor);\n\t\n\t return _possibleConstructorReturn(this, (IdentAttributor.__proto__ || Object.getPrototypeOf(IdentAttributor)).apply(this, arguments));\n\t }\n\t\n\t _createClass(IdentAttributor, [{\n\t key: 'add',\n\t value: function add(node, value) {\n\t if (value === '+1' || value === '-1') {\n\t var indent = this.value(node) || 0;\n\t value = value === '+1' ? indent + 1 : indent - 1;\n\t }\n\t if (value === 0) {\n\t this.remove(node);\n\t return true;\n\t } else {\n\t return _get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'add', this).call(this, node, value);\n\t }\n\t }\n\t }, {\n\t key: 'canAdd',\n\t value: function canAdd(node, value) {\n\t 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\t }\n\t }, {\n\t key: 'value',\n\t value: function value(node) {\n\t return parseInt(_get(IdentAttributor.prototype.__proto__ || Object.getPrototypeOf(IdentAttributor.prototype), 'value', this).call(this, node)) || undefined; // Don't return NaN\n\t }\n\t }]);\n\t\n\t return IdentAttributor;\n\t}(_parchment2.default.Attributor.Class);\n\t\n\tvar IndentClass = new IdentAttributor('indent', 'ql-indent', {\n\t scope: _parchment2.default.Scope.BLOCK,\n\t whitelist: [1, 2, 3, 4, 5, 6, 7, 8]\n\t});\n\t\n\texports.IndentClass = IndentClass;\n\n/***/ },\n/* 54 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Blockquote = function (_Block) {\n\t _inherits(Blockquote, _Block);\n\t\n\t function Blockquote() {\n\t _classCallCheck(this, Blockquote);\n\t\n\t return _possibleConstructorReturn(this, (Blockquote.__proto__ || Object.getPrototypeOf(Blockquote)).apply(this, arguments));\n\t }\n\t\n\t return Blockquote;\n\t}(_block2.default);\n\t\n\tBlockquote.blotName = 'blockquote';\n\tBlockquote.tagName = 'blockquote';\n\t\n\texports.default = Blockquote;\n\n/***/ },\n/* 55 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Header = function (_Block) {\n\t _inherits(Header, _Block);\n\t\n\t function Header() {\n\t _classCallCheck(this, Header);\n\t\n\t return _possibleConstructorReturn(this, (Header.__proto__ || Object.getPrototypeOf(Header)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Header, null, [{\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return this.tagName.indexOf(domNode.tagName) + 1;\n\t }\n\t }]);\n\t\n\t return Header;\n\t}(_block2.default);\n\t\n\tHeader.blotName = 'header';\n\tHeader.tagName = ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'];\n\t\n\texports.default = Header;\n\n/***/ },\n/* 56 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.ListItem = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _container = __webpack_require__(42);\n\t\n\tvar _container2 = _interopRequireDefault(_container);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar ListItem = function (_Block) {\n\t _inherits(ListItem, _Block);\n\t\n\t function ListItem() {\n\t _classCallCheck(this, ListItem);\n\t\n\t return _possibleConstructorReturn(this, (ListItem.__proto__ || Object.getPrototypeOf(ListItem)).apply(this, arguments));\n\t }\n\t\n\t _createClass(ListItem, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name === List.blotName && !value) {\n\t this.replaceWith(_parchment2.default.create(this.statics.scope));\n\t } else {\n\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }, {\n\t key: 'remove',\n\t value: function remove() {\n\t if (this.prev == null && this.next == null) {\n\t this.parent.remove();\n\t } else {\n\t _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'remove', this).call(this);\n\t }\n\t }\n\t }, {\n\t key: 'replaceWith',\n\t value: function replaceWith(name, value) {\n\t this.parent.isolate(this.offset(this.parent), this.length());\n\t if (name === this.parent.statics.blotName) {\n\t this.parent.replaceWith(name, value);\n\t return this;\n\t } else {\n\t this.parent.unwrap();\n\t return _get(ListItem.prototype.__proto__ || Object.getPrototypeOf(ListItem.prototype), 'replaceWith', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return domNode.tagName === this.tagName ? undefined : _get(ListItem.__proto__ || Object.getPrototypeOf(ListItem), 'formats', this).call(this, domNode);\n\t }\n\t }]);\n\t\n\t return ListItem;\n\t}(_block2.default);\n\t\n\tListItem.blotName = 'list-item';\n\tListItem.tagName = 'LI';\n\t\n\tvar List = function (_Container) {\n\t _inherits(List, _Container);\n\t\n\t function List() {\n\t _classCallCheck(this, List);\n\t\n\t return _possibleConstructorReturn(this, (List.__proto__ || Object.getPrototypeOf(List)).apply(this, arguments));\n\t }\n\t\n\t _createClass(List, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (this.children.length > 0) {\n\t this.children.tail.format(name, value);\n\t }\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t // We don't inherit from FormatBlot\n\t return _defineProperty({}, this.statics.blotName, this.statics.formats(this.domNode));\n\t }\n\t }, {\n\t key: 'insertBefore',\n\t value: function insertBefore(blot, ref) {\n\t if (blot instanceof ListItem) {\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'insertBefore', this).call(this, blot, ref);\n\t } else {\n\t var index = ref == null ? this.length() : ref.offset(this);\n\t var after = this.split(index);\n\t after.parent.insertBefore(blot, after);\n\t }\n\t }\n\t }, {\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'optimize', this).call(this);\n\t var next = this.next;\n\t 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\t next.moveChildren(this);\n\t next.remove();\n\t }\n\t }\n\t }, {\n\t key: 'replace',\n\t value: function replace(target) {\n\t if (target.statics.blotName !== this.statics.blotName) {\n\t var item = _parchment2.default.create(this.statics.defaultChild);\n\t target.moveChildren(item);\n\t this.appendChild(item);\n\t }\n\t _get(List.prototype.__proto__ || Object.getPrototypeOf(List.prototype), 'replace', this).call(this, target);\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var tagName = value === 'ordered' ? 'OL' : 'UL';\n\t var node = _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, tagName);\n\t if (value === 'checked' || value === 'unchecked') {\n\t node.setAttribute('data-checked', value === 'checked');\n\t }\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t if (domNode.tagName === 'OL') return 'ordered';\n\t if (domNode.tagName === 'UL') {\n\t if (domNode.hasAttribute('data-checked')) {\n\t return domNode.getAttribute('data-checked') === 'true' ? 'checked' : 'unchecked';\n\t } else {\n\t return 'bullet';\n\t }\n\t }\n\t return undefined;\n\t }\n\t }]);\n\t\n\t return List;\n\t}(_container2.default);\n\t\n\tList.blotName = 'list';\n\tList.scope = _parchment2.default.Scope.BLOCK_BLOT;\n\tList.tagName = ['OL', 'UL'];\n\tList.defaultChild = 'list-item';\n\tList.allowedChildren = [ListItem];\n\t\n\texports.ListItem = ListItem;\n\texports.default = List;\n\n/***/ },\n/* 57 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Bold = function (_Inline) {\n\t _inherits(Bold, _Inline);\n\t\n\t function Bold() {\n\t _classCallCheck(this, Bold);\n\t\n\t return _possibleConstructorReturn(this, (Bold.__proto__ || Object.getPrototypeOf(Bold)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Bold, [{\n\t key: 'optimize',\n\t value: function optimize() {\n\t _get(Bold.prototype.__proto__ || Object.getPrototypeOf(Bold.prototype), 'optimize', this).call(this);\n\t if (this.domNode.tagName !== this.statics.tagName[0]) {\n\t this.replaceWith(this.statics.blotName);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create() {\n\t return _get(Bold.__proto__ || Object.getPrototypeOf(Bold), 'create', this).call(this);\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats() {\n\t return true;\n\t }\n\t }]);\n\t\n\t return Bold;\n\t}(_inline2.default);\n\t\n\tBold.blotName = 'bold';\n\tBold.tagName = ['STRONG', 'B'];\n\t\n\texports.default = Bold;\n\n/***/ },\n/* 58 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _bold = __webpack_require__(57);\n\t\n\tvar _bold2 = _interopRequireDefault(_bold);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Italic = function (_Bold) {\n\t _inherits(Italic, _Bold);\n\t\n\t function Italic() {\n\t _classCallCheck(this, Italic);\n\t\n\t return _possibleConstructorReturn(this, (Italic.__proto__ || Object.getPrototypeOf(Italic)).apply(this, arguments));\n\t }\n\t\n\t return Italic;\n\t}(_bold2.default);\n\t\n\tItalic.blotName = 'italic';\n\tItalic.tagName = ['EM', 'I'];\n\t\n\texports.default = Italic;\n\n/***/ },\n/* 59 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.sanitize = exports.default = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Link = function (_Inline) {\n\t _inherits(Link, _Inline);\n\t\n\t function Link() {\n\t _classCallCheck(this, Link);\n\t\n\t return _possibleConstructorReturn(this, (Link.__proto__ || Object.getPrototypeOf(Link)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Link, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (name !== this.statics.blotName || !value) return _get(Link.prototype.__proto__ || Object.getPrototypeOf(Link.prototype), 'format', this).call(this, name, value);\n\t value = this.constructor.sanitize(value);\n\t this.domNode.setAttribute('href', value);\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Link.__proto__ || Object.getPrototypeOf(Link), 'create', this).call(this, value);\n\t value = this.sanitize(value);\n\t node.setAttribute('href', value);\n\t node.setAttribute('target', '_blank');\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return domNode.getAttribute('href');\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return _sanitize(url, ['http', 'https', 'mailto']) ? url : this.SANITIZED_URL;\n\t }\n\t }]);\n\t\n\t return Link;\n\t}(_inline2.default);\n\t\n\tLink.blotName = 'link';\n\tLink.tagName = 'A';\n\tLink.SANITIZED_URL = 'about:blank';\n\t\n\tfunction _sanitize(url, protocols) {\n\t var anchor = document.createElement('a');\n\t anchor.href = url;\n\t var protocol = anchor.href.slice(0, anchor.href.indexOf(':'));\n\t return protocols.indexOf(protocol) > -1;\n\t}\n\t\n\texports.default = Link;\n\texports.sanitize = _sanitize;\n\n/***/ },\n/* 60 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Script = function (_Inline) {\n\t _inherits(Script, _Inline);\n\t\n\t function Script() {\n\t _classCallCheck(this, Script);\n\t\n\t return _possibleConstructorReturn(this, (Script.__proto__ || Object.getPrototypeOf(Script)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Script, null, [{\n\t key: 'create',\n\t value: function create(value) {\n\t if (value === 'super') {\n\t return document.createElement('sup');\n\t } else if (value === 'sub') {\n\t return document.createElement('sub');\n\t } else {\n\t return _get(Script.__proto__ || Object.getPrototypeOf(Script), 'create', this).call(this, value);\n\t }\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t if (domNode.tagName === 'SUB') return 'sub';\n\t if (domNode.tagName === 'SUP') return 'super';\n\t return undefined;\n\t }\n\t }]);\n\t\n\t return Script;\n\t}(_inline2.default);\n\t\n\tScript.blotName = 'script';\n\tScript.tagName = ['SUB', 'SUP'];\n\t\n\texports.default = Script;\n\n/***/ },\n/* 61 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Strike = function (_Inline) {\n\t _inherits(Strike, _Inline);\n\t\n\t function Strike() {\n\t _classCallCheck(this, Strike);\n\t\n\t return _possibleConstructorReturn(this, (Strike.__proto__ || Object.getPrototypeOf(Strike)).apply(this, arguments));\n\t }\n\t\n\t return Strike;\n\t}(_inline2.default);\n\t\n\tStrike.blotName = 'strike';\n\tStrike.tagName = 'S';\n\t\n\texports.default = Strike;\n\n/***/ },\n/* 62 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _inline = __webpack_require__(32);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar Underline = function (_Inline) {\n\t _inherits(Underline, _Inline);\n\t\n\t function Underline() {\n\t _classCallCheck(this, Underline);\n\t\n\t return _possibleConstructorReturn(this, (Underline.__proto__ || Object.getPrototypeOf(Underline)).apply(this, arguments));\n\t }\n\t\n\t return Underline;\n\t}(_inline2.default);\n\t\n\tUnderline.blotName = 'underline';\n\tUnderline.tagName = 'U';\n\t\n\texports.default = Underline;\n\n/***/ },\n/* 63 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _link = __webpack_require__(59);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar ATTRIBUTES = ['alt', 'height', 'width'];\n\t\n\tvar Image = function (_Embed) {\n\t _inherits(Image, _Embed);\n\t\n\t function Image() {\n\t _classCallCheck(this, Image);\n\t\n\t return _possibleConstructorReturn(this, (Image.__proto__ || Object.getPrototypeOf(Image)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Image, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t if (value) {\n\t this.domNode.setAttribute(name, value);\n\t } else {\n\t this.domNode.removeAttribute(name);\n\t }\n\t } else {\n\t _get(Image.prototype.__proto__ || Object.getPrototypeOf(Image.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Image.__proto__ || Object.getPrototypeOf(Image), 'create', this).call(this, value);\n\t if (typeof value === 'string') {\n\t node.setAttribute('src', this.sanitize(value));\n\t }\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t if (domNode.hasAttribute(attribute)) {\n\t formats[attribute] = domNode.getAttribute(attribute);\n\t }\n\t return formats;\n\t }, {});\n\t }\n\t }, {\n\t key: 'match',\n\t value: function match(url) {\n\t return (/\\.(jpe?g|gif|png)$/.test(url) || /^data:image\\/.+;base64/.test(url)\n\t );\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return (0, _link.sanitize)(url, ['http', 'https', 'data']) ? url : '//:0';\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('src');\n\t }\n\t }]);\n\t\n\t return Image;\n\t}(_embed2.default);\n\t\n\tImage.blotName = 'image';\n\tImage.tagName = 'IMG';\n\t\n\texports.default = Image;\n\n/***/ },\n/* 64 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _block = __webpack_require__(29);\n\t\n\tvar _link = __webpack_require__(59);\n\t\n\tvar _link2 = _interopRequireDefault(_link);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar ATTRIBUTES = ['height', 'width'];\n\t\n\tvar Video = function (_BlockEmbed) {\n\t _inherits(Video, _BlockEmbed);\n\t\n\t function Video() {\n\t _classCallCheck(this, Video);\n\t\n\t return _possibleConstructorReturn(this, (Video.__proto__ || Object.getPrototypeOf(Video)).apply(this, arguments));\n\t }\n\t\n\t _createClass(Video, [{\n\t key: 'format',\n\t value: function format(name, value) {\n\t if (ATTRIBUTES.indexOf(name) > -1) {\n\t if (value) {\n\t this.domNode.setAttribute(name, value);\n\t } else {\n\t this.domNode.removeAttribute(name);\n\t }\n\t } else {\n\t _get(Video.prototype.__proto__ || Object.getPrototypeOf(Video.prototype), 'format', this).call(this, name, value);\n\t }\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(Video.__proto__ || Object.getPrototypeOf(Video), 'create', this).call(this, value);\n\t node.setAttribute('frameborder', '0');\n\t node.setAttribute('allowfullscreen', true);\n\t node.setAttribute('src', this.sanitize(value));\n\t return node;\n\t }\n\t }, {\n\t key: 'formats',\n\t value: function formats(domNode) {\n\t return ATTRIBUTES.reduce(function (formats, attribute) {\n\t if (domNode.hasAttribute(attribute)) {\n\t formats[attribute] = domNode.getAttribute(attribute);\n\t }\n\t return formats;\n\t }, {});\n\t }\n\t }, {\n\t key: 'sanitize',\n\t value: function sanitize(url) {\n\t return _link2.default.sanitize(url);\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('src');\n\t }\n\t }]);\n\t\n\t return Video;\n\t}(_block.BlockEmbed);\n\t\n\tVideo.blotName = 'video';\n\tVideo.className = 'ql-video';\n\tVideo.tagName = 'IFRAME';\n\t\n\texports.default = Video;\n\n/***/ },\n/* 65 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.FormulaBlot = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _embed = __webpack_require__(31);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar FormulaBlot = function (_Embed) {\n\t _inherits(FormulaBlot, _Embed);\n\t\n\t function FormulaBlot() {\n\t _classCallCheck(this, FormulaBlot);\n\t\n\t return _possibleConstructorReturn(this, (FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot)).apply(this, arguments));\n\t }\n\t\n\t _createClass(FormulaBlot, [{\n\t key: 'index',\n\t value: function index() {\n\t return 1;\n\t }\n\t }], [{\n\t key: 'create',\n\t value: function create(value) {\n\t var node = _get(FormulaBlot.__proto__ || Object.getPrototypeOf(FormulaBlot), 'create', this).call(this, value);\n\t if (typeof value === 'string') {\n\t window.katex.render(value, node);\n\t node.setAttribute('data-value', value);\n\t }\n\t node.setAttribute('contenteditable', false);\n\t return node;\n\t }\n\t }, {\n\t key: 'value',\n\t value: function value(domNode) {\n\t return domNode.getAttribute('data-value');\n\t }\n\t }]);\n\t\n\t return FormulaBlot;\n\t}(_embed2.default);\n\t\n\tFormulaBlot.blotName = 'formula';\n\tFormulaBlot.className = 'ql-formula';\n\tFormulaBlot.tagName = 'SPAN';\n\t\n\tfunction Formula() {\n\t if (window.katex == null) {\n\t throw new Error('Formula module requires KaTeX.');\n\t }\n\t _quill2.default.register(FormulaBlot, true);\n\t}\n\t\n\texports.FormulaBlot = FormulaBlot;\n\texports.default = Formula;\n\n/***/ },\n/* 66 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.CodeToken = exports.CodeBlock = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _module = __webpack_require__(39);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tvar _code = __webpack_require__(28);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar SyntaxCodeBlock = function (_CodeBlock) {\n\t _inherits(SyntaxCodeBlock, _CodeBlock);\n\t\n\t function SyntaxCodeBlock() {\n\t _classCallCheck(this, SyntaxCodeBlock);\n\t\n\t return _possibleConstructorReturn(this, (SyntaxCodeBlock.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock)).apply(this, arguments));\n\t }\n\t\n\t _createClass(SyntaxCodeBlock, [{\n\t key: 'replaceWith',\n\t value: function replaceWith(block) {\n\t this.domNode.textContent = this.domNode.textContent;\n\t this.attach();\n\t _get(SyntaxCodeBlock.prototype.__proto__ || Object.getPrototypeOf(SyntaxCodeBlock.prototype), 'replaceWith', this).call(this, block);\n\t }\n\t }, {\n\t key: 'highlight',\n\t value: function highlight(_highlight) {\n\t if (this.cachedHTML !== this.domNode.innerHTML) {\n\t var text = this.domNode.textContent;\n\t if (text.trim().length > 0 || this.cachedHTML == null) {\n\t this.domNode.innerHTML = _highlight(text);\n\t this.attach();\n\t }\n\t this.cachedHTML = this.domNode.innerHTML;\n\t }\n\t }\n\t }]);\n\t\n\t return SyntaxCodeBlock;\n\t}(_code2.default);\n\t\n\tSyntaxCodeBlock.className = 'ql-syntax';\n\t\n\tvar CodeToken = new _parchment2.default.Attributor.Class('token', 'hljs', {\n\t scope: _parchment2.default.Scope.INLINE\n\t});\n\t\n\tvar Syntax = function (_Module) {\n\t _inherits(Syntax, _Module);\n\t\n\t function Syntax(quill, options) {\n\t _classCallCheck(this, Syntax);\n\t\n\t var _this2 = _possibleConstructorReturn(this, (Syntax.__proto__ || Object.getPrototypeOf(Syntax)).call(this, quill, options));\n\t\n\t if (typeof _this2.options.highlight !== 'function') {\n\t throw new Error('Syntax module requires highlight.js. Please include the library on the page before Quill.');\n\t }\n\t _quill2.default.register(CodeToken, true);\n\t _quill2.default.register(SyntaxCodeBlock, true);\n\t var timer = null;\n\t _this2.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t if (timer != null) return;\n\t timer = setTimeout(function () {\n\t _this2.highlight();\n\t timer = null;\n\t }, 100);\n\t });\n\t _this2.highlight();\n\t return _this2;\n\t }\n\t\n\t _createClass(Syntax, [{\n\t key: 'highlight',\n\t value: function highlight() {\n\t var _this3 = this;\n\t\n\t if (this.quill.selection.composing) return;\n\t var range = this.quill.getSelection();\n\t this.quill.scroll.descendants(SyntaxCodeBlock).forEach(function (code) {\n\t code.highlight(_this3.options.highlight);\n\t });\n\t this.quill.update(_quill2.default.sources.SILENT);\n\t if (range != null) {\n\t this.quill.setSelection(range, _quill2.default.sources.SILENT);\n\t }\n\t }\n\t }]);\n\t\n\t return Syntax;\n\t}(_module2.default);\n\t\n\tSyntax.DEFAULTS = {\n\t highlight: function () {\n\t if (window.hljs == null) return null;\n\t return function (text) {\n\t var result = window.hljs.highlightAuto(text);\n\t return result.value;\n\t };\n\t }()\n\t};\n\t\n\texports.CodeBlock = SyntaxCodeBlock;\n\texports.CodeToken = CodeToken;\n\texports.default = Syntax;\n\n/***/ },\n/* 67 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.addControls = exports.default = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _quill = __webpack_require__(18);\n\t\n\tvar _quill2 = _interopRequireDefault(_quill);\n\t\n\tvar _logger = __webpack_require__(37);\n\t\n\tvar _logger2 = _interopRequireDefault(_logger);\n\t\n\tvar _module = __webpack_require__(39);\n\t\n\tvar _module2 = _interopRequireDefault(_module);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar debug = (0, _logger2.default)('quill:toolbar');\n\t\n\tvar Toolbar = function (_Module) {\n\t _inherits(Toolbar, _Module);\n\t\n\t function Toolbar(quill, options) {\n\t _classCallCheck(this, Toolbar);\n\t\n\t var _this = _possibleConstructorReturn(this, (Toolbar.__proto__ || Object.getPrototypeOf(Toolbar)).call(this, quill, options));\n\t\n\t if (Array.isArray(_this.options.container)) {\n\t var container = document.createElement('div');\n\t addControls(container, _this.options.container);\n\t quill.container.parentNode.insertBefore(container, quill.container);\n\t _this.container = container;\n\t } else if (typeof _this.options.container === 'string') {\n\t _this.container = document.querySelector(_this.options.container);\n\t } else {\n\t _this.container = _this.options.container;\n\t }\n\t if (!(_this.container instanceof HTMLElement)) {\n\t var _ret;\n\t\n\t return _ret = debug.error('Container required for toolbar', _this.options), _possibleConstructorReturn(_this, _ret);\n\t }\n\t _this.container.classList.add('ql-toolbar');\n\t _this.controls = [];\n\t _this.handlers = {};\n\t Object.keys(_this.options.handlers).forEach(function (format) {\n\t _this.addHandler(format, _this.options.handlers[format]);\n\t });\n\t [].forEach.call(_this.container.querySelectorAll('button, select'), function (input) {\n\t _this.attach(input);\n\t });\n\t _this.quill.on(_quill2.default.events.EDITOR_CHANGE, function (type, range) {\n\t if (type === _quill2.default.events.SELECTION_CHANGE) {\n\t _this.update(range);\n\t }\n\t });\n\t _this.quill.on(_quill2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _this$quill$selection = _this.quill.selection.getRange(),\n\t _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1),\n\t range = _this$quill$selection2[0]; // quill.getSelection triggers update\n\t\n\t\n\t _this.update(range);\n\t });\n\t return _this;\n\t }\n\t\n\t _createClass(Toolbar, [{\n\t key: 'addHandler',\n\t value: function addHandler(format, handler) {\n\t this.handlers[format] = handler;\n\t }\n\t }, {\n\t key: 'attach',\n\t value: function attach(input) {\n\t var _this2 = this;\n\t\n\t var format = [].find.call(input.classList, function (className) {\n\t return className.indexOf('ql-') === 0;\n\t });\n\t if (!format) return;\n\t format = format.slice('ql-'.length);\n\t if (input.tagName === 'BUTTON') {\n\t input.setAttribute('type', 'button');\n\t }\n\t if (this.handlers[format] == null) {\n\t if (this.quill.scroll.whitelist != null && this.quill.scroll.whitelist[format] == null) {\n\t debug.warn('ignoring attaching to disabled format', format, input);\n\t return;\n\t }\n\t if (_parchment2.default.query(format) == null) {\n\t debug.warn('ignoring attaching to nonexistent format', format, input);\n\t return;\n\t }\n\t }\n\t var eventName = input.tagName === 'SELECT' ? 'change' : 'click';\n\t input.addEventListener(eventName, function (e) {\n\t var value = void 0;\n\t if (input.tagName === 'SELECT') {\n\t if (input.selectedIndex < 0) return;\n\t var selected = input.options[input.selectedIndex];\n\t if (selected.hasAttribute('selected')) {\n\t value = false;\n\t } else {\n\t value = selected.value || false;\n\t }\n\t } else {\n\t if (input.classList.contains('ql-active')) {\n\t value = false;\n\t } else {\n\t value = input.value || !input.hasAttribute('value');\n\t }\n\t e.preventDefault();\n\t }\n\t _this2.quill.focus();\n\t\n\t var _quill$selection$getR = _this2.quill.selection.getRange(),\n\t _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1),\n\t range = _quill$selection$getR2[0];\n\t\n\t if (_this2.handlers[format] != null) {\n\t _this2.handlers[format].call(_this2, value);\n\t } else if (_parchment2.default.query(format).prototype instanceof _parchment2.default.Embed) {\n\t value = prompt('Enter ' + format);\n\t if (!value) return;\n\t _this2.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert(_defineProperty({}, format, value)), _quill2.default.sources.USER);\n\t } else {\n\t _this2.quill.format(format, value, _quill2.default.sources.USER);\n\t }\n\t _this2.update(range);\n\t });\n\t // TODO use weakmap\n\t this.controls.push([format, input]);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(range) {\n\t var formats = range == null ? {} : this.quill.getFormat(range);\n\t this.controls.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2),\n\t format = _pair[0],\n\t input = _pair[1];\n\t\n\t if (input.tagName === 'SELECT') {\n\t var option = void 0;\n\t if (range == null) {\n\t option = null;\n\t } else if (formats[format] == null) {\n\t option = input.querySelector('option[selected]');\n\t } else if (!Array.isArray(formats[format])) {\n\t var value = formats[format];\n\t if (typeof value === 'string') {\n\t value = value.replace(/\\\"/g, '\\\\\"');\n\t }\n\t option = input.querySelector('option[value=\"' + value + '\"]');\n\t }\n\t if (option == null) {\n\t input.value = ''; // TODO make configurable?\n\t input.selectedIndex = -1;\n\t } else {\n\t option.selected = true;\n\t }\n\t } else {\n\t if (range == null) {\n\t input.classList.remove('ql-active');\n\t } else if (input.hasAttribute('value')) {\n\t // both being null should match (default values)\n\t // '1' should match with 1 (headers)\n\t var isActive = formats[format] === input.getAttribute('value') || formats[format] != null && formats[format].toString() === input.getAttribute('value') || formats[format] == null && !input.getAttribute('value');\n\t input.classList.toggle('ql-active', isActive);\n\t } else {\n\t input.classList.toggle('ql-active', formats[format] != null);\n\t }\n\t }\n\t });\n\t }\n\t }]);\n\t\n\t return Toolbar;\n\t}(_module2.default);\n\t\n\tToolbar.DEFAULTS = {};\n\t\n\tfunction addButton(container, format, value) {\n\t var input = document.createElement('button');\n\t input.setAttribute('type', 'button');\n\t input.classList.add('ql-' + format);\n\t if (value != null) {\n\t input.value = value;\n\t }\n\t container.appendChild(input);\n\t}\n\t\n\tfunction addControls(container, groups) {\n\t if (!Array.isArray(groups[0])) {\n\t groups = [groups];\n\t }\n\t groups.forEach(function (controls) {\n\t var group = document.createElement('span');\n\t group.classList.add('ql-formats');\n\t controls.forEach(function (control) {\n\t if (typeof control === 'string') {\n\t addButton(group, control);\n\t } else {\n\t var format = Object.keys(control)[0];\n\t var value = control[format];\n\t if (Array.isArray(value)) {\n\t addSelect(group, format, value);\n\t } else {\n\t addButton(group, format, value);\n\t }\n\t }\n\t });\n\t container.appendChild(group);\n\t });\n\t}\n\t\n\tfunction addSelect(container, format, values) {\n\t var input = document.createElement('select');\n\t input.classList.add('ql-' + format);\n\t values.forEach(function (value) {\n\t var option = document.createElement('option');\n\t if (value !== false) {\n\t option.setAttribute('value', value);\n\t } else {\n\t option.setAttribute('selected', 'selected');\n\t }\n\t input.appendChild(option);\n\t });\n\t container.appendChild(input);\n\t}\n\t\n\tToolbar.DEFAULTS = {\n\t container: null,\n\t handlers: {\n\t clean: function clean() {\n\t var _this3 = this;\n\t\n\t var range = this.quill.getSelection();\n\t if (range == null) return;\n\t if (range.length == 0) {\n\t var formats = this.quill.getFormat();\n\t Object.keys(formats).forEach(function (name) {\n\t // Clean functionality in existing apps only clean inline formats\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.INLINE) != null) {\n\t _this3.quill.format(name, false);\n\t }\n\t });\n\t } else {\n\t this.quill.removeFormat(range, _quill2.default.sources.USER);\n\t }\n\t },\n\t direction: function direction(value) {\n\t var align = this.quill.getFormat()['align'];\n\t if (value === 'rtl' && align == null) {\n\t this.quill.format('align', 'right', _quill2.default.sources.USER);\n\t } else if (!value && align === 'right') {\n\t this.quill.format('align', false, _quill2.default.sources.USER);\n\t }\n\t this.quill.format('direction', value, _quill2.default.sources.USER);\n\t },\n\t link: function link(value) {\n\t if (value === true) {\n\t value = prompt('Enter link URL:');\n\t }\n\t this.quill.format('link', value, _quill2.default.sources.USER);\n\t },\n\t indent: function indent(value) {\n\t var range = this.quill.getSelection();\n\t var formats = this.quill.getFormat(range);\n\t var indent = parseInt(formats.indent || 0);\n\t if (value === '+1' || value === '-1') {\n\t var modifier = value === '+1' ? 1 : -1;\n\t if (formats.direction === 'rtl') modifier *= -1;\n\t this.quill.format('indent', indent + modifier, _quill2.default.sources.USER);\n\t }\n\t }\n\t }\n\t};\n\t\n\texports.default = Toolbar;\n\texports.addControls = addControls;\n\n/***/ },\n/* 68 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tmodule.exports = {\n\t 'align': {\n\t '': __webpack_require__(69),\n\t 'center': __webpack_require__(70),\n\t 'right': __webpack_require__(71),\n\t 'justify': __webpack_require__(72)\n\t },\n\t 'background': __webpack_require__(73),\n\t 'blockquote': __webpack_require__(74),\n\t 'bold': __webpack_require__(75),\n\t 'clean': __webpack_require__(76),\n\t 'code': __webpack_require__(77),\n\t 'code-block': __webpack_require__(77),\n\t 'color': __webpack_require__(78),\n\t 'direction': {\n\t '': __webpack_require__(79),\n\t 'rtl': __webpack_require__(80)\n\t },\n\t 'float': {\n\t 'center': __webpack_require__(81),\n\t 'full': __webpack_require__(82),\n\t 'left': __webpack_require__(83),\n\t 'right': __webpack_require__(84)\n\t },\n\t 'formula': __webpack_require__(85),\n\t 'header': {\n\t '1': __webpack_require__(86),\n\t '2': __webpack_require__(87)\n\t },\n\t 'italic': __webpack_require__(88),\n\t 'image': __webpack_require__(89),\n\t 'indent': {\n\t '+1': __webpack_require__(90),\n\t '-1': __webpack_require__(91)\n\t },\n\t 'link': __webpack_require__(92),\n\t 'list': {\n\t 'ordered': __webpack_require__(93),\n\t 'bullet': __webpack_require__(94),\n\t 'unchecked': __webpack_require__(95)\n\t },\n\t 'script': {\n\t 'sub': __webpack_require__(96),\n\t 'super': __webpack_require__(97)\n\t },\n\t 'strike': __webpack_require__(98),\n\t 'underline': __webpack_require__(99),\n\t 'video': __webpack_require__(100)\n\t};\n\n/***/ },\n/* 69 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 70 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n/***/ },\n/* 75 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n/***/ },\n/* 77 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n/***/ },\n/* 78 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ },\n/* 82 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n/***/ },\n/* 85 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <line class=\\\"ql-stroke ql-thin\\\" x1=13.5 x2=15.5 y1=14.5 y2=14.5></line> <path class=ql-fill d=M14.5,15a0.5,0.5,0,0,1-.5-0.5V12.085l-0.276.138A0.5,0.5,0,0,1,13.053,12c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,15,11.5v3A0.5,0.5,0,0,1,14.5,15Z></path> </svg>\";\n\n/***/ },\n/* 87 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <path class=\\\"ql-stroke ql-thin\\\" d=M15.5,14.5h-2c0-.234,1.85-1.076,1.85-2.234a0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n/***/ },\n/* 90 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n/***/ },\n/* 91 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n/***/ },\n/* 94 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n/***/ },\n/* 95 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n/***/ },\n/* 99 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n/***/ },\n/* 100 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n/***/ },\n/* 101 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _dropdown = __webpack_require__(102);\n\t\n\tvar _dropdown2 = _interopRequireDefault(_dropdown);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Picker = function () {\n\t function Picker(select) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, Picker);\n\t\n\t this.select = select;\n\t this.container = document.createElement('span');\n\t this.buildPicker();\n\t this.select.style.display = 'none';\n\t this.select.parentNode.insertBefore(this.container, this.select);\n\t this.label.addEventListener('click', function () {\n\t _this.container.classList.toggle('ql-expanded');\n\t });\n\t this.select.addEventListener('change', this.update.bind(this));\n\t }\n\t\n\t _createClass(Picker, [{\n\t key: 'buildItem',\n\t value: function buildItem(option) {\n\t var _this2 = this;\n\t\n\t var item = document.createElement('span');\n\t item.classList.add('ql-picker-item');\n\t if (option.hasAttribute('value')) {\n\t item.setAttribute('data-value', option.getAttribute('value'));\n\t }\n\t if (option.textContent) {\n\t item.setAttribute('data-label', option.textContent);\n\t }\n\t item.addEventListener('click', function () {\n\t _this2.selectItem(item, true);\n\t });\n\t return item;\n\t }\n\t }, {\n\t key: 'buildLabel',\n\t value: function buildLabel() {\n\t var label = document.createElement('span');\n\t label.classList.add('ql-picker-label');\n\t label.innerHTML = _dropdown2.default;\n\t this.container.appendChild(label);\n\t return label;\n\t }\n\t }, {\n\t key: 'buildOptions',\n\t value: function buildOptions() {\n\t var _this3 = this;\n\t\n\t var options = document.createElement('span');\n\t options.classList.add('ql-picker-options');\n\t [].slice.call(this.select.options).forEach(function (option) {\n\t var item = _this3.buildItem(option);\n\t options.appendChild(item);\n\t if (option.hasAttribute('selected')) {\n\t _this3.selectItem(item);\n\t }\n\t });\n\t this.container.appendChild(options);\n\t }\n\t }, {\n\t key: 'buildPicker',\n\t value: function buildPicker() {\n\t var _this4 = this;\n\t\n\t [].slice.call(this.select.attributes).forEach(function (item) {\n\t _this4.container.setAttribute(item.name, item.value);\n\t });\n\t this.container.classList.add('ql-picker');\n\t this.label = this.buildLabel();\n\t this.buildOptions();\n\t }\n\t }, {\n\t key: 'close',\n\t value: function close() {\n\t this.container.classList.remove('ql-expanded');\n\t }\n\t }, {\n\t key: 'selectItem',\n\t value: function selectItem(item) {\n\t var trigger = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n\t\n\t var selected = this.container.querySelector('.ql-selected');\n\t if (item === selected) return;\n\t if (selected != null) {\n\t selected.classList.remove('ql-selected');\n\t }\n\t if (item == null) return;\n\t item.classList.add('ql-selected');\n\t this.select.selectedIndex = [].indexOf.call(item.parentNode.children, item);\n\t if (item.hasAttribute('data-value')) {\n\t this.label.setAttribute('data-value', item.getAttribute('data-value'));\n\t } else {\n\t this.label.removeAttribute('data-value');\n\t }\n\t if (item.hasAttribute('data-label')) {\n\t this.label.setAttribute('data-label', item.getAttribute('data-label'));\n\t } else {\n\t this.label.removeAttribute('data-label');\n\t }\n\t if (trigger) {\n\t if (typeof Event === 'function') {\n\t this.select.dispatchEvent(new Event('change'));\n\t } else if ((typeof Event === 'undefined' ? 'undefined' : _typeof(Event)) === 'object') {\n\t // IE11\n\t var event = document.createEvent('Event');\n\t event.initEvent('change', true, true);\n\t this.select.dispatchEvent(event);\n\t }\n\t this.close();\n\t }\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update() {\n\t var option = void 0;\n\t if (this.select.selectedIndex > -1) {\n\t var item = this.container.querySelector('.ql-picker-options').children[this.select.selectedIndex];\n\t option = this.select.options[this.select.selectedIndex];\n\t this.selectItem(item);\n\t } else {\n\t this.selectItem(null);\n\t }\n\t var isActive = option != null && option !== this.select.querySelector('option[selected]');\n\t this.label.classList.toggle('ql-active', isActive);\n\t }\n\t }]);\n\t\n\t return Picker;\n\t}();\n\t\n\texports.default = Picker;\n\n/***/ },\n/* 102 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n/***/ },\n/* 103 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _picker = __webpack_require__(101);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar ColorPicker = function (_Picker) {\n\t _inherits(ColorPicker, _Picker);\n\t\n\t function ColorPicker(select, label) {\n\t _classCallCheck(this, ColorPicker);\n\t\n\t var _this = _possibleConstructorReturn(this, (ColorPicker.__proto__ || Object.getPrototypeOf(ColorPicker)).call(this, select));\n\t\n\t _this.label.innerHTML = label;\n\t _this.container.classList.add('ql-color-picker');\n\t [].slice.call(_this.container.querySelectorAll('.ql-picker-item'), 0, 7).forEach(function (item) {\n\t item.classList.add('ql-primary');\n\t });\n\t return _this;\n\t }\n\t\n\t _createClass(ColorPicker, [{\n\t key: 'buildItem',\n\t value: function buildItem(option) {\n\t var item = _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'buildItem', this).call(this, option);\n\t item.style.backgroundColor = option.getAttribute('value') || '';\n\t return item;\n\t }\n\t }, {\n\t key: 'selectItem',\n\t value: function selectItem(item, trigger) {\n\t _get(ColorPicker.prototype.__proto__ || Object.getPrototypeOf(ColorPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t var colorLabel = this.label.querySelector('.ql-color-label');\n\t var value = item ? item.getAttribute('data-value') || '' : '';\n\t if (colorLabel) {\n\t if (colorLabel.tagName === 'line') {\n\t colorLabel.style.stroke = value;\n\t } else {\n\t colorLabel.style.fill = value;\n\t }\n\t }\n\t }\n\t }]);\n\t\n\t return ColorPicker;\n\t}(_picker2.default);\n\t\n\texports.default = ColorPicker;\n\n/***/ },\n/* 104 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _picker = __webpack_require__(101);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar IconPicker = function (_Picker) {\n\t _inherits(IconPicker, _Picker);\n\t\n\t function IconPicker(select, icons) {\n\t _classCallCheck(this, IconPicker);\n\t\n\t var _this = _possibleConstructorReturn(this, (IconPicker.__proto__ || Object.getPrototypeOf(IconPicker)).call(this, select));\n\t\n\t _this.container.classList.add('ql-icon-picker');\n\t [].forEach.call(_this.container.querySelectorAll('.ql-picker-item'), function (item) {\n\t item.innerHTML = icons[item.getAttribute('data-value') || ''];\n\t });\n\t _this.defaultItem = _this.container.querySelector('.ql-selected');\n\t _this.selectItem(_this.defaultItem);\n\t return _this;\n\t }\n\t\n\t _createClass(IconPicker, [{\n\t key: 'selectItem',\n\t value: function selectItem(item, trigger) {\n\t _get(IconPicker.prototype.__proto__ || Object.getPrototypeOf(IconPicker.prototype), 'selectItem', this).call(this, item, trigger);\n\t item = item || this.defaultItem;\n\t this.label.innerHTML = item.innerHTML;\n\t }\n\t }]);\n\t\n\t return IconPicker;\n\t}(_picker2.default);\n\t\n\texports.default = IconPicker;\n\n/***/ },\n/* 105 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tvar Tooltip = function () {\n\t function Tooltip(quill, boundsContainer) {\n\t var _this = this;\n\t\n\t _classCallCheck(this, Tooltip);\n\t\n\t this.quill = quill;\n\t this.boundsContainer = boundsContainer || document.body;\n\t this.root = quill.addContainer('ql-tooltip');\n\t this.root.innerHTML = this.constructor.TEMPLATE;\n\t var offset = parseInt(window.getComputedStyle(this.root).marginTop);\n\t this.quill.root.addEventListener('scroll', function () {\n\t _this.root.style.marginTop = -1 * _this.quill.root.scrollTop + offset + 'px';\n\t _this.checkBounds();\n\t });\n\t this.hide();\n\t }\n\t\n\t _createClass(Tooltip, [{\n\t key: 'checkBounds',\n\t value: function checkBounds() {\n\t this.root.classList.toggle('ql-out-top', this.root.offsetTop <= 0);\n\t this.root.classList.remove('ql-out-bottom');\n\t this.root.classList.toggle('ql-out-bottom', this.root.offsetTop + this.root.offsetHeight >= this.quill.root.offsetHeight);\n\t }\n\t }, {\n\t key: 'hide',\n\t value: function hide() {\n\t this.root.classList.add('ql-hidden');\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(reference) {\n\t var left = reference.left + reference.width / 2 - this.root.offsetWidth / 2;\n\t var top = reference.bottom + this.quill.root.scrollTop;\n\t this.root.style.left = left + 'px';\n\t this.root.style.top = top + 'px';\n\t var containerBounds = this.boundsContainer.getBoundingClientRect();\n\t var rootBounds = this.root.getBoundingClientRect();\n\t var shift = 0;\n\t if (rootBounds.right > containerBounds.right) {\n\t shift = containerBounds.right - rootBounds.right;\n\t this.root.style.left = left + shift + 'px';\n\t }\n\t if (rootBounds.left < containerBounds.left) {\n\t shift = containerBounds.left - rootBounds.left;\n\t this.root.style.left = left + shift + 'px';\n\t }\n\t this.checkBounds();\n\t return shift;\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t this.root.classList.remove('ql-editing');\n\t this.root.classList.remove('ql-hidden');\n\t }\n\t }]);\n\t\n\t return Tooltip;\n\t}();\n\t\n\texports.default = Tooltip;\n\n/***/ },\n/* 106 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BubbleTooltip = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _emitter = __webpack_require__(35);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _base = __webpack_require__(107);\n\t\n\tvar _base2 = _interopRequireDefault(_base);\n\t\n\tvar _selection = __webpack_require__(40);\n\t\n\tvar _icons = __webpack_require__(68);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar TOOLBAR_CONFIG = [['bold', 'italic', 'link'], [{ header: 1 }, { header: 2 }, 'blockquote']];\n\t\n\tvar BubbleTheme = function (_BaseTheme) {\n\t _inherits(BubbleTheme, _BaseTheme);\n\t\n\t function BubbleTheme(quill, options) {\n\t _classCallCheck(this, BubbleTheme);\n\t\n\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t }\n\t\n\t var _this = _possibleConstructorReturn(this, (BubbleTheme.__proto__ || Object.getPrototypeOf(BubbleTheme)).call(this, quill, options));\n\t\n\t _this.quill.container.classList.add('ql-bubble');\n\t return _this;\n\t }\n\t\n\t _createClass(BubbleTheme, [{\n\t key: 'extendToolbar',\n\t value: function extendToolbar(toolbar) {\n\t this.tooltip = new BubbleTooltip(this.quill, this.options.bounds);\n\t this.tooltip.root.appendChild(toolbar.container);\n\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t }\n\t }]);\n\t\n\t return BubbleTheme;\n\t}(_base2.default);\n\t\n\tBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t link: function link(value) {\n\t if (!value) {\n\t this.quill.format('link', false);\n\t } else {\n\t this.quill.theme.tooltip.edit();\n\t }\n\t }\n\t }\n\t }\n\t }\n\t});\n\t\n\tvar BubbleTooltip = function (_BaseTooltip) {\n\t _inherits(BubbleTooltip, _BaseTooltip);\n\t\n\t function BubbleTooltip(quill, bounds) {\n\t _classCallCheck(this, BubbleTooltip);\n\t\n\t var _this2 = _possibleConstructorReturn(this, (BubbleTooltip.__proto__ || Object.getPrototypeOf(BubbleTooltip)).call(this, quill, bounds));\n\t\n\t _this2.quill.on(_emitter2.default.events.EDITOR_CHANGE, function (type, range) {\n\t if (type !== _emitter2.default.events.SELECTION_CHANGE) return;\n\t if (range != null && range.length > 0) {\n\t _this2.show();\n\t // Lock our width so we will expand beyond our offsetParent boundaries\n\t _this2.root.style.left = '0px';\n\t _this2.root.style.width = '';\n\t _this2.root.style.width = _this2.root.offsetWidth + 'px';\n\t var lines = _this2.quill.scroll.lines(range.index, range.length);\n\t if (lines.length === 1) {\n\t _this2.position(_this2.quill.getBounds(range));\n\t } else {\n\t var lastLine = lines[lines.length - 1];\n\t var index = lastLine.offset(_this2.quill.scroll);\n\t var length = Math.min(lastLine.length() - 1, range.index + range.length - index);\n\t var _bounds = _this2.quill.getBounds(new _selection.Range(index, length));\n\t _this2.position(_bounds);\n\t }\n\t } else if (document.activeElement !== _this2.textbox && _this2.quill.hasFocus()) {\n\t _this2.hide();\n\t }\n\t });\n\t return _this2;\n\t }\n\t\n\t _createClass(BubbleTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this3 = this;\n\t\n\t _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'listen', this).call(this);\n\t this.root.querySelector('.ql-close').addEventListener('click', function () {\n\t _this3.root.classList.remove('ql-editing');\n\t });\n\t this.quill.on(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t // Let selection be restored by toolbar handlers before repositioning\n\t setTimeout(function () {\n\t if (_this3.root.classList.contains('ql-hidden')) return;\n\t var range = _this3.quill.getSelection();\n\t if (range != null) {\n\t _this3.position(_this3.quill.getBounds(range));\n\t }\n\t }, 1);\n\t });\n\t }\n\t }, {\n\t key: 'cancel',\n\t value: function cancel() {\n\t this.show();\n\t }\n\t }, {\n\t key: 'position',\n\t value: function position(reference) {\n\t var shift = _get(BubbleTooltip.prototype.__proto__ || Object.getPrototypeOf(BubbleTooltip.prototype), 'position', this).call(this, reference);\n\t var arrow = this.root.querySelector('.ql-tooltip-arrow');\n\t arrow.style.marginLeft = '';\n\t if (shift === 0) return shift;\n\t arrow.style.marginLeft = -1 * shift - arrow.offsetWidth / 2 + 'px';\n\t }\n\t }]);\n\t\n\t return BubbleTooltip;\n\t}(_base.BaseTooltip);\n\t\n\tBubbleTooltip.TEMPLATE = ['<span class=\"ql-tooltip-arrow\"></span>', '<div class=\"ql-tooltip-editor\">', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-close\"></a>', '</div>'].join('');\n\t\n\texports.BubbleTooltip = BubbleTooltip;\n\texports.default = BubbleTheme;\n\n/***/ },\n/* 107 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\texports.default = exports.BaseTooltip = undefined;\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _quillDelta = __webpack_require__(20);\n\t\n\tvar _quillDelta2 = _interopRequireDefault(_quillDelta);\n\t\n\tvar _emitter = __webpack_require__(35);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _keyboard = __webpack_require__(52);\n\t\n\tvar _keyboard2 = _interopRequireDefault(_keyboard);\n\t\n\tvar _theme = __webpack_require__(41);\n\t\n\tvar _theme2 = _interopRequireDefault(_theme);\n\t\n\tvar _colorPicker = __webpack_require__(103);\n\t\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\tvar _iconPicker = __webpack_require__(104);\n\t\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\tvar _picker = __webpack_require__(101);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _tooltip = __webpack_require__(105);\n\t\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar ALIGNS = [false, 'center', 'right', 'justify'];\n\t\n\tvar 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\t\n\tvar FONTS = [false, 'serif', 'monospace'];\n\t\n\tvar HEADERS = ['1', '2', '3', false];\n\t\n\tvar SIZES = ['small', false, 'large', 'huge'];\n\t\n\tvar BaseTheme = function (_Theme) {\n\t _inherits(BaseTheme, _Theme);\n\t\n\t function BaseTheme(quill, options) {\n\t _classCallCheck(this, BaseTheme);\n\t\n\t var _this = _possibleConstructorReturn(this, (BaseTheme.__proto__ || Object.getPrototypeOf(BaseTheme)).call(this, quill, options));\n\t\n\t var listener = function listener(e) {\n\t if (!document.body.contains(quill.root)) {\n\t return document.body.removeEventListener('click', listener);\n\t }\n\t if (_this.tooltip != null && !_this.tooltip.root.contains(e.target) && document.activeElement !== _this.tooltip.textbox && !_this.quill.hasFocus()) {\n\t _this.tooltip.hide();\n\t }\n\t if (_this.pickers != null) {\n\t _this.pickers.forEach(function (picker) {\n\t if (!picker.container.contains(e.target)) {\n\t picker.close();\n\t }\n\t });\n\t }\n\t };\n\t document.body.addEventListener('click', listener);\n\t return _this;\n\t }\n\t\n\t _createClass(BaseTheme, [{\n\t key: 'addModule',\n\t value: function addModule(name) {\n\t var module = _get(BaseTheme.prototype.__proto__ || Object.getPrototypeOf(BaseTheme.prototype), 'addModule', this).call(this, name);\n\t if (name === 'toolbar') {\n\t this.extendToolbar(module);\n\t }\n\t return module;\n\t }\n\t }, {\n\t key: 'buildButtons',\n\t value: function buildButtons(buttons, icons) {\n\t buttons.forEach(function (button) {\n\t var className = button.getAttribute('class') || '';\n\t className.split(/\\s+/).forEach(function (name) {\n\t if (!name.startsWith('ql-')) return;\n\t name = name.slice('ql-'.length);\n\t if (icons[name] == null) return;\n\t if (name === 'direction') {\n\t button.innerHTML = icons[name][''] + icons[name]['rtl'];\n\t } else if (typeof icons[name] === 'string') {\n\t button.innerHTML = icons[name];\n\t } else {\n\t var value = button.value || '';\n\t if (value != null && icons[name][value]) {\n\t button.innerHTML = icons[name][value];\n\t }\n\t }\n\t });\n\t });\n\t }\n\t }, {\n\t key: 'buildPickers',\n\t value: function buildPickers(selects, icons) {\n\t var _this2 = this;\n\t\n\t this.pickers = selects.map(function (select) {\n\t if (select.classList.contains('ql-align')) {\n\t if (select.querySelector('option') == null) {\n\t fillSelect(select, ALIGNS);\n\t }\n\t return new _iconPicker2.default(select, icons.align);\n\t } else if (select.classList.contains('ql-background') || select.classList.contains('ql-color')) {\n\t var format = select.classList.contains('ql-background') ? 'background' : 'color';\n\t if (select.querySelector('option') == null) {\n\t fillSelect(select, COLORS, format === 'background' ? '#ffffff' : '#000000');\n\t }\n\t return new _colorPicker2.default(select, icons[format]);\n\t } else {\n\t if (select.querySelector('option') == null) {\n\t if (select.classList.contains('ql-font')) {\n\t fillSelect(select, FONTS);\n\t } else if (select.classList.contains('ql-header')) {\n\t fillSelect(select, HEADERS);\n\t } else if (select.classList.contains('ql-size')) {\n\t fillSelect(select, SIZES);\n\t }\n\t }\n\t return new _picker2.default(select);\n\t }\n\t });\n\t var update = function update() {\n\t _this2.pickers.forEach(function (picker) {\n\t picker.update();\n\t });\n\t };\n\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, update).on(_emitter2.default.events.SCROLL_OPTIMIZE, update);\n\t }\n\t }]);\n\t\n\t return BaseTheme;\n\t}(_theme2.default);\n\t\n\tBaseTheme.DEFAULTS = (0, _extend2.default)(true, {}, _theme2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t formula: function formula() {\n\t this.quill.theme.tooltip.edit('formula');\n\t },\n\t image: function image() {\n\t var _this3 = this;\n\t\n\t var fileInput = this.container.querySelector('input.ql-image[type=file]');\n\t if (fileInput == null) {\n\t fileInput = document.createElement('input');\n\t fileInput.setAttribute('type', 'file');\n\t fileInput.setAttribute('accept', 'image/png, image/gif, image/jpeg, image/bmp, image/x-icon, image/svg+xml');\n\t fileInput.classList.add('ql-image');\n\t fileInput.addEventListener('change', function () {\n\t if (fileInput.files != null && fileInput.files[0] != null) {\n\t var reader = new FileReader();\n\t reader.onload = function (e) {\n\t var range = _this3.quill.getSelection(true);\n\t _this3.quill.updateContents(new _quillDelta2.default().retain(range.index).delete(range.length).insert({ image: e.target.result }), _emitter2.default.sources.USER);\n\t fileInput.value = \"\";\n\t };\n\t reader.readAsDataURL(fileInput.files[0]);\n\t }\n\t });\n\t this.container.appendChild(fileInput);\n\t }\n\t fileInput.click();\n\t },\n\t video: function video() {\n\t this.quill.theme.tooltip.edit('video');\n\t }\n\t }\n\t }\n\t }\n\t});\n\t\n\tvar BaseTooltip = function (_Tooltip) {\n\t _inherits(BaseTooltip, _Tooltip);\n\t\n\t function BaseTooltip(quill, boundsContainer) {\n\t _classCallCheck(this, BaseTooltip);\n\t\n\t var _this4 = _possibleConstructorReturn(this, (BaseTooltip.__proto__ || Object.getPrototypeOf(BaseTooltip)).call(this, quill, boundsContainer));\n\t\n\t _this4.textbox = _this4.root.querySelector('input[type=\"text\"]');\n\t _this4.listen();\n\t return _this4;\n\t }\n\t\n\t _createClass(BaseTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this5 = this;\n\t\n\t this.textbox.addEventListener('keydown', function (event) {\n\t if (_keyboard2.default.match(event, 'enter')) {\n\t _this5.save();\n\t event.preventDefault();\n\t } else if (_keyboard2.default.match(event, 'escape')) {\n\t _this5.cancel();\n\t event.preventDefault();\n\t }\n\t });\n\t }\n\t }, {\n\t key: 'cancel',\n\t value: function cancel() {\n\t this.hide();\n\t }\n\t }, {\n\t key: 'edit',\n\t value: function edit() {\n\t var mode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 'link';\n\t var preview = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\t\n\t this.root.classList.remove('ql-hidden');\n\t this.root.classList.add('ql-editing');\n\t if (preview != null) {\n\t this.textbox.value = preview;\n\t } else if (mode !== this.root.getAttribute('data-mode')) {\n\t this.textbox.value = '';\n\t }\n\t this.position(this.quill.getBounds(this.quill.selection.savedRange));\n\t this.textbox.select();\n\t this.textbox.setAttribute('placeholder', this.textbox.getAttribute('data-' + mode) || '');\n\t this.root.setAttribute('data-mode', mode);\n\t }\n\t }, {\n\t key: 'restoreFocus',\n\t value: function restoreFocus() {\n\t var scrollTop = this.quill.root.scrollTop;\n\t this.quill.focus();\n\t this.quill.root.scrollTop = scrollTop;\n\t }\n\t }, {\n\t key: 'save',\n\t value: function save() {\n\t var value = this.textbox.value;\n\t switch (this.root.getAttribute('data-mode')) {\n\t case 'link':\n\t {\n\t var scrollTop = this.quill.root.scrollTop;\n\t if (this.linkRange) {\n\t this.quill.formatText(this.linkRange, 'link', value, _emitter2.default.sources.USER);\n\t delete this.linkRange;\n\t } else {\n\t this.restoreFocus();\n\t this.quill.format('link', value, _emitter2.default.sources.USER);\n\t }\n\t this.quill.root.scrollTop = scrollTop;\n\t break;\n\t }\n\t case 'video':\n\t {\n\t 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\t if (match) {\n\t value = match[1] + '://www.youtube.com/embed/' + match[3] + '?showinfo=0';\n\t } else if (match = value.match(/^(https?):\\/\\/(www\\.)?vimeo\\.com\\/(\\d+)/)) {\n\t // eslint-disable-line no-cond-assign\n\t value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n\t }\n\t } // eslint-disable-next-line no-fallthrough\n\t case 'formula':\n\t {\n\t var range = this.quill.getSelection(true);\n\t var index = range.index + range.length;\n\t if (range != null) {\n\t this.quill.insertEmbed(index, this.root.getAttribute('data-mode'), value, _emitter2.default.sources.USER);\n\t if (this.root.getAttribute('data-mode') === 'formula') {\n\t this.quill.insertText(index + 1, ' ', _emitter2.default.sources.USER);\n\t }\n\t this.quill.setSelection(index + 2, _emitter2.default.sources.USER);\n\t }\n\t break;\n\t }\n\t default:\n\t }\n\t this.textbox.value = '';\n\t this.hide();\n\t }\n\t }]);\n\t\n\t return BaseTooltip;\n\t}(_tooltip2.default);\n\t\n\tfunction fillSelect(select, values) {\n\t var defaultValue = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n\t\n\t values.forEach(function (value) {\n\t var option = document.createElement('option');\n\t if (value === defaultValue) {\n\t option.setAttribute('selected', 'selected');\n\t } else {\n\t option.setAttribute('value', value);\n\t }\n\t select.appendChild(option);\n\t });\n\t}\n\t\n\texports.BaseTooltip = BaseTooltip;\n\texports.default = BaseTheme;\n\n/***/ },\n/* 108 */\n/***/ function(module, exports, __webpack_require__) {\n\n\t'use strict';\n\t\n\tObject.defineProperty(exports, \"__esModule\", {\n\t value: true\n\t});\n\t\n\tvar _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\t\n\tvar _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\t\n\tvar _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\t\n\tvar _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _emitter = __webpack_require__(35);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _base = __webpack_require__(107);\n\t\n\tvar _base2 = _interopRequireDefault(_base);\n\t\n\tvar _link = __webpack_require__(59);\n\t\n\tvar _link2 = _interopRequireDefault(_link);\n\t\n\tvar _selection = __webpack_require__(40);\n\t\n\tvar _icons = __webpack_require__(68);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\t\n\tfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\t\n\tfunction _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\t\n\tfunction _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\t\n\tvar TOOLBAR_CONFIG = [[{ header: ['1', '2', '3', false] }], ['bold', 'italic', 'underline', 'link'], [{ list: 'ordered' }, { list: 'bullet' }], ['clean']];\n\t\n\tvar SnowTheme = function (_BaseTheme) {\n\t _inherits(SnowTheme, _BaseTheme);\n\t\n\t function SnowTheme(quill, options) {\n\t _classCallCheck(this, SnowTheme);\n\t\n\t if (options.modules.toolbar != null && options.modules.toolbar.container == null) {\n\t options.modules.toolbar.container = TOOLBAR_CONFIG;\n\t }\n\t\n\t var _this = _possibleConstructorReturn(this, (SnowTheme.__proto__ || Object.getPrototypeOf(SnowTheme)).call(this, quill, options));\n\t\n\t _this.quill.container.classList.add('ql-snow');\n\t return _this;\n\t }\n\t\n\t _createClass(SnowTheme, [{\n\t key: 'extendToolbar',\n\t value: function extendToolbar(toolbar) {\n\t toolbar.container.classList.add('ql-snow');\n\t this.buildButtons([].slice.call(toolbar.container.querySelectorAll('button')), _icons2.default);\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')), _icons2.default);\n\t this.tooltip = new SnowTooltip(this.quill, this.options.bounds);\n\t if (toolbar.container.querySelector('.ql-link')) {\n\t this.quill.keyboard.addBinding({ key: 'K', shortKey: true }, function (range, context) {\n\t toolbar.handlers['link'].call(toolbar, !context.format.link);\n\t });\n\t }\n\t }\n\t }]);\n\t\n\t return SnowTheme;\n\t}(_base2.default);\n\t\n\tSnowTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base2.default.DEFAULTS, {\n\t modules: {\n\t toolbar: {\n\t handlers: {\n\t link: function link(value) {\n\t if (value) {\n\t var range = this.quill.getSelection();\n\t if (range == null || range.length == 0) return;\n\t var preview = this.quill.getText(range);\n\t if (/^\\S+@\\S+\\.\\S+$/.test(preview) && preview.indexOf('mailto:') !== 0) {\n\t preview = 'mailto:' + preview;\n\t }\n\t var tooltip = this.quill.theme.tooltip;\n\t tooltip.edit('link', preview);\n\t } else {\n\t this.quill.format('link', false);\n\t }\n\t }\n\t }\n\t }\n\t }\n\t});\n\t\n\tvar SnowTooltip = function (_BaseTooltip) {\n\t _inherits(SnowTooltip, _BaseTooltip);\n\t\n\t function SnowTooltip(quill, bounds) {\n\t _classCallCheck(this, SnowTooltip);\n\t\n\t var _this2 = _possibleConstructorReturn(this, (SnowTooltip.__proto__ || Object.getPrototypeOf(SnowTooltip)).call(this, quill, bounds));\n\t\n\t _this2.preview = _this2.root.querySelector('a.ql-preview');\n\t return _this2;\n\t }\n\t\n\t _createClass(SnowTooltip, [{\n\t key: 'listen',\n\t value: function listen() {\n\t var _this3 = this;\n\t\n\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'listen', this).call(this);\n\t this.root.querySelector('a.ql-action').addEventListener('click', function (event) {\n\t if (_this3.root.classList.contains('ql-editing')) {\n\t _this3.save();\n\t } else {\n\t _this3.edit('link', _this3.preview.textContent);\n\t }\n\t event.preventDefault();\n\t });\n\t this.root.querySelector('a.ql-remove').addEventListener('click', function (event) {\n\t if (_this3.linkRange != null) {\n\t _this3.restoreFocus();\n\t _this3.quill.formatText(_this3.linkRange, 'link', false, _emitter2.default.sources.USER);\n\t delete _this3.linkRange;\n\t }\n\t event.preventDefault();\n\t _this3.hide();\n\t });\n\t this.quill.on(_emitter2.default.events.SELECTION_CHANGE, function (range) {\n\t if (range == null) return;\n\t if (range.length === 0) {\n\t var _quill$scroll$descend = _this3.quill.scroll.descendant(_link2.default, range.index),\n\t _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2),\n\t link = _quill$scroll$descend2[0],\n\t offset = _quill$scroll$descend2[1];\n\t\n\t if (link != null) {\n\t _this3.linkRange = new _selection.Range(range.index - offset, link.length());\n\t var preview = _link2.default.formats(link.domNode);\n\t _this3.preview.textContent = preview;\n\t _this3.preview.setAttribute('href', preview);\n\t _this3.show();\n\t _this3.position(_this3.quill.getBounds(_this3.linkRange));\n\t return;\n\t }\n\t } else {\n\t delete _this3.linkRange;\n\t }\n\t _this3.hide();\n\t });\n\t }\n\t }, {\n\t key: 'show',\n\t value: function show() {\n\t _get(SnowTooltip.prototype.__proto__ || Object.getPrototypeOf(SnowTooltip.prototype), 'show', this).call(this);\n\t this.root.removeAttribute('data-mode');\n\t }\n\t }]);\n\t\n\t return SnowTooltip;\n\t}(_base.BaseTooltip);\n\t\n\tSnowTooltip.TEMPLATE = ['<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>', '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">', '<a class=\"ql-action\"></a>', '<a class=\"ql-remove\"></a>'].join('');\n\t\n\texports.default = SnowTheme;\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\texports: {},\n \t\t\tid: moduleId,\n \t\t\tloaded: false\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.loaded = 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// __webpack_public_path__\n \t__webpack_require__.p = \"\";\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(0);\n\n\n\n// WEBPACK FOOTER //\n// webpack/bootstrap 2e76604d056f0a20b2cd","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","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","\"use strict\";\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};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Parchment;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/parchment.ts\n// module id = 2\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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.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 if (node.parentNode != null &&\n (document.body.compareDocumentPosition(node) & Node.DOCUMENT_POSITION_CONTAINED_BY)) {\n // Node has not actually been removed\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}\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ContainerBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/container.ts\n// module id = 3\n// module chunks = 0","\"use strict\";\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_1 = cur.length();\n if (index < length_1 || (inclusive && index === length_1 && (cur.next == null || cur.next.length() !== 0))) {\n return [cur, index];\n }\n index -= length_1;\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}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LinkedList;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/collection/linked-list.ts\n// module id = 4\n// module chunks = 0","\"use strict\";\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_1 = Registry.create(this.statics.scope);\n blot.wrap(parent_1);\n parent_1.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';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ShadowBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/shadow.ts\n// module id = 5\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar ParchmentError = (function (_super) {\n __extends(ParchmentError, _super);\n function ParchmentError(message) {\n var _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 = 6\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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.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));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = FormatBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/format.ts\n// module id = 7\n// module chunks = 0","\"use strict\";\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}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = Attributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/attributor.ts\n// module id = 8\n// module chunks = 0","\"use strict\";\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}());\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = AttributorStore;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/store.ts\n// module id = 9\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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.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));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ClassAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/class.ts\n// module id = 10\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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.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));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = StyleAttributor;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/attributor/style.ts\n// module id = 11\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar shadow_1 = require(\"./shadow\");\nvar Registry = require(\"../../registry\");\nvar LeafBlot = (function (_super) {\n __extends(LeafBlot, _super);\n function LeafBlot() {\n return _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;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = LeafBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/abstract/leaf.ts\n// module id = 12\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = ScrollBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/scroll.ts\n// module id = 13\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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.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';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = InlineBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/inline.ts\n// module id = 14\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar format_1 = require(\"./abstract/format\");\nvar Registry = require(\"../registry\");\nvar BlockBlot = (function (_super) {\n __extends(BlockBlot, _super);\n function BlockBlot() {\n return _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 return BlockBlot;\n}(format_1.default));\nBlockBlot.blotName = 'block';\nBlockBlot.scope = Registry.Scope.BLOCK_BLOT;\nBlockBlot.tagName = 'P';\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = BlockBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/block.ts\n// module id = 15\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\nvar leaf_1 = require(\"./abstract/leaf\");\nvar EmbedBlot = (function (_super) {\n __extends(EmbedBlot, _super);\n function EmbedBlot() {\n return _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));\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = EmbedBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/embed.ts\n// module id = 16\n// module chunks = 0","\"use strict\";\nvar __extends = (this && this.__extends) || function (d, b) {\n for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p];\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n};\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;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = TextBlot;\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/parchment/src/blot/text.ts\n// module id = 17\n// module chunks = 0","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 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 }\n }\n }\n\n constructor(container, options = {}) {\n this.options = expandConfig(container, options);\n this.container = this.options.container;\n this.scrollingContainer = this.options.scrollingContainer || document.body;\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.root = this.addContainer('ql-editor');\n this.root.classList.add('ql-blank');\n this.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\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(`<div class='ql-editor' style=\"white-space: normal;\">${html}<p><br></p></div>`);\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 if (!enabled) {\n this.blur();\n }\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 if (typeof index === 'number') {\n return this.selection.getBounds(index, length);\n } else {\n return this.selection.getBounds(index.index, index.length);\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 getLength() {\n return this.scroll.length();\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 this.selection.scrollIntoView();\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 && source === Emitter.sources.USER) {\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","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","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 = (ops === other.ops) ? '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 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 predicate(line, iter.next(1).attributes || {});\n line = new Delta();\n }\n }\n if (line.length() > 0) {\n predicate(line, {});\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 = 20\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.<string>} 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.<string>} 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: A<ins>BA</ins>C -> <ins>AB</ins>AC\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 = 21\n// module chunks = 0","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 = 22\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 = 23\n// module chunks = 0","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 = 24\n// module chunks = 0","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) {/**/}\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0],\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./~/extend/index.js\n// module id = 25\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 = 26\n// module chunks = 0","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 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","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 extend from 'extend';\nimport Delta from 'quill-delta';\nimport Parchment from 'parchment';\nimport Break from './break';\nimport Embed from './embed';\nimport Inline from './inline';\nimport TextBlot from './text';\n\n\nconst NEWLINE_LENGTH = 1;\n\n\nclass BlockEmbed extends Embed {\n attach() {\n super.attach();\n this.attributes = new Parchment.Attributor.Store(this.domNode);\n }\n\n delta() {\n return new Delta().insert(this.value(), extend(this.formats(), this.attributes.values()));\n }\n\n format(name, value) {\n let attribute = Parchment.query(name, Parchment.Scope.BLOCK_ATTRIBUTE);\n if (attribute != null) {\n this.attributes.attribute(attribute, value);\n }\n }\n\n formatAt(index, length, name, value) {\n this.format(name, value);\n }\n\n insertAt(index, value, def) {\n if (typeof value === 'string' && value.endsWith('\\n')) {\n let block = Parchment.create(Block.blotName);\n this.parent.insertBefore(block, index === 0 ? this : this.next);\n block.insertAt(0, value.slice(0, -1));\n } else {\n super.insertAt(index, value, def);\n }\n }\n}\nBlockEmbed.scope = Parchment.Scope.BLOCK_BLOT;\n// It is important for cursor behavior BlockEmbeds use tags that are block level elements\n\n\nclass Block extends Parchment.Block {\n constructor(domNode) {\n super(domNode);\n this.cache = {};\n }\n\n delta() {\n if (this.cache.delta == null) {\n this.cache.delta = this.descendants(Parchment.Leaf).reduce((delta, leaf) => {\n if (leaf.length() === 0) {\n return delta;\n } else {\n return delta.insert(leaf.value(), bubbleFormats(leaf));\n }\n }, new Delta()).insert('\\n', bubbleFormats(this));\n }\n return this.cache.delta;\n }\n\n deleteAt(index, length) {\n super.deleteAt(index, length);\n this.cache = {};\n }\n\n formatAt(index, length, name, value) {\n if (length <= 0) return;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n if (index + length === this.length()) {\n this.format(name, value);\n }\n } else {\n super.formatAt(index, Math.min(length, this.length() - index - 1), name, value);\n }\n this.cache = {};\n }\n\n insertAt(index, value, def) {\n if (def != null) return super.insertAt(index, value, def);\n if (value.length === 0) return;\n let lines = value.split('\\n');\n let text = lines.shift();\n if (text.length > 0) {\n if (index < this.length() - 1 || this.children.tail == null) {\n super.insertAt(Math.min(index, this.length() - 1), text);\n } else {\n this.children.tail.insertAt(this.children.tail.length(), text);\n }\n this.cache = {};\n }\n let block = this;\n lines.reduce(function(index, line) {\n block = block.split(index, true);\n block.insertAt(0, line);\n return line.length;\n }, index + text.length);\n }\n\n insertBefore(blot, ref) {\n let head = this.children.head;\n super.insertBefore(blot, ref);\n if (head instanceof Break) {\n head.remove();\n }\n this.cache = {};\n }\n\n length() {\n if (this.cache.length == null) {\n this.cache.length = super.length() + NEWLINE_LENGTH;\n }\n return this.cache.length;\n }\n\n moveChildren(target, ref) {\n super.moveChildren(target, ref);\n this.cache = {};\n }\n\n optimize() {\n super.optimize();\n this.cache = {};\n }\n\n path(index) {\n return super.path(index, true);\n }\n\n removeChild(child) {\n super.removeChild(child);\n this.cache = {};\n }\n\n split(index, force = false) {\n if (force && (index === 0 || index >= this.length() - NEWLINE_LENGTH)) {\n let clone = this.clone();\n if (index === 0) {\n this.parent.insertBefore(clone, this);\n return this;\n } else {\n this.parent.insertBefore(clone, this.next);\n return clone;\n }\n } else {\n let next = super.split(index, force);\n this.cache = {};\n return next;\n }\n }\n}\nBlock.blotName = 'block';\nBlock.tagName = 'P';\nBlock.defaultChild = 'break';\nBlock.allowedChildren = [Inline, Embed, TextBlot];\n\n\nfunction bubbleFormats(blot, formats = {}) {\n if (blot == null) return formats;\n if (typeof blot.formats === 'function') {\n formats = extend(formats, blot.formats());\n }\n if (blot.parent == null || blot.parent.blotName == 'scroll' || blot.parent.statics.scope !== blot.statics.scope) {\n return formats;\n }\n return bubbleFormats(blot.parent, formats);\n}\n\n\nexport { bubbleFormats, BlockEmbed, Block as default };\n\n\n\n// WEBPACK FOOTER //\n// ./blots/block.js","import Embed from './embed';\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';\n\nclass Embed extends Parchment.Embed { }\n\nexport default Embed;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/embed.js","import Embed from './embed';\nimport Text from './text';\nimport Parchment from 'parchment';\n\n\nclass Inline extends Parchment.Inline {\n static compare(self, other) {\n let selfIndex = Inline.order.indexOf(self);\n let otherIndex = Inline.order.indexOf(other);\n if (selfIndex >= 0 || otherIndex >= 0) {\n return selfIndex - otherIndex;\n } else if (self === other) {\n return 0;\n } else if (self < other) {\n return -1;\n } else {\n return 1;\n }\n }\n\n formatAt(index, length, name, value) {\n if (Inline.compare(this.statics.blotName, name) < 0 && Parchment.query(name, Parchment.Scope.BLOT)) {\n let blot = this.isolate(index, length);\n if (value) {\n blot.wrap(name, value);\n }\n } else {\n super.formatAt(index, length, name, value);\n }\n }\n\n optimize() {\n super.optimize();\n if (this.parent instanceof Inline &&\n Inline.compare(this.statics.blotName, this.parent.statics.blotName) > 0) {\n let parent = this.parent.isolate(this.offset(), this.length());\n this.moveChildren(parent);\n parent.wrap(this);\n }\n }\n}\nInline.allowedChildren = [Inline, Embed, Text];\n// Lower index means deeper in the DOM tree, since not found (-1) is for embeds\nInline.order = [\n 'cursor', 'inline', // Must be lower\n 'code', 'underline', 'strike', 'italic', 'bold', 'script',\n 'link' // Must be higher\n];\n\n\nexport default Inline;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/inline.js","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n\n\n\n// WEBPACK FOOTER //\n// ./blots/text.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","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","'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 = 36\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","var clone = (function() {\n'use strict';\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 (parent instanceof nativeMap) {\n child = new nativeMap();\n } else if (parent instanceof nativeSet) {\n child = new nativeSet();\n } else if (parent instanceof 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 (parent instanceof 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 (parent instanceof nativeMap) {\n var keyIterator = parent.keys();\n while(true) {\n var next = keyIterator.next();\n if (next.done) {\n break;\n }\n var keyChild = _clone(next.value, depth - 1);\n var valueChild = _clone(parent.get(next.value), depth - 1);\n child.set(keyChild, valueChild);\n }\n }\n if (parent instanceof nativeSet) {\n var iterator = parent.keys();\n while(true) {\n var next = iterator.next();\n if (next.done) {\n break;\n }\n var entryChild = _clone(next.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 = 38\n// module chunks = 0","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 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 bounds, 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 bounds = 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 bounds = {\n height: rect.height,\n left: rect[side],\n width: 0,\n top: rect.top\n };\n }\n let containerBounds = this.root.parentNode.getBoundingClientRect();\n return {\n left: bounds.left - containerBounds.left,\n right: bounds.left + bounds.width - containerBounds.left,\n top: bounds.top - containerBounds.top,\n bottom: bounds.top + bounds.height - containerBounds.top,\n height: bounds.height,\n width: bounds.width\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 if (this.root.offsetHeight < bounds.bottom) {\n let [line, ] = this.scroll.line(Math.min(range.index + range.length, this.scroll.length()-1));\n this.root.scrollTop = line.domNode.offsetTop + line.domNode.offsetHeight - this.root.offsetHeight;\n } else if (bounds.top < 0) {\n let [line, ] = this.scroll.line(Math.min(range.index, this.scroll.length()-1));\n this.root.scrollTop = line.domNode.offsetTop;\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 || startOffset !== native.startOffset ||\n endNode !== native.endContainer || endOffset !== native.endOffset) {\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 nativeRange, oldRange = this.lastRange;\n [this.lastRange, nativeRange] = this.getRange();\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","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 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 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 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 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);\n }\n if (STYLE_ATTRIBUTORS[name] != null) {\n attr = STYLE_ATTRIBUTORS[name];\n formats[attr.attrName] = attr.value(node);\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 <o:p> </o:p>\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';\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 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","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 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 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 (!!binding.shortKey !== evt[SHORTKEY] && binding.shortKey !== null) return false;\n if (['altKey', 'ctrlKey', 'metaKey', 'shiftKey'].some(function(key) {\n return (key != SHORTKEY && !!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 (/Gecko/i.test(navigator.userAgent)) {\n // Need to handle delete and backspace for Firefox in the general case #1171\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true }, handleDelete);\n } else {\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^.?$/ }, handleDelete);\n }\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDeleteRange);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDeleteRange);\n if (/Trident/i.test(navigator.userAgent)) {\n this.addBinding({ key: Keyboard.keys.BACKSPACE, shortKey: true }, handleBackspace);\n this.addBinding({ key: Keyboard.keys.DELETE, shortKey: true }, handleDelete);\n }\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.scroll.line(range.index);\n let [leafStart, offsetStart] = this.quill.scroll.leaf(range.index);\n let [leafEnd, offsetEnd] = range.length === 0 ? [leafStart, offsetStart] : this.quill.scroll.leaf(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.scroll.line(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: /^(1\\.|-)$/,\n handler: function(range, context) {\n let length = context.prefix.length;\n this.quill.scroll.deleteAt(range.index - length, length);\n this.quill.formatLine(range.index - length, 1, 'list', length === 1 ? 'bullet' : 'ordered', Quill.sources.USER);\n this.quill.setSelection(range.index - length, Quill.sources.SILENT);\n }\n }\n }\n};\n\n\nfunction handleBackspace(range, context) {\n if (range.index === 0) return;\n let [line, ] = this.quill.scroll.line(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 this.quill.deleteText(range.index-1, 1, Quill.sources.USER);\n if (Object.keys(formats).length > 0) {\n this.quill.formatLine(range.index-1, 1, formats, Quill.sources.USER);\n }\n this.quill.selection.scrollIntoView();\n}\n\nfunction handleDelete(range) {\n if (range.index >= this.quill.getLength() - 1) return;\n this.quill.deleteText(range.index, 1, 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 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 scrollOffset = this.quill.scroll.offset(block);\n let start = block.newlineIndex(offset, true) + 1;\n let end = block.newlineIndex(scrollOffset + 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 return binding;\n}\n\n\nexport default Keyboard;\n\n\n\n// WEBPACK FOOTER //\n// ./modules/keyboard.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 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 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 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 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 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 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 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 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 { 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';\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\nfunction Formula() {\n if (window.katex == null) {\n throw new Error('Formula module requires KaTeX.');\n }\n Quill.register(FormulaBlot, true);\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 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 Quill.register(CodeToken, true);\n Quill.register(SyntaxCodeBlock, true);\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 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 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 }\n}\n\n\nexport { Toolbar as default, addControls };\n\n\n\n// WEBPACK FOOTER //\n// ./modules/toolbar.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 'unchecked' : 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","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=13 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=9 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-left.svg\n// module id = 69\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=14 x2=4 y1=14 y2=14></line> <line class=ql-stroke x1=12 x2=6 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-center.svg\n// module id = 70\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=5 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=9 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-right.svg\n// module id = 71\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=15 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=15 x2=3 y1=14 y2=14></line> <line class=ql-stroke x1=15 x2=3 y1=4 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/align-justify.svg\n// module id = 72\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <g class=\\\"ql-fill ql-color-label\\\"> <polygon points=\\\"6 6.868 6 6 5 6 5 7 5.942 7 6 6.868\\\"></polygon> <rect height=1 width=1 x=4 y=4></rect> <polygon points=\\\"6.817 5 6 5 6 6 6.38 6 6.817 5\\\"></polygon> <rect height=1 width=1 x=2 y=6></rect> <rect height=1 width=1 x=3 y=5></rect> <rect height=1 width=1 x=4 y=7></rect> <polygon points=\\\"4 11.439 4 11 3 11 3 12 3.755 12 4 11.439\\\"></polygon> <rect height=1 width=1 x=2 y=12></rect> <rect height=1 width=1 x=2 y=9></rect> <rect height=1 width=1 x=2 y=15></rect> <polygon points=\\\"4.63 10 4 10 4 11 4.192 11 4.63 10\\\"></polygon> <rect height=1 width=1 x=3 y=8></rect> <path d=M10.832,4.2L11,4.582V4H10.708A1.948,1.948,0,0,1,10.832,4.2Z></path> <path d=M7,4.582L7.168,4.2A1.929,1.929,0,0,1,7.292,4H7V4.582Z></path> <path d=M8,13H7.683l-0.351.8a1.933,1.933,0,0,1-.124.2H8V13Z></path> <rect height=1 width=1 x=12 y=2></rect> <rect height=1 width=1 x=11 y=3></rect> <path d=M9,3H8V3.282A1.985,1.985,0,0,1,9,3Z></path> <rect height=1 width=1 x=2 y=3></rect> <rect height=1 width=1 x=6 y=2></rect> <rect height=1 width=1 x=3 y=2></rect> <rect height=1 width=1 x=5 y=3></rect> <rect height=1 width=1 x=9 y=2></rect> <rect height=1 width=1 x=15 y=14></rect> <polygon points=\\\"13.447 10.174 13.469 10.225 13.472 10.232 13.808 11 14 11 14 10 13.37 10 13.447 10.174\\\"></polygon> <rect height=1 width=1 x=13 y=7></rect> <rect height=1 width=1 x=15 y=5></rect> <rect height=1 width=1 x=14 y=6></rect> <rect height=1 width=1 x=15 y=8></rect> <rect height=1 width=1 x=14 y=9></rect> <path d=M3.775,14H3v1H4V14.314A1.97,1.97,0,0,1,3.775,14Z></path> <rect height=1 width=1 x=14 y=3></rect> <polygon points=\\\"12 6.868 12 6 11.62 6 12 6.868\\\"></polygon> <rect height=1 width=1 x=15 y=2></rect> <rect height=1 width=1 x=12 y=5></rect> <rect height=1 width=1 x=13 y=4></rect> <polygon points=\\\"12.933 9 13 9 13 8 12.495 8 12.933 9\\\"></polygon> <rect height=1 width=1 x=9 y=14></rect> <rect height=1 width=1 x=8 y=15></rect> <path d=M6,14.926V15H7V14.316A1.993,1.993,0,0,1,6,14.926Z></path> <rect height=1 width=1 x=5 y=15></rect> <path d=M10.668,13.8L10.317,13H10v1h0.792A1.947,1.947,0,0,1,10.668,13.8Z></path> <rect height=1 width=1 x=11 y=15></rect> <path d=M14.332,12.2a1.99,1.99,0,0,1,.166.8H15V12H14.245Z></path> <rect height=1 width=1 x=14 y=15></rect> <rect height=1 width=1 x=15 y=11></rect> </g> <polyline class=ql-stroke points=\\\"5.5 13 9 5 12.5 13\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=11 y2=11></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/background.svg\n// module id = 73\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=4 y=5></rect> <rect class=\\\"ql-fill ql-stroke\\\" height=3 width=3 x=11 y=5></rect> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M7,8c0,4.031-3,5-3,5></path> <path class=\\\"ql-even ql-fill ql-stroke\\\" d=M14,8c0,4.031-3,5-3,5></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/blockquote.svg\n// module id = 74\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,4H9.5A2.5,2.5,0,0,1,12,6.5v0A2.5,2.5,0,0,1,9.5,9H5A0,0,0,0,1,5,9V4A0,0,0,0,1,5,4Z></path> <path class=ql-stroke d=M5,9h5.5A2.5,2.5,0,0,1,13,11.5v0A2.5,2.5,0,0,1,10.5,14H5a0,0,0,0,1,0,0V9A0,0,0,0,1,5,9Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/bold.svg\n// module id = 75\n// module chunks = 0","module.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=5 x2=13 y1=3 y2=3></line> <line class=ql-stroke x1=6 x2=9.35 y1=12 y2=3></line> <line class=ql-stroke x1=11 x2=15 y1=11 y2=15></line> <line class=ql-stroke x1=15 x2=11 y1=11 y2=15></line> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=7 x=2 y=14></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/clean.svg\n// module id = 76\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"5 7 3 9 5 11\\\"></polyline> <polyline class=\\\"ql-even ql-stroke\\\" points=\\\"13 7 15 9 13 11\\\"></polyline> <line class=ql-stroke x1=10 x2=8 y1=5 y2=13></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/code.svg\n// module id = 77\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-color-label ql-stroke ql-transparent\\\" x1=3 x2=15 y1=15 y2=15></line> <polyline class=ql-stroke points=\\\"5.5 11 9 3 12.5 11\\\"></polyline> <line class=ql-stroke x1=11.63 x2=6.38 y1=9 y2=9></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/color.svg\n// module id = 78\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"3 11 5 9 3 7 3 11\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=15 x2=11 y1=4 y2=4></line> <path class=ql-fill d=M11,3a3,3,0,0,0,0,6h1V3H11Z></path> <rect class=ql-fill height=11 width=1 x=11 y=4></rect> <rect class=ql-fill height=11 width=1 x=13 y=4></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-ltr.svg\n// module id = 79\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=\\\"ql-stroke ql-fill\\\" points=\\\"15 12 13 10 15 8 15 12\\\"></polygon> <line class=\\\"ql-stroke ql-fill\\\" x1=9 x2=5 y1=4 y2=4></line> <path class=ql-fill d=M5,3A3,3,0,0,0,5,9H6V3H5Z></path> <rect class=ql-fill height=11 width=1 x=5 y=4></rect> <rect class=ql-fill height=11 width=1 x=7 y=4></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/direction-rtl.svg\n// module id = 80\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M14,16H4a1,1,0,0,1,0-2H14A1,1,0,0,1,14,16Z /> <path class=ql-fill d=M14,4H4A1,1,0,0,1,4,2H14A1,1,0,0,1,14,4Z /> <rect class=ql-fill x=3 y=6 width=12 height=6 rx=1 ry=1 /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-center.svg\n// module id = 81\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M13,16H5a1,1,0,0,1,0-2h8A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H5A1,1,0,0,1,5,2h8A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=2 y=6 width=14 height=6 rx=1 ry=1 /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-full.svg\n// module id = 82\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15,8H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,8Z /> <path class=ql-fill d=M15,12H13a1,1,0,0,1,0-2h2A1,1,0,0,1,15,12Z /> <path class=ql-fill d=M15,16H5a1,1,0,0,1,0-2H15A1,1,0,0,1,15,16Z /> <path class=ql-fill d=M15,4H5A1,1,0,0,1,5,2H15A1,1,0,0,1,15,4Z /> <rect class=ql-fill x=2 y=6 width=8 height=6 rx=1 ry=1 /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-left.svg\n// module id = 83\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M5,8H3A1,1,0,0,1,3,6H5A1,1,0,0,1,5,8Z /> <path class=ql-fill d=M5,12H3a1,1,0,0,1,0-2H5A1,1,0,0,1,5,12Z /> <path class=ql-fill d=M13,16H3a1,1,0,0,1,0-2H13A1,1,0,0,1,13,16Z /> <path class=ql-fill d=M13,4H3A1,1,0,0,1,3,2H13A1,1,0,0,1,13,4Z /> <rect class=ql-fill x=8 y=6 width=8 height=6 rx=1 ry=1 transform=\\\"translate(24 18) rotate(-180)\\\"/> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/float-right.svg\n// module id = 84\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M11.759,2.482a2.561,2.561,0,0,0-3.53.607A7.656,7.656,0,0,0,6.8,6.2C6.109,9.188,5.275,14.677,4.15,14.927a1.545,1.545,0,0,0-1.3-.933A0.922,0.922,0,0,0,2,15.036S1.954,16,4.119,16s3.091-2.691,3.7-5.553c0.177-.826.36-1.726,0.554-2.6L8.775,6.2c0.381-1.421.807-2.521,1.306-2.676a1.014,1.014,0,0,0,1.02.56A0.966,0.966,0,0,0,11.759,2.482Z></path> <rect class=ql-fill height=1.6 rx=0.8 ry=0.8 width=5 x=5.15 y=6.2></rect> <path class=ql-fill d=M13.663,12.027a1.662,1.662,0,0,1,.266-0.276q0.193,0.069.456,0.138a2.1,2.1,0,0,0,.535.069,1.075,1.075,0,0,0,.767-0.3,1.044,1.044,0,0,0,.314-0.8,0.84,0.84,0,0,0-.238-0.619,0.8,0.8,0,0,0-.594-0.239,1.154,1.154,0,0,0-.781.3,4.607,4.607,0,0,0-.781,1q-0.091.15-.218,0.346l-0.246.38c-0.068-.288-0.137-0.582-0.212-0.885-0.459-1.847-2.494-.984-2.941-0.8-0.482.2-.353,0.647-0.094,0.529a0.869,0.869,0,0,1,1.281.585c0.217,0.751.377,1.436,0.527,2.038a5.688,5.688,0,0,1-.362.467,2.69,2.69,0,0,1-.264.271q-0.221-.08-0.471-0.147a2.029,2.029,0,0,0-.522-0.066,1.079,1.079,0,0,0-.768.3A1.058,1.058,0,0,0,9,15.131a0.82,0.82,0,0,0,.832.852,1.134,1.134,0,0,0,.787-0.3,5.11,5.11,0,0,0,.776-0.993q0.141-.219.215-0.34c0.046-.076.122-0.194,0.223-0.346a2.786,2.786,0,0,0,.918,1.726,2.582,2.582,0,0,0,2.376-.185c0.317-.181.212-0.565,0-0.494A0.807,0.807,0,0,1,14.176,15a5.159,5.159,0,0,1-.913-2.446l0,0Q13.487,12.24,13.663,12.027Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/formula.svg\n// module id = 85\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <line class=\\\"ql-stroke ql-thin\\\" x1=13.5 x2=15.5 y1=14.5 y2=14.5></line> <path class=ql-fill d=M14.5,15a0.5,0.5,0,0,1-.5-0.5V12.085l-0.276.138A0.5,0.5,0,0,1,13.053,12c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,15,11.5v3A0.5,0.5,0,0,1,14.5,15Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header.svg\n// module id = 86\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=3 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=11 y1=4 y2=14></line> <line class=ql-stroke x1=11 x2=3 y1=9 y2=9></line> <path class=\\\"ql-stroke ql-thin\\\" d=M15.5,14.5h-2c0-.234,1.85-1.076,1.85-2.234a0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/header-2.svg\n// module id = 87\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=13 y1=4 y2=4></line> <line class=ql-stroke x1=5 x2=11 y1=14 y2=14></line> <line class=ql-stroke x1=8 x2=10 y1=14 y2=4></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/italic.svg\n// module id = 88\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=10 width=12 x=3 y=4></rect> <circle class=ql-fill cx=6 cy=7 r=1></circle> <polyline class=\\\"ql-even ql-fill\\\" points=\\\"5 12 5 11 7 9 8 10 11 7 13 9 13 12 5 12\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/image.svg\n// module id = 89\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=\\\"ql-fill ql-stroke\\\" points=\\\"3 7 3 11 5 9 3 7\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/indent.svg\n// module id = 90\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=3 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"5 7 5 11 3 9 5 7\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/outdent.svg\n// module id = 91\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=11 y1=7 y2=11></line> <path class=\\\"ql-even ql-stroke\\\" d=M8.9,4.577a3.476,3.476,0,0,1,.36,4.679A3.476,3.476,0,0,1,4.577,8.9C3.185,7.5,2.035,6.4,4.217,4.217S7.5,3.185,8.9,4.577Z></path> <path class=\\\"ql-even ql-stroke\\\" d=M13.423,9.1a3.476,3.476,0,0,0-4.679-.36,3.476,3.476,0,0,0,.36,4.679c1.392,1.392,2.5,2.542,4.679.36S14.815,10.5,13.423,9.1Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/link.svg\n// module id = 92\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=7 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=7 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=7 x2=15 y1=14 y2=14></line> <line class=\\\"ql-stroke ql-thin\\\" x1=2.5 x2=4.5 y1=5.5 y2=5.5></line> <path class=ql-fill d=M3.5,6A0.5,0.5,0,0,1,3,5.5V3.085l-0.276.138A0.5,0.5,0,0,1,2.053,3c-0.124-.247-0.023-0.324.224-0.447l1-.5A0.5,0.5,0,0,1,4,2.5v3A0.5,0.5,0,0,1,3.5,6Z></path> <path class=\\\"ql-stroke ql-thin\\\" d=M4.5,10.5h-2c0-.234,1.85-1.076,1.85-2.234A0.959,0.959,0,0,0,2.5,8.156></path> <path class=\\\"ql-stroke ql-thin\\\" d=M2.5,14.846a0.959,0.959,0,0,0,1.85-.109A0.7,0.7,0,0,0,3.75,14a0.688,0.688,0,0,0,.6-0.736,0.959,0.959,0,0,0-1.85-.109></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-ordered.svg\n// module id = 93\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=6 x2=15 y1=4 y2=4></line> <line class=ql-stroke x1=6 x2=15 y1=9 y2=9></line> <line class=ql-stroke x1=6 x2=15 y1=14 y2=14></line> <line class=ql-stroke x1=3 x2=3 y1=4 y2=4></line> <line class=ql-stroke x1=3 x2=3 y1=9 y2=9></line> <line class=ql-stroke x1=3 x2=3 y1=14 y2=14></line> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-bullet.svg\n// module id = 94\n// module chunks = 0","module.exports = \"<svg class=\\\"\\\" viewbox=\\\"0 0 18 18\\\"> <line class=ql-stroke x1=9 x2=15 y1=4 y2=4></line> <polyline class=ql-stroke points=\\\"3 4 4 5 6 3\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=14 y2=14></line> <polyline class=ql-stroke points=\\\"3 14 4 15 6 13\\\"></polyline> <line class=ql-stroke x1=9 x2=15 y1=9 y2=9></line> <polyline class=ql-stroke points=\\\"3 9 4 10 6 8\\\"></polyline> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/list-check.svg\n// module id = 95\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,15H13.861a3.858,3.858,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.921,1.921,0,0,0,12.021,11.7a0.50013,0.50013,0,1,0,.957.291h0a0.914,0.914,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.076-1.16971,1.86982-1.93971,2.43082A1.45639,1.45639,0,0,0,12,15.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,15Z /> <path class=ql-fill d=M9.65,5.241a1,1,0,0,0-1.409.108L6,7.964,3.759,5.349A1,1,0,0,0,2.192,6.59178Q2.21541,6.6213,2.241,6.649L4.684,9.5,2.241,12.35A1,1,0,0,0,3.71,13.70722q0.02557-.02768.049-0.05722L6,11.036,8.241,13.65a1,1,0,1,0,1.567-1.24277Q9.78459,12.3777,9.759,12.35L7.316,9.5,9.759,6.651A1,1,0,0,0,9.65,5.241Z /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/subscript.svg\n// module id = 96\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-fill d=M15.5,7H13.861a4.015,4.015,0,0,0,1.914-2.975,1.8,1.8,0,0,0-1.6-1.751A1.922,1.922,0,0,0,12.021,3.7a0.5,0.5,0,1,0,.957.291,0.917,0.917,0,0,1,1.053-.725,0.81,0.81,0,0,1,.744.762c0,1.077-1.164,1.925-1.934,2.486A1.423,1.423,0,0,0,12,7.5a0.5,0.5,0,0,0,.5.5h3A0.5,0.5,0,0,0,15.5,7Z /> <path class=ql-fill d=M9.651,5.241a1,1,0,0,0-1.41.108L6,7.964,3.759,5.349a1,1,0,1,0-1.519,1.3L4.683,9.5,2.241,12.35a1,1,0,1,0,1.519,1.3L6,11.036,8.241,13.65a1,1,0,0,0,1.519-1.3L7.317,9.5,9.759,6.651A1,1,0,0,0,9.651,5.241Z /> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/superscript.svg\n// module id = 97\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <line class=\\\"ql-stroke ql-thin\\\" x1=15.5 x2=2.5 y1=8.5 y2=9.5></line> <path class=ql-fill d=M9.007,8C6.542,7.791,6,7.519,6,6.5,6,5.792,7.283,5,9,5c1.571,0,2.765.679,2.969,1.309a1,1,0,0,0,1.9-.617C13.356,4.106,11.354,3,9,3,6.2,3,4,4.538,4,6.5a3.2,3.2,0,0,0,.5,1.843Z></path> <path class=ql-fill d=M8.984,10C11.457,10.208,12,10.479,12,11.5c0,0.708-1.283,1.5-3,1.5-1.571,0-2.765-.679-2.969-1.309a1,1,0,1,0-1.9.617C4.644,13.894,6.646,15,9,15c2.8,0,5-1.538,5-3.5a3.2,3.2,0,0,0-.5-1.843Z></path> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/strike.svg\n// module id = 98\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <path class=ql-stroke d=M5,3V9a4.012,4.012,0,0,0,4,4H9a4.012,4.012,0,0,0,4-4V3></path> <rect class=ql-fill height=1 rx=0.5 ry=0.5 width=12 x=3 y=15></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/underline.svg\n// module id = 99\n// module chunks = 0","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <rect class=ql-stroke height=12 width=12 x=3 y=3></rect> <rect class=ql-fill height=12 width=1 x=5 y=3></rect> <rect class=ql-fill height=12 width=1 x=12 y=3></rect> <rect class=ql-fill height=2 width=8 x=5 y=8></rect> <rect class=ql-fill height=1 width=3 x=3 y=5></rect> <rect class=ql-fill height=1 width=3 x=3 y=7></rect> <rect class=ql-fill height=1 width=3 x=3 y=10></rect> <rect class=ql-fill height=1 width=3 x=3 y=12></rect> <rect class=ql-fill height=1 width=3 x=12 y=5></rect> <rect class=ql-fill height=1 width=3 x=12 y=7></rect> <rect class=ql-fill height=1 width=3 x=12 y=10></rect> <rect class=ql-fill height=1 width=3 x=12 y=12></rect> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/video.svg\n// module id = 100\n// module chunks = 0","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('click', () => {\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","module.exports = \"<svg viewbox=\\\"0 0 18 18\\\"> <polygon class=ql-stroke points=\\\"7 11 9 13 11 11 7 11\\\"></polygon> <polygon class=ql-stroke points=\\\"7 7 9 5 11 7 7 7\\\"></polygon> </svg>\";\n\n\n//////////////////\n// WEBPACK FOOTER\n// ./assets/icons/dropdown.svg\n// module id = 102\n// module chunks = 0","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 let offset = parseInt(window.getComputedStyle(this.root).marginTop);\n this.quill.root.addEventListener('scroll', () => {\n this.root.style.marginTop = (-1*this.quill.root.scrollTop) + offset + 'px';\n this.checkBounds();\n });\n this.hide();\n }\n\n checkBounds() {\n this.root.classList.toggle('ql-out-top', this.root.offsetTop <= 0);\n this.root.classList.remove('ql-out-bottom');\n this.root.classList.toggle('ql-out-bottom', this.root.offsetTop + this.root.offsetHeight >= this.quill.root.offsetHeight);\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 let top = reference.bottom + this.quill.root.scrollTop;\n this.root.style.left = left + 'px';\n this.root.style.top = top + 'px';\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 this.checkBounds();\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 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) => {\n if (type !== Emitter.events.SELECTION_CHANGE) return;\n if (range != null && range.length > 0) {\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.scroll.lines(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 = lastLine.offset(this.quill.scroll);\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 '<span class=\"ql-tooltip-arrow\"></span>',\n '<div class=\"ql-tooltip-editor\">',\n '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">',\n '<a class=\"ql-close\"></a>',\n '</div>'\n].join('');\n\n\nexport { BubbleTooltip, BubbleTheme as default };\n\n\n\n// WEBPACK FOOTER //\n// ./themes/bubble.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.root.scrollTop;\n this.quill.focus();\n this.quill.root.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 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","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 this.restoreFocus();\n this.quill.formatText(this.linkRange, '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) => {\n if (range == null) return;\n if (range.length === 0) {\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 '<a class=\"ql-preview\" target=\"_blank\" href=\"about:blank\"></a>',\n '<input type=\"text\" data-formula=\"e=mc^2\" data-link=\"quilljs.com\" data-video=\"Embed URL\">',\n '<a class=\"ql-action\"></a>',\n '<a class=\"ql-remove\"></a>'\n].join('');\n\n\nexport default SnowTheme;\n\n\n\n// WEBPACK FOOTER //\n// ./themes/snow.js"],"sourceRoot":""}