{"version":3,"sources":["webpack:///webpack/universalModuleDefinition","webpack:///quill.min.js","webpack:///webpack/bootstrap 2370d777e3c51e058c2e","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:///./~/rich-text/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:///./~/rich-text/lib/op.js","webpack:///./core/editor.js","webpack:///./core/emitter.js","webpack:///./~/eventemitter3/index.js","webpack:///./core/logger.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:///./~/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/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/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","filter","sort","a","compareDocumentPosition","Node","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","document","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","takeRecords","mark","markParent","remaining","previousSibling","grandChild","BLOCK_BLOT","isEqual","obj1","obj2","prop","InlineBlot","BlockBlot","EmbedBlot","TextBlot","text","createTextNode","data","splitText","_classCallCheck","instance","Constructor","TypeError","expandConfig","container","userConfig","_extend2","clipboard","keyboard","history","theme","Quill","DEFAULTS","_theme2","themeConfig","config","moduleNames","moduleConfig","moduleClass","debug","error","toolbar","querySelector","overload","source","_typeof","_emitter2","sources","API","shiftRange","range","start","end","_map","pos","transformPosition","USER","_map2","_slicedToArray","_map3","max","_map4","_selection","Range","Symbol","sliceIterator","_arr","_n","_d","_e","_s","done","_createClass","defineProperties","props","descriptor","writable","protoProps","staticProps","_delta","_delta2","_editor","_editor2","_emitter","_module","_module2","_selection2","_extend","_logger","_logger2","_theme","_this2","html","innerHTML","addContainer","emitter","scroll","editor","selection","addModule","init","pasteHTML","clear","readOnly","disable","placeholder","toggle","isBlank","on","events","TEXT_CHANGE","delta","limit","level","imports","overwrite","warn","startsWith","setRange","_overload","_overload2","getSelection","change","deleteText","setSelection","SILENT","enable","enabled","blur","focus","scrollIntoView","formatLine","formatText","_overload3","_overload4","_overload5","_overload6","getBounds","getLength","_overload7","_overload8","getContents","getFormat","getRange","_overload9","_overload10","getText","hasFocus","embed","insertEmbed","_overload11","_overload12","insertText","off","once","setContents","convert","paste","updateContents","retain","_overload13","_overload14","removeFormat","lastOp","ops","insert","applyDelta","_overload15","_overload16","bounds","body","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","delete","unshift","splice","chop","pop","Infinity","iter","hasNext","nextOp","compose","thisIter","otherIter","peekType","peekLength","thisOp","otherOp","strings","prep","diffResult","component","opLength","INSERT","DELETE","EQUAL","transform","priority","nextType","diff_main","text1","text2","DIFF_EQUAL","commonlength","diff_commonPrefix","commonprefix","substring","diff_commonSuffix","commonsuffix","diffs","diff_compute_","diff_cleanupMerge","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","isUndefinedOrNull","isBuffer","objEquiv","opts","isArguments","pSlice","deepEqual","ka","objectKeys","kb","actual","expected","Date","getTime","strict","shim","supported","object","unsupported","propertyIsEnumerable","supportsArgumentsClass","hasOwn","toStr","isPlainObject","hasOwnConstructor","hasIsPrototypeOf","src","copyIsArray","deep","Iterator","lib","keepNull","retOp","_defineProperty","combineFormats","combined","merged","normalizeDelta","_clone2","image","bullet","_op","_op2","_emitter3","_emitter4","_clone","_deepEqual","_deepEqual2","Editor","SCROLL_UPDATE","bind","getDelta","consumeNextNewline","scrollLength","batch","_scroll$line","line","_scroll$line2","bubbleFormats","_line$descendant","_line$descendant2","leaf","lines","lengthRemaining","lineLength","codeIndex","codeLength","newlineIndex","_this3","leaves","_path","formatsArr","blots","shift","_this4","_scroll$line3","_scroll$line4","suffix","contents","_this5","oldDelta","textBlot","oldValue","CONTENTS","oldText","newText","diffDelta","args","emit","EDITOR_CHANGE","_possibleConstructorReturn","self","ReferenceError","_inherits","subClass","superClass","setPrototypeOf","__proto__","_get","property","receiver","Function","desc","getOwnPropertyDescriptor","getPrototypeOf","getter","_eventemitter","_eventemitter2","Emitter","_EventEmitter","log","SCROLL_BEFORE_UPDATE","SCROLL_OPTIMIZE","SELECTION_CHANGE","EE","fn","context","EventEmitter","has","_events","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","newLevel","_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","lastChild","setNativeRange","restore","circular","depth","proto","__isArray","__isRegExp","RegExp","__getRegExpFlags","__isDate","useBuffer","Buffer","allParents","allChildren","attrs","set","__objToStr","o","re","flags","global","ignoreCase","multiline","clonePrototype","Module","quill","_toConsumableArray","arr2","from","Selection","cursor","lastRange","savedRange","eventName","setTimeout","native","ignored","bodyTop","scrollTop","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","matchAlias","matchAttributor","STYLE_ATTRIBUTORS","matchBlot","matchBreak","matchIgnore","matchNewline","matchSpacing","nextElementSibling","nodeHeight","parseFloat","marginTop","marginBottom","matchStyles","fontWeight","bold","textIndent","matchText","whiteSpace","replacer","collapse","CLIPBOARD_CONFIG","TEXT_NODE","Clipboard","_Module","onPaste","matchers","pair","addMatcher","selector","matcher","textMatchers","elementMatchers","_pair","traverse","childNode","childrenDelta","defaultPrevented","ColorAttributor","_Parchment$Attributor","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","handleDelete","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","BACKSPACE","listen","which","keyCode","_quill$scroll$line","_quill$scroll$line2","_quill$scroll$leaf","_quill$scroll$leaf2","leafStart","offsetStart","_ref","_ref2","leafEnd","offsetEnd","prefixText","suffixText","curContext","empty","prevented","every","preventDefault","ESCAPE","LEFT","UP","RIGHT","DOWN","italic","underline","outdent","outdent backspace","blockquote","indent code-block","outdent code-block","remove tab","tab","list empty enter","header enter","list autofill","IdentAttributor","Blockquote","Header","List","_Container","Bold","Italic","_Bold","sanitize","url","protocols","anchor","href","protocol","Link","SANITIZED_URL","Script","Strike","Underline","Image","hasAttribute","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","modifier","","center","justify","background","color","rtl","float","full","formula","header","1","2","+1","-1","ordered","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","_base","_base2","TOOLBAR_CONFIG","BubbleTheme","_BaseTheme","tooltip","BubbleTooltip","buildButtons","buildPickers","BaseTooltip","edit","_BaseTooltip","show","lastLine","textbox","arrow","marginLeft","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 **/","/*!\n * Quill Editor v1.0.2\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__(31);\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__(100);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _colorPicker = __webpack_require__(102);\n\t\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\tvar _iconPicker = __webpack_require__(103);\n\t\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\tvar _tooltip = __webpack_require__(104);\n\t\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\n\t\n\tvar _bubble = __webpack_require__(105);\n\t\n\tvar _bubble2 = _interopRequireDefault(_bubble);\n\t\n\tvar _snow = __webpack_require__(107);\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/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__(32);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _break = __webpack_require__(33);\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__(37);\n\t\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\tvar _embed = __webpack_require__(34);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _inline = __webpack_require__(35);\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__(36);\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 _super.apply(this, arguments);\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 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 - 0] = 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, refDomNode);\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 ShadowBlot.blotName = 'abstract';\n\t return ShadowBlot;\n\t}());\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 message = '[Parchment] ' + message;\n\t _super.call(this, message);\n\t this.message = message;\n\t this.name = this.constructor.name;\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\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})(exports.Scope || (exports.Scope = {}));\n\tvar 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 if (match = classes[names[i]])\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 - 0] = 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 _super.apply(this, arguments);\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 return node.getAttribute(this.keyName);\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 _super.apply(this, arguments);\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 return result.slice(this.keyName.length + 1); // +1 for hyphen\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 _super.apply(this, arguments);\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 return node.style[camelize(this.keyName)];\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 _super.apply(this, arguments);\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 LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n\t return LeafBlot;\n\t}(shadow_1.default));\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 = this;\n\t _super.call(this, node);\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 }\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 mutations.push.apply(mutations, this.observer.takeRecords());\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 = this.observer.takeRecords();\n\t mutations.push.apply(mutations, remaining);\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)\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 ScrollBlot.blotName = 'scroll';\n\t ScrollBlot.defaultChild = 'block';\n\t ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n\t ScrollBlot.tagName = 'DIV';\n\t return ScrollBlot;\n\t}(container_1.default));\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 _super.apply(this, arguments);\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 InlineBlot.blotName = 'inline';\n\t InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n\t InlineBlot.tagName = 'SPAN';\n\t return InlineBlot;\n\t}(format_1.default));\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 _super.apply(this, arguments);\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 (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 BlockBlot.blotName = 'block';\n\t BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n\t BlockBlot.tagName = 'P';\n\t return BlockBlot;\n\t}(format_1.default));\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 _super.apply(this, arguments);\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 _super.call(this, node);\n\t this.text = this.statics.value(this.domNode);\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 TextBlot.blotName = 'text';\n\t TextBlot.scope = Registry.Scope.INLINE_BLOT;\n\t return TextBlot;\n\t}(leaf_1.default));\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 ? \"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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\n\t\n\tvar _editor = __webpack_require__(27);\n\t\n\tvar _editor2 = _interopRequireDefault(_editor);\n\t\n\tvar _emitter = __webpack_require__(28);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\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__(30);\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 _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 _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 ? false : arguments[2];\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 options = expandConfig(container, options);\n\t this.container = options.container;\n\t if (this.container == null) {\n\t return debug.error('Invalid Quill container', container);\n\t }\n\t if (options.debug) {\n\t Quill.debug(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.emitter = new _emitter2.default();\n\t this.scroll = _parchment2.default.create(this.root, {\n\t emitter: this.emitter,\n\t whitelist: options.formats\n\t });\n\t this.editor = new _editor2.default(this.scroll, this.emitter);\n\t this.selection = new _selection2.default(this.scroll, this.emitter);\n\t this.theme = new options.theme(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.pasteHTML('
' + html + '


');\n\t this.history.clear();\n\t if (options.readOnly) {\n\t this.disable();\n\t }\n\t if (options.placeholder) {\n\t this.root.setAttribute('data-placeholder', options.placeholder);\n\t }\n\t this.root.classList.toggle('ql-blank', this.editor.isBlank());\n\t this.emitter.on(_emitter2.default.events.TEXT_CHANGE, function (delta) {\n\t _this2.root.classList.toggle('ql-blank', _this2.editor.isBlank());\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 ? null : arguments[1];\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 _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 var range = this.getSelection();\n\t var change = this.editor.deleteText(index, length, source);\n\t range = shiftRange(range, index, -1 * length, source);\n\t this.setSelection(range, _emitter2.default.sources.SILENT);\n\t return change;\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 ? true : arguments[0];\n\t\n\t this.editor.enable(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 this.selection.focus();\n\t this.selection.scrollIntoView();\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(name, value) {\n\t var source = arguments.length <= 2 || arguments[2] === undefined ? _emitter2.default.sources.API : arguments[2];\n\t\n\t var range = this.getSelection(true);\n\t var change = new _delta2.default();\n\t if (range == null) return change;\n\t if (_parchment2.default.query(name, _parchment2.default.Scope.BLOCK)) {\n\t change = this.formatLine(range, name, value, source);\n\t } else if (range.length === 0) {\n\t this.selection.format(name, value);\n\t return change;\n\t } else {\n\t change = this.formatText(range, name, value, source);\n\t }\n\t this.setSelection(range, _emitter2.default.sources.SILENT);\n\t return change;\n\t }\n\t }, {\n\t key: 'formatLine',\n\t value: function formatLine(index, length, name, value, source) {\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 var range = this.getSelection();\n\t var change = this.editor.formatLine(index, length, formats, source);\n\t this.selection.setRange(range, true, _emitter2.default.sources.SILENT);\n\t this.selection.scrollIntoView();\n\t return change;\n\t }\n\t }, {\n\t key: 'formatText',\n\t value: function formatText(index, length, name, value, source) {\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 var range = this.getSelection();\n\t var change = this.editor.formatText(index, length, formats, source);\n\t this.selection.setRange(range, true, _emitter2.default.sources.SILENT);\n\t this.selection.scrollIntoView();\n\t return change;\n\t }\n\t }, {\n\t key: 'getBounds',\n\t value: function getBounds(index) {\n\t var length = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\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 ? 0 : arguments[0];\n\t var length = arguments.length <= 1 || arguments[1] === undefined ? this.getLength() - index : arguments[1];\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 ? this.getSelection() : arguments[0];\n\t var length = arguments.length <= 1 || arguments[1] === undefined ? 0 : arguments[1];\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 ? false : arguments[0];\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 ? 0 : arguments[0];\n\t var length = arguments.length <= 1 || arguments[1] === undefined ? this.getLength() - index : arguments[1];\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 source = arguments.length <= 3 || arguments[3] === undefined ? Quill.sources.API : arguments[3];\n\t\n\t var range = this.getSelection();\n\t var change = this.editor.insertEmbed(index, embed, value, source);\n\t range = shiftRange(range, change, source);\n\t this.setSelection(range, _emitter2.default.sources.SILENT);\n\t return change;\n\t }\n\t }, {\n\t key: 'insertText',\n\t value: function insertText(index, text, name, value, source) {\n\t var formats = void 0,\n\t range = this.getSelection();\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 var change = this.editor.insertText(index, text, formats, source);\n\t range = shiftRange(range, index, text.length, source);\n\t this.setSelection(range, _emitter2.default.sources.SILENT);\n\t return change;\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) {\n\t var source = arguments.length <= 2 || arguments[2] === undefined ? _emitter2.default.sources.API : arguments[2];\n\t\n\t if (typeof index === 'string') {\n\t return this.setContents(this.clipboard.convert(index), html);\n\t } else {\n\t var paste = this.clipboard.convert(html);\n\t return this.updateContents(new _delta2.default().retain(index).concat(paste), source);\n\t }\n\t }\n\t }, {\n\t key: 'removeFormat',\n\t value: function removeFormat(index, length, source) {\n\t var range = this.getSelection();\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 var change = this.editor.removeFormat(index, length, source);\n\t range = shiftRange(range, change, source);\n\t this.setSelection(range, _emitter2.default.sources.SILENT);\n\t return change;\n\t }\n\t }, {\n\t key: 'setContents',\n\t value: function setContents(delta) {\n\t var source = arguments.length <= 1 || arguments[1] === undefined ? _emitter2.default.sources.API : arguments[1];\n\t\n\t delta = new _delta2.default(delta).slice();\n\t var lastOp = delta.ops[delta.ops.length - 1];\n\t // Quill contents must always end with newline\n\t if (lastOp == null || lastOp.insert[lastOp.insert.length - 1] !== '\\n') {\n\t delta.insert('\\n');\n\t }\n\t delta.delete(this.getLength());\n\t return this.editor.applyDelta(delta, 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 ? _emitter2.default.sources.API : arguments[1];\n\t\n\t var delta = new _delta2.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 ? _emitter2.default.sources.USER : arguments[0];\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 source = arguments.length <= 1 || arguments[1] === undefined ? _emitter2.default.sources.API : arguments[1];\n\t\n\t var range = this.getSelection();\n\t if (Array.isArray(delta)) {\n\t delta = new _delta2.default(delta.slice());\n\t }\n\t var change = this.editor.applyDelta(delta, source);\n\t if (range != null) {\n\t range = shiftRange(range, change, source);\n\t this.setSelection(range, _emitter2.default.sources.SILENT);\n\t }\n\t return change;\n\t }\n\t }]);\n\t\n\t return Quill;\n\t}();\n\t\n\tQuill.DEFAULTS = {\n\t bounds: document.body,\n\t formats: null,\n\t modules: {},\n\t placeholder: '',\n\t readOnly: false,\n\t theme: 'default'\n\t};\n\tQuill.events = _emitter2.default.events;\n\tQuill.sources = _emitter2.default.sources;\n\tQuill.version = false ? 'dev' : (\"1.0.2\");\n\t\n\tQuill.imports = {\n\t 'delta': _delta2.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 == null || 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 != null && 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'].forEach(function (key) {\n\t if (typeof userConfig[key] === 'string') {\n\t userConfig[key] = document.querySelector(userConfig[key]);\n\t }\n\t });\n\t return userConfig;\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 || _emitter2.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 _delta2.default) {\n\t var _map = [range.index, range.index + range.length].map(function (pos) {\n\t return index.transformPosition(pos, source === _emitter2.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 !== _emitter2.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 (typeof attributes === 'object' && Object.keys(attributes).length > 0) newOp.attributes = attributes;\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 (typeof attributes === 'object' && Object.keys(attributes).length > 0) newOp.attributes = attributes;\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.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.ops.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) {\n\t var delta = new Delta();\n\t if (this.ops === other.ops) {\n\t return delta;\n\t }\n\t var strings = [this.ops, other.ops].map(function (ops) {\n\t return ops.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 diffResult = diff(strings[0], strings[1]);\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.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 * @return {Array} Array of diff tuples.\n\t */\n\tfunction diff_main(text1, text2) {\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 // 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 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.} 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.} 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: ABAC -> ABAC\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\t\n\tmodule.exports = diff;\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.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 ? \"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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\n\t\n\tvar _op = __webpack_require__(26);\n\t\n\tvar _op2 = _interopRequireDefault(_op);\n\t\n\tvar _emitter3 = __webpack_require__(28);\n\t\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _code = __webpack_require__(31);\n\t\n\tvar _code2 = _interopRequireDefault(_code);\n\t\n\tvar _cursor = __webpack_require__(37);\n\t\n\tvar _cursor2 = _interopRequireDefault(_cursor);\n\t\n\tvar _block = __webpack_require__(32);\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, emitter) {\n\t _classCallCheck(this, Editor);\n\t\n\t this.scroll = scroll;\n\t this.emitter = emitter;\n\t this.emitter.on(_emitter4.default.events.SCROLL_UPDATE, this.update.bind(this, null));\n\t this.delta = this.getDelta();\n\t this.enable();\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 source = arguments.length <= 1 || arguments[1] === undefined ? _emitter4.default.sources.API : arguments[1];\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.ops.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\n\t var _scroll$line2 = _slicedToArray(_scroll$line, 2);\n\t\n\t var line = _scroll$line2[0];\n\t var 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\n\t var _line$descendant2 = _slicedToArray(_line$descendant, 1);\n\t\n\t var 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.ops.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, source);\n\t }\n\t }, {\n\t key: 'deleteText',\n\t value: function deleteText(index, length) {\n\t var source = arguments.length <= 2 || arguments[2] === undefined ? _emitter4.default.sources.API : arguments[2];\n\t\n\t this.scroll.deleteAt(index, length);\n\t return this.update(new _delta2.default().retain(index).delete(length), source);\n\t }\n\t }, {\n\t key: 'enable',\n\t value: function enable() {\n\t var enabled = arguments.length <= 0 || arguments[0] === undefined ? true : arguments[0];\n\t\n\t this.scroll.domNode.setAttribute('contenteditable', enabled);\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 var source = arguments.length <= 3 || arguments[3] === undefined ? _emitter4.default.sources.API : arguments[3];\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, i) {\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 _delta2.default().retain(index).retain(length, (0, _clone2.default)(formats)), source);\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 var source = arguments.length <= 3 || arguments[3] === undefined ? _emitter4.default.sources.API : arguments[3];\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 _delta2.default().retain(index).retain(length, (0, _clone2.default)(formats)), source);\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 _delta2.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 ? 0 : arguments[1];\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\n\t var 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).ops.map(function (op) {\n\t return typeof op.insert === 'string' ? op.insert : '';\n\t }).join('');\n\t }\n\t }, {\n\t key: 'insertEmbed',\n\t value: function insertEmbed(index, embed, value) {\n\t var source = arguments.length <= 3 || arguments[3] === undefined ? _emitter4.default.sources.API : arguments[3];\n\t\n\t this.scroll.insertAt(index, embed, value);\n\t return this.update(new _delta2.default().retain(index).insert(_defineProperty({}, embed, value)), source);\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 var source = arguments.length <= 3 || arguments[3] === undefined ? _emitter4.default.sources.API : arguments[3];\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 _delta2.default().retain(index).insert(text, (0, _clone2.default)(formats)), source);\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, source) {\n\t var text = this.getText(index, length);\n\t\n\t var _scroll$line3 = this.scroll.line(index + length);\n\t\n\t var _scroll$line4 = _slicedToArray(_scroll$line3, 2);\n\t\n\t var line = _scroll$line4[0];\n\t var offset = _scroll$line4[1];\n\t\n\t var suffixLength = 0,\n\t suffix = new _delta2.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 _delta2.default().insert(text).concat(suffix));\n\t var delta = new _delta2.default().retain(index).concat(diff);\n\t return this.applyDelta(delta, source);\n\t }\n\t }, {\n\t key: 'update',\n\t value: function update(change) {\n\t var _this5 = this;\n\t\n\t var source = arguments.length <= 1 || arguments[1] === undefined ? _emitter4.default.sources.USER : arguments[1];\n\t var mutations = arguments.length <= 2 || arguments[2] === undefined ? [] : arguments[2];\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 _delta2.default().insert(oldValue);\n\t var newText = new _delta2.default().insert(textBlot.value());\n\t var diffDelta = new _delta2.default().retain(index).concat(oldText.diff(newText));\n\t change = diffDelta.ops.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 _delta2.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);\n\t }\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\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.ops.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 _delta2.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\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__(29);\n\t\n\tvar _eventemitter2 = _interopRequireDefault(_eventemitter);\n\t\n\tvar _logger = __webpack_require__(30);\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/* 29 */\n/***/ function(module, exports) {\n\n\t'use strict';\n\t\n\tvar has = Object.prototype.hasOwnProperty;\n\t\n\t//\n\t// We store our EE objects in a plain object whose properties are event names.\n\t// If `Object.create(null)` is not supported we prefix the event names with a\n\t// `~` to make sure that the built-in object properties are not overridden or\n\t// used as an attack vector.\n\t// We also assume that `Object.create(null)` is available when the event name\n\t// is an ES6 Symbol.\n\t//\n\tvar prefix = typeof Object.create !== 'function' ? '~' : false;\n\t\n\t/**\n\t * Representation of a single EventEmitter function.\n\t *\n\t * @param {Function} fn Event handler to be called.\n\t * @param {Mixed} context Context for function execution.\n\t * @param {Boolean} [once=false] Only emit once\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() { /* Nothing to set */ }\n\t\n\t/**\n\t * Hold the assigned EventEmitters by name.\n\t *\n\t * @type {Object}\n\t * @private\n\t */\n\tEventEmitter.prototype._events = undefined;\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 events = this._events\n\t , names = []\n\t , name;\n\t\n\t if (!events) return names;\n\t\n\t for (name in 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 a list of assigned event listeners.\n\t *\n\t * @param {String} event The events that should be listed.\n\t * @param {Boolean} exists We only need to know 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 && 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 * Emit an event to all registered event listeners.\n\t *\n\t * @param {String} event The name of the event.\n\t * @returns {Boolean} Indication if we've emitted an event.\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 || !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 ('function' === typeof 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 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 * Register a new EventListener for the given event.\n\t *\n\t * @param {String} event Name of the event.\n\t * @param {Function} fn Callback function.\n\t * @param {Mixed} [context=this] The context of the function.\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) this._events = prefix ? {} : Object.create(null);\n\t if (!this._events[evt]) this._events[evt] = listener;\n\t else {\n\t if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [\n\t this._events[evt], listener\n\t ];\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Add an EventListener that's only called once.\n\t *\n\t * @param {String} event Name of the event.\n\t * @param {Function} fn Callback function.\n\t * @param {Mixed} [context=this] The context of the function.\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) this._events = prefix ? {} : Object.create(null);\n\t if (!this._events[evt]) this._events[evt] = listener;\n\t else {\n\t if (!this._events[evt].fn) this._events[evt].push(listener);\n\t else this._events[evt] = [\n\t this._events[evt], listener\n\t ];\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Remove event listeners.\n\t *\n\t * @param {String} event The event we want to remove.\n\t * @param {Function} fn The listener that we need to find.\n\t * @param {Mixed} context Only remove listeners matching this context.\n\t * @param {Boolean} once Only remove once listeners.\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 || !this._events[evt]) return this;\n\t\n\t var listeners = this._events[evt]\n\t , events = [];\n\t\n\t if (fn) {\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 events.push(listeners);\n\t }\n\t } else {\n\t for (var i = 0, 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\n\t //\n\t // Reset the array, or remove it completely if we have no more listeners.\n\t //\n\t if (events.length) {\n\t this._events[evt] = events.length === 1 ? events[0] : events;\n\t } else {\n\t delete this._events[evt];\n\t }\n\t\n\t return this;\n\t};\n\t\n\t/**\n\t * Remove all listeners or only the listeners for the specified event.\n\t *\n\t * @param {String} event The event want to remove all listeners for.\n\t * @api public\n\t */\n\tEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n\t if (!this._events) return this;\n\t\n\t if (event) delete this._events[prefix ? prefix + event : event];\n\t else this._events = prefix ? {} : Object.create(null);\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// Expose the module.\n\t//\n\tif ('undefined' !== typeof module) {\n\t module.exports = EventEmitter;\n\t}\n\n\n/***/ },\n/* 30 */\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);\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/* 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\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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(32);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _inline = __webpack_require__(35);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _text = __webpack_require__(36);\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 _delta2.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\n\t var _descendant2 = _slicedToArray(_descendant, 1);\n\t\n\t var 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\n\t var _descendant4 = _slicedToArray(_descendant3, 2);\n\t\n\t var text = _descendant4[0];\n\t var 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 ? false : arguments[1];\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(domNode) {\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/* 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\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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _break = __webpack_require__(33);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _embed = __webpack_require__(34);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _inline = __webpack_require__(35);\n\t\n\tvar _inline2 = _interopRequireDefault(_inline);\n\t\n\tvar _text = __webpack_require__(36);\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 _delta2.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 _delta2.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 ? false : arguments[1];\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/* 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 _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__(34);\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 }\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(domNode) {\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/* 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 _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/* 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 _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _embed = __webpack_require__(34);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _text = __webpack_require__(36);\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: '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/* 36 */\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/* 37 */\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__(34);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\n\t\n\tvar _emitter = __webpack_require__(28);\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(domNode) {\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(index) {\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 // 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 this.textNode.data = this.textNode.data.split(Cursor.CONTENTS).join('');\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 this.remove();\n\t if (range != null && range.start.node === textNode && range.end.node === textNode) {\n\t this.selection.emitter.once(_emitter2.default.events.SCROLL_OPTIMIZE, function () {\n\t var _map = [range.start.offset, range.end.offset].map(function (offset) {\n\t return Math.max(0, Math.min(textNode.data.length, offset - 1));\n\t });\n\t\n\t var _map2 = _slicedToArray(_map, 2);\n\t\n\t var start = _map2[0];\n\t var end = _map2[1];\n\t\n\t _this2.selection.setNativeRange(textNode, start, textNode, end);\n\t });\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 = ''; // Zero width no break space\n\t\n\t\n\texports.default = Cursor;\n\n/***/ },\n/* 38 */\n/***/ function(module, exports) {\n\n\tvar clone = (function() {\n\t'use strict';\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*/\n\tfunction clone(parent, circular, depth, prototype) {\n\t var filter;\n\t if (typeof circular === 'object') {\n\t depth = circular.depth;\n\t prototype = circular.prototype;\n\t filter = circular.filter;\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 (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 {\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 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 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 _break = __webpack_require__(33);\n\t\n\tvar _break2 = _interopRequireDefault(_break);\n\t\n\tvar _emitter3 = __webpack_require__(28);\n\t\n\tvar _emitter4 = _interopRequireDefault(_emitter3);\n\t\n\tvar _logger = __webpack_require__(30);\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 ? 0 : arguments[1];\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 var bodyTop = document.body.scrollTop;\n\t this.root.focus();\n\t document.body.scrollTop = bodyTop;\n\t this.setRange(this.savedRange);\n\t }\n\t }, {\n\t key: 'format',\n\t value: function format(_format, value) {\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 ? 0 : arguments[1];\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;var node = void 0;\n\t var _scroll$leaf = this.scroll.leaf(index);\n\t\n\t var _scroll$leaf2 = _slicedToArray(_scroll$leaf, 2);\n\t\n\t var leaf = _scroll$leaf2[0];\n\t var offset = _scroll$leaf2[1];\n\t\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 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 var rect = range.getBoundingClientRect();\n\t } else {\n\t var 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 if (!this.hasFocus()) return [null, null];\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\n\t var node = _position[0];\n\t var 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 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 ? this.lastRange : arguments[0];\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\n\t var _scroll$line2 = _slicedToArray(_scroll$line, 1);\n\t\n\t var 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\n\t var _scroll$line4 = _slicedToArray(_scroll$line3, 1);\n\t\n\t var _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 ? startNode : arguments[2];\n\t var endOffset = arguments.length <= 3 || arguments[3] === undefined ? startOffset : arguments[3];\n\t var force = arguments.length <= 4 || arguments[4] === undefined ? false : arguments[4];\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 nativeRange = this.getNativeRange();\n\t if (nativeRange == null || force || startNode !== nativeRange.start.node || startOffset !== nativeRange.start.offset || endNode !== nativeRange.end.node || endOffset !== nativeRange.end.offset) {\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 ? false : arguments[1];\n\t var source = arguments.length <= 2 || arguments[2] === undefined ? _emitter4.default.sources.API : arguments[2];\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 var _scroll$leaf5 = _this3.scroll.leaf(index);\n\t\n\t var _scroll$leaf6 = _slicedToArray(_scroll$leaf5, 2);\n\t\n\t var leaf = _scroll$leaf6[0];\n\t var offset = _scroll$leaf6[1];\n\t\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 ? _emitter4.default.sources.USER : arguments[0];\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, __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 _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _emitter = __webpack_require__(28);\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\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__(32);\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__(28);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _block = __webpack_require__(32);\n\t\n\tvar _block2 = _interopRequireDefault(_block);\n\t\n\tvar _break = __webpack_require__(33);\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__(31);\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 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\n\t var _line2 = _slicedToArray(_line, 2);\n\t\n\t var first = _line2[0];\n\t var offset = _line2[1];\n\t\n\t var _line3 = this.line(index + length);\n\t\n\t var _line4 = _slicedToArray(_line3, 1);\n\t\n\t var 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: '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 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 ? 0 : arguments[0];\n\t var length = arguments.length <= 1 || arguments[1] === undefined ? Number.MAX_VALUE : arguments[1];\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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\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__(30);\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 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 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 var _this2 = this;\n\t\n\t var DOM_KEY = '__ql-matcher';\n\t if (typeof html === 'string') {\n\t this.container.innerHTML = html;\n\t }\n\t var textMatchers = [],\n\t elementMatchers = [];\n\t this.matchers.forEach(function (pair) {\n\t var _pair = _slicedToArray(pair, 2);\n\t\n\t var selector = _pair[0];\n\t var 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(_this2.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 var traverse = function traverse(node) {\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 _delta2.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);\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 _delta2.default());\n\t } else {\n\t return new _delta2.default();\n\t }\n\t };\n\t var delta = traverse(this.container);\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 _delta2.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: 'onPaste',\n\t value: function onPaste(e) {\n\t var _this3 = this;\n\t\n\t if (e.defaultPrevented) return;\n\t var range = this.quill.getSelection();\n\t var delta = new _delta2.default().retain(range.index).delete(range.length);\n\t var bodyTop = document.body.scrollTop;\n\t this.container.focus();\n\t setTimeout(function () {\n\t delta = delta.concat(_this3.convert());\n\t _this3.quill.updateContents(delta, _quill2.default.sources.USER);\n\t // range.length contributes to delta.length()\n\t _this3.quill.setSelection(delta.length() - range.length, _quill2.default.sources.SILENT);\n\t document.body.scrollTop = bodyTop;\n\t _this3.quill.selection.scrollIntoView();\n\t }, 1);\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 matchAlias(format, node, delta) {\n\t return delta.compose(new _delta2.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 (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 _delta2.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 _delta2.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 _delta2.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(node, delta) {\n\t return new _delta2.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.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 _delta2.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 _delta2.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  \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 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\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 = 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 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.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 = 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 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.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 _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.INLINE,\n\t whitelist: ['serif', 'monospace']\n\t};\n\t\n\tvar FontClass = new _parchment2.default.Attributor.Class('font', 'ql-font', config);\n\tvar FontStyle = new _parchment2.default.Attributor.Style('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.unshift();\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.ops.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 ? \"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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\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__(30);\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 _block = __webpack_require__(32);\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 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 _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, function (range, context) {\n\t if (range.index === 0) return;\n\t var index = context.offset === 0 ? range.index : range.index - 1;\n\t this.quill.deleteText(index, 1, _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 _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^$/ }, function (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 _this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDelete);\n\t _this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDelete);\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) return; // implies we do not have focus\n\t\n\t var _quill$scroll$line = _this2.quill.scroll.line(range.index);\n\t\n\t var _quill$scroll$line2 = _slicedToArray(_quill$scroll$line, 2);\n\t\n\t var line = _quill$scroll$line2[0];\n\t var offset = _quill$scroll$line2[1];\n\t\n\t var _quill$scroll$leaf = _this2.quill.scroll.leaf(range.index);\n\t\n\t var _quill$scroll$leaf2 = _slicedToArray(_quill$scroll$leaf, 2);\n\t\n\t var leafStart = _quill$scroll$leaf2[0];\n\t var 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\n\t var _ref2 = _slicedToArray(_ref, 2);\n\t\n\t var leafEnd = _ref2[0];\n\t var 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, context) {\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 '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 handleDelete(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\n\t var _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2);\n\t\n\t var block = _quill$scroll$descend2[0];\n\t var 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: '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__(32);\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__(32);\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 _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\n\t\n\tvar _parchment = __webpack_require__(2);\n\t\n\tvar _parchment2 = _interopRequireDefault(_parchment);\n\t\n\tvar _block = __webpack_require__(32);\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) {\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 if (value === 'ordered') {\n\t value = 'OL';\n\t } else if (value === 'bullet') {\n\t value = 'UL';\n\t }\n\t return _get(List.__proto__ || Object.getPrototypeOf(List), 'create', this).call(this, value);\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') return 'bullet';\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__(35);\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(value) {\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(domNode) {\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__(35);\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__(35);\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__(35);\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__(35);\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__(34);\n\t\n\tvar _embed2 = _interopRequireDefault(_embed);\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 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 (name === 'height' || name === 'width') {\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 var formats = {};\n\t if (domNode.hasAttribute('height')) formats['height'] = domNode.getAttribute('height');\n\t if (domNode.hasAttribute('width')) formats['width'] = domNode.getAttribute('width');\n\t return formats;\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__(32);\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 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 (name === 'height' || name === 'width') {\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 var formats = {};\n\t if (domNode.hasAttribute('height')) formats['height'] = domNode.getAttribute('height');\n\t if (domNode.hasAttribute('width')) formats['width'] = domNode.getAttribute('width');\n\t return formats;\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__(34);\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(node, offset) {\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 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__(31);\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 _extend = __webpack_require__(25);\n\t\n\tvar _extend2 = _interopRequireDefault(_extend);\n\t\n\tvar _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\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__(30);\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 _this.container.addEventListener('mousedown', function (e) {\n\t e.preventDefault(); // Prevent blur\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\n\t var _this$quill$selection2 = _slicedToArray(_this$quill$selection, 1);\n\t\n\t var range = _this$quill$selection2[0]; // quill.getSelection triggers update\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\n\t var _quill$selection$getR2 = _slicedToArray(_quill$selection$getR, 1);\n\t\n\t var 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 _delta2.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\n\t var format = _pair[0];\n\t var 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(value) {\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-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 },\n\t 'script': {\n\t 'sub': __webpack_require__(95),\n\t 'super': __webpack_require__(96)\n\t },\n\t 'strike': __webpack_require__(97),\n\t 'underline': __webpack_require__(98),\n\t 'video': __webpack_require__(99)\n\t};\n\n/***/ },\n/* 69 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 70 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 71 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 72 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 73 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 74 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 75 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 76 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 77 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 78 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 79 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 80 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 81 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 82 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 83 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 84 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 85 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 86 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 87 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 88 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 89 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 90 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 91 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 92 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 93 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 94 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 95 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 96 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 97 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 98 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 99 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 100 */\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 ? \"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__(101);\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 (event) {\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 (event) {\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 ? false : arguments[1];\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) {\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 } else {\n\t this.label.removeAttribute('data-value');\n\t this.label.removeAttribute('data-label');\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/* 101 */\n/***/ function(module, exports) {\n\n\tmodule.exports = \" \";\n\n/***/ },\n/* 102 */\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__(100);\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/* 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__(100);\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/* 104 */\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;\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/* 105 */\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 _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__(28);\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 _base = __webpack_require__(106);\n\t\n\tvar _base2 = _interopRequireDefault(_base);\n\t\n\tvar _icons = __webpack_require__(68);\n\t\n\tvar _icons2 = _interopRequireDefault(_icons);\n\t\n\tvar _selection = __webpack_require__(40);\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')));\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')));\n\t }\n\t }]);\n\t\n\t return BubbleTheme;\n\t}(_base2.default);\n\t\n\tBubbleTheme.DEFAULTS = (0, _extend2.default)(true, {}, _base.BaseTooltip.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 (event) {\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 if (shift === 0) return shift;\n\t var arrow = this.root.querySelector('.ql-tooltip-arrow');\n\t arrow.style.marginLeft = '';\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 = ['', '
', '', '', '
'].join('');\n\t\n\texports.default = BubbleTheme;\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.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 _delta = __webpack_require__(20);\n\t\n\tvar _delta2 = _interopRequireDefault(_delta);\n\t\n\tvar _emitter = __webpack_require__(28);\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__(102);\n\t\n\tvar _colorPicker2 = _interopRequireDefault(_colorPicker);\n\t\n\tvar _iconPicker = __webpack_require__(103);\n\t\n\tvar _iconPicker2 = _interopRequireDefault(_iconPicker);\n\t\n\tvar _picker = __webpack_require__(100);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _tooltip = __webpack_require__(104);\n\t\n\tvar _tooltip2 = _interopRequireDefault(_tooltip);\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 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) {\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 (_icons2.default[name] == null) return;\n\t if (name === 'direction') {\n\t button.innerHTML = _icons2.default[name][''] + _icons2.default[name]['rtl'];\n\t } else if (typeof _icons2.default[name] === 'string') {\n\t button.innerHTML = _icons2.default[name];\n\t } else {\n\t var value = button.value || '';\n\t if (value != null && _icons2.default[name][value]) {\n\t button.innerHTML = _icons2.default[name][value];\n\t }\n\t }\n\t });\n\t });\n\t }\n\t }, {\n\t key: 'buildPickers',\n\t value: function buildPickers(selects) {\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, _icons2.default.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, _icons2.default[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(value) {\n\t this.quill.theme.tooltip.edit('formula');\n\t },\n\t image: function image(value) {\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/*');\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 _delta2.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(value) {\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 ? 'link' : arguments[0];\n\t var preview = arguments.length <= 1 || arguments[1] === undefined ? null : arguments[1];\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 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 case 'video':\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 value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n\t }\n\t // fallthrough\n\t case 'formula':\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 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 ? false : arguments[2];\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/* 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\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__(28);\n\t\n\tvar _emitter2 = _interopRequireDefault(_emitter);\n\t\n\tvar _base = __webpack_require__(106);\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 _picker = __webpack_require__(100);\n\t\n\tvar _picker2 = _interopRequireDefault(_picker);\n\t\n\tvar _selection = __webpack_require__(40);\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')));\n\t this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')));\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\n\t var _quill$scroll$descend2 = _slicedToArray(_quill$scroll$descend, 2);\n\t\n\t var link = _quill$scroll$descend2[0];\n\t var 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 }\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 = ['', '', '', ''].join('');\n\t\n\texports.default = SnowTheme;\n\n/***/ }\n/******/ ])\n});\n;\n\n\n/** WEBPACK FOOTER **\n ** quill.min.js\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/** WEBPACK FOOTER **\n ** webpack/bootstrap 2370d777e3c51e058c2e\n **/","import Quill from './core';\n\nimport { AlignClass, AlignStyle } from './formats/align';\nimport { 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/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\n **/","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\n **/","\"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\n **/","\"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 _super.apply(this, arguments);\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 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\n **/","\"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 - 0] = 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\n **/","\"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, refDomNode);\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 ShadowBlot.blotName = 'abstract';\n return ShadowBlot;\n}());\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\n **/","\"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 message = '[Parchment] ' + message;\n _super.call(this, message);\n this.message = message;\n this.name = this.constructor.name;\n }\n return ParchmentError;\n}(Error));\nexports.ParchmentError = ParchmentError;\nvar attributes = {};\nvar classes = {};\nvar tags = {};\nvar types = {};\nexports.DATA_KEY = '__blot';\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})(exports.Scope || (exports.Scope = {}));\nvar 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 if (match = classes[names[i]])\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 - 0] = 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\n **/","\"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 _super.apply(this, arguments);\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\n **/","\"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 return node.getAttribute(this.keyName);\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\n **/","\"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\n **/","\"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 _super.apply(this, arguments);\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 return result.slice(this.keyName.length + 1); // +1 for hyphen\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\n **/","\"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 _super.apply(this, arguments);\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 return node.style[camelize(this.keyName)];\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\n **/","\"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 _super.apply(this, arguments);\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 LeafBlot.scope = Registry.Scope.INLINE_BLOT;\n return LeafBlot;\n}(shadow_1.default));\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\n **/","\"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 = this;\n _super.call(this, node);\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 }\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 mutations.push.apply(mutations, this.observer.takeRecords());\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 = this.observer.takeRecords();\n mutations.push.apply(mutations, remaining);\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)\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 ScrollBlot.blotName = 'scroll';\n ScrollBlot.defaultChild = 'block';\n ScrollBlot.scope = Registry.Scope.BLOCK_BLOT;\n ScrollBlot.tagName = 'DIV';\n return ScrollBlot;\n}(container_1.default));\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\n **/","\"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 _super.apply(this, arguments);\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 InlineBlot.blotName = 'inline';\n InlineBlot.scope = Registry.Scope.INLINE_BLOT;\n InlineBlot.tagName = 'SPAN';\n return InlineBlot;\n}(format_1.default));\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\n **/","\"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 _super.apply(this, arguments);\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 (name === this.statics.blotName && !value) {\n this.replaceWith(BlockBlot.blotName);\n }\n else {\n _super.prototype.format.call(this, name, value);\n }\n };\n BlockBlot.prototype.formatAt = function (index, length, name, value) {\n if (Registry.query(name, Registry.Scope.BLOCK) != null) {\n this.format(name, value);\n }\n else {\n _super.prototype.formatAt.call(this, index, length, name, value);\n }\n };\n BlockBlot.prototype.insertAt = function (index, value, def) {\n if (def == null || Registry.query(value, Registry.Scope.INLINE) != null) {\n // Insert text or inline\n _super.prototype.insertAt.call(this, index, value, def);\n }\n else {\n var after = this.split(index);\n var blot = Registry.create(value, def);\n after.parent.insertBefore(blot, after);\n }\n };\n BlockBlot.blotName = 'block';\n BlockBlot.scope = Registry.Scope.BLOCK_BLOT;\n BlockBlot.tagName = 'P';\n return BlockBlot;\n}(format_1.default));\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\n **/","\"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 _super.apply(this, arguments);\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\n **/","\"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 _super.call(this, node);\n this.text = this.statics.value(this.domNode);\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 TextBlot.blotName = 'text';\n TextBlot.scope = Registry.Scope.INLINE_BLOT;\n return TextBlot;\n}(leaf_1.default));\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\n **/","import './polyfill';\nimport Delta from 'rich-text/lib/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 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 options = expandConfig(container, options);\n this.container = options.container;\n if (this.container == null) {\n return debug.error('Invalid Quill container', container);\n }\n if (options.debug) {\n Quill.debug(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.emitter = new Emitter();\n this.scroll = Parchment.create(this.root, {\n emitter: this.emitter,\n whitelist: options.formats\n });\n this.editor = new Editor(this.scroll, this.emitter);\n this.selection = new Selection(this.scroll, this.emitter);\n this.theme = new options.theme(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.pasteHTML(`
${html}


`);\n this.history.clear();\n if (options.readOnly) {\n this.disable();\n }\n if (options.placeholder) {\n this.root.setAttribute('data-placeholder', options.placeholder);\n }\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\n this.emitter.on(Emitter.events.TEXT_CHANGE, (delta) => {\n this.root.classList.toggle('ql-blank', this.editor.isBlank());\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 let range = this.getSelection();\n let change = this.editor.deleteText(index, length, source);\n range = shiftRange(range, index, -1*length, source);\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }\n\n disable() {\n this.enable(false);\n }\n\n enable(enabled = true) {\n this.editor.enable(enabled);\n if (!enabled) {\n this.blur();\n }\n }\n\n focus() {\n this.selection.focus();\n this.selection.scrollIntoView();\n }\n\n format(name, value, source = Emitter.sources.API) {\n let range = this.getSelection(true);\n let change = new Delta();\n if (range == null) return change;\n if (Parchment.query(name, Parchment.Scope.BLOCK)) {\n change = this.formatLine(range, name, value, source);\n } else if (range.length === 0) {\n this.selection.format(name, value);\n return change;\n } else {\n change = this.formatText(range, name, value, source);\n }\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }\n\n formatLine(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n let range = this.getSelection();\n let change = this.editor.formatLine(index, length, formats, source);\n this.selection.setRange(range, true, Emitter.sources.SILENT);\n this.selection.scrollIntoView();\n return change;\n }\n\n formatText(index, length, name, value, source) {\n let formats;\n [index, length, formats, source] = overload(index, length, name, value, source);\n let range = this.getSelection();\n let change = this.editor.formatText(index, length, formats, source);\n this.selection.setRange(range, true, Emitter.sources.SILENT);\n this.selection.scrollIntoView();\n return change;\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 let range = this.getSelection();\n let change = this.editor.insertEmbed(index, embed, value, source);\n range = shiftRange(range, change, source);\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }\n\n insertText(index, text, name, value, source) {\n let formats, range = this.getSelection();\n [index, , formats, source] = overload(index, 0, name, value, source);\n let change = this.editor.insertText(index, text, formats, source);\n range = shiftRange(range, index, text.length, source);\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\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 = Emitter.sources.API) {\n if (typeof index === 'string') {\n return this.setContents(this.clipboard.convert(index), html);\n } else {\n let paste = this.clipboard.convert(html);\n return this.updateContents(new Delta().retain(index).concat(paste), source);\n }\n }\n\n removeFormat(index, length, source) {\n let range = this.getSelection();\n [index, length, , source] = overload(index, length, source);\n let change = this.editor.removeFormat(index, length, source);\n range = shiftRange(range, change, source);\n this.setSelection(range, Emitter.sources.SILENT);\n return change;\n }\n\n setContents(delta, source = Emitter.sources.API) {\n delta = new Delta(delta).slice();\n let lastOp = delta.ops[delta.ops.length - 1];\n // Quill contents must always end with newline\n if (lastOp == null || lastOp.insert[lastOp.insert.length-1] !== '\\n') {\n delta.insert('\\n');\n }\n delta.delete(this.getLength());\n return this.editor.applyDelta(delta, 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 let range = this.getSelection();\n if (Array.isArray(delta)) {\n delta = new Delta(delta.slice());\n }\n let change = this.editor.applyDelta(delta, source);\n if (range != null) {\n range = shiftRange(range, change, source);\n this.setSelection(range, Emitter.sources.SILENT);\n }\n return change;\n }\n}\nQuill.DEFAULTS = {\n bounds: document.body,\n formats: null,\n modules: {},\n placeholder: '',\n readOnly: false,\n theme: 'default'\n};\nQuill.events = Emitter.events;\nQuill.sources = Emitter.sources;\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 == null || 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 != null &&\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'].forEach(function(key) {\n if (typeof userConfig[key] === 'string') {\n userConfig[key] = document.querySelector(userConfig[key]);\n }\n });\n return userConfig;\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\n **/","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\n **/","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 (typeof attributes === 'object' && Object.keys(attributes).length > 0) newOp.attributes = attributes;\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 (typeof attributes === 'object' && Object.keys(attributes).length > 0) newOp.attributes = attributes;\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.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.ops.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) {\n var delta = new Delta();\n if (this.ops === other.ops) {\n return delta;\n }\n var strings = [this.ops, other.ops].map(function (ops) {\n return ops.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 diffResult = diff(strings[0], strings[1]);\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.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 ** ./~/rich-text/lib/delta.js\n ** module id = 20\n ** module chunks = 0\n **/","/**\n * This library modifies the diff-patch-match library by Neil Fraser\n * by removing the patch and match functionality and certain advanced\n * options in the diff function. The original license is as follows:\n *\n * ===\n *\n * Diff Match and Patch\n *\n * Copyright 2006 Google Inc.\n * http://code.google.com/p/google-diff-match-patch/\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\n\n/**\n * The data structure representing a diff is an array of tuples:\n * [[DIFF_DELETE, 'Hello'], [DIFF_INSERT, 'Goodbye'], [DIFF_EQUAL, ' world.']]\n * which means: delete 'Hello', add 'Goodbye' and keep ' world.'\n */\nvar DIFF_DELETE = -1;\nvar DIFF_INSERT = 1;\nvar DIFF_EQUAL = 0;\n\n\n/**\n * Find the differences between two texts. Simplifies the problem by stripping\n * any common prefix or suffix off the texts before diffing.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_main(text1, text2) {\n // Check for equality (speedup).\n if (text1 == text2) {\n if (text1) {\n return [[DIFF_EQUAL, text1]];\n }\n return [];\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 return diffs;\n};\n\n\n/**\n * Find the differences between two texts. Assumes that the texts do not\n * have any common prefix or suffix.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_compute_(text1, text2) {\n var diffs;\n\n if (!text1) {\n // Just add some text (speedup).\n return [[DIFF_INSERT, text2]];\n }\n\n if (!text2) {\n // Just delete some text (speedup).\n return [[DIFF_DELETE, text1]];\n }\n\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n var i = longtext.indexOf(shorttext);\n if (i != -1) {\n // Shorter text is inside the longer text (speedup).\n diffs = [[DIFF_INSERT, longtext.substring(0, i)],\n [DIFF_EQUAL, shorttext],\n [DIFF_INSERT, longtext.substring(i + shorttext.length)]];\n // Swap insertions for deletions if diff is reversed.\n if (text1.length > text2.length) {\n diffs[0][0] = diffs[2][0] = DIFF_DELETE;\n }\n return diffs;\n }\n\n if (shorttext.length == 1) {\n // Single character string.\n // After the previous speedup, the character can't be an equality.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n }\n\n // Check to see if the problem can be split in two.\n var hm = diff_halfMatch_(text1, text2);\n if (hm) {\n // A half-match was found, sort out the return data.\n var text1_a = hm[0];\n var text1_b = hm[1];\n var text2_a = hm[2];\n var text2_b = hm[3];\n var mid_common = hm[4];\n // Send both pairs off for separate processing.\n var diffs_a = diff_main(text1_a, text2_a);\n var diffs_b = diff_main(text1_b, text2_b);\n // Merge the results.\n return diffs_a.concat([[DIFF_EQUAL, mid_common]], diffs_b);\n }\n\n return diff_bisect_(text1, text2);\n};\n\n\n/**\n * Find the 'middle snake' of a diff, split the problem in two\n * and return the recursively constructed diff.\n * See Myers 1986 paper: An O(ND) Difference Algorithm and Its Variations.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @return {Array} Array of diff tuples.\n * @private\n */\nfunction diff_bisect_(text1, text2) {\n // Cache the text lengths to prevent multiple calls.\n var text1_length = text1.length;\n var text2_length = text2.length;\n var max_d = Math.ceil((text1_length + text2_length) / 2);\n var v_offset = max_d;\n var v_length = 2 * max_d;\n var v1 = new Array(v_length);\n var v2 = new Array(v_length);\n // Setting all elements to -1 is faster in Chrome & Firefox than mixing\n // integers and undefined.\n for (var x = 0; x < v_length; x++) {\n v1[x] = -1;\n v2[x] = -1;\n }\n v1[v_offset + 1] = 0;\n v2[v_offset + 1] = 0;\n var delta = text1_length - text2_length;\n // If the total number of characters is odd, then the front path will collide\n // with the reverse path.\n var front = (delta % 2 != 0);\n // Offsets for start and end of k loop.\n // Prevents mapping of space beyond the grid.\n var k1start = 0;\n var k1end = 0;\n var k2start = 0;\n var k2end = 0;\n for (var d = 0; d < max_d; d++) {\n // Walk the front path one step.\n for (var k1 = -d + k1start; k1 <= d - k1end; k1 += 2) {\n var k1_offset = v_offset + k1;\n var x1;\n if (k1 == -d || (k1 != d && v1[k1_offset - 1] < v1[k1_offset + 1])) {\n x1 = v1[k1_offset + 1];\n } else {\n x1 = v1[k1_offset - 1] + 1;\n }\n var y1 = x1 - k1;\n while (x1 < text1_length && y1 < text2_length &&\n text1.charAt(x1) == text2.charAt(y1)) {\n x1++;\n y1++;\n }\n v1[k1_offset] = x1;\n if (x1 > text1_length) {\n // Ran off the right of the graph.\n k1end += 2;\n } else if (y1 > text2_length) {\n // Ran off the bottom of the graph.\n k1start += 2;\n } else if (front) {\n var k2_offset = v_offset + delta - k1;\n if (k2_offset >= 0 && k2_offset < v_length && v2[k2_offset] != -1) {\n // Mirror x2 onto top-left coordinate system.\n var x2 = text1_length - v2[k2_offset];\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n\n // Walk the reverse path one step.\n for (var k2 = -d + k2start; k2 <= d - k2end; k2 += 2) {\n var k2_offset = v_offset + k2;\n var x2;\n if (k2 == -d || (k2 != d && v2[k2_offset - 1] < v2[k2_offset + 1])) {\n x2 = v2[k2_offset + 1];\n } else {\n x2 = v2[k2_offset - 1] + 1;\n }\n var y2 = x2 - k2;\n while (x2 < text1_length && y2 < text2_length &&\n text1.charAt(text1_length - x2 - 1) ==\n text2.charAt(text2_length - y2 - 1)) {\n x2++;\n y2++;\n }\n v2[k2_offset] = x2;\n if (x2 > text1_length) {\n // Ran off the left of the graph.\n k2end += 2;\n } else if (y2 > text2_length) {\n // Ran off the top of the graph.\n k2start += 2;\n } else if (!front) {\n var k1_offset = v_offset + delta - k2;\n if (k1_offset >= 0 && k1_offset < v_length && v1[k1_offset] != -1) {\n var x1 = v1[k1_offset];\n var y1 = v_offset + x1 - k1_offset;\n // Mirror x2 onto top-left coordinate system.\n x2 = text1_length - x2;\n if (x1 >= x2) {\n // Overlap detected.\n return diff_bisectSplit_(text1, text2, x1, y1);\n }\n }\n }\n }\n }\n // Diff took too long and hit the deadline or\n // number of diffs equals number of characters, no commonality at all.\n return [[DIFF_DELETE, text1], [DIFF_INSERT, text2]];\n};\n\n\n/**\n * Given the location of the 'middle snake', split the diff in two parts\n * and recurse.\n * @param {string} text1 Old string to be diffed.\n * @param {string} text2 New string to be diffed.\n * @param {number} x Index of split point in text1.\n * @param {number} y Index of split point in text2.\n * @return {Array} Array of diff tuples.\n */\nfunction diff_bisectSplit_(text1, text2, x, y) {\n var text1a = text1.substring(0, x);\n var text2a = text2.substring(0, y);\n var text1b = text1.substring(x);\n var text2b = text2.substring(y);\n\n // Compute both diffs serially.\n var diffs = diff_main(text1a, text2a);\n var diffsb = diff_main(text1b, text2b);\n\n return diffs.concat(diffsb);\n};\n\n\n/**\n * Determine the common prefix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the start of each\n * string.\n */\nfunction diff_commonPrefix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 || text1.charAt(0) != text2.charAt(0)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerstart = 0;\n while (pointermin < pointermid) {\n if (text1.substring(pointerstart, pointermid) ==\n text2.substring(pointerstart, pointermid)) {\n pointermin = pointermid;\n pointerstart = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Determine the common suffix of two strings.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {number} The number of characters common to the end of each string.\n */\nfunction diff_commonSuffix(text1, text2) {\n // Quick check for common null cases.\n if (!text1 || !text2 ||\n text1.charAt(text1.length - 1) != text2.charAt(text2.length - 1)) {\n return 0;\n }\n // Binary search.\n // Performance analysis: http://neil.fraser.name/news/2007/10/09/\n var pointermin = 0;\n var pointermax = Math.min(text1.length, text2.length);\n var pointermid = pointermax;\n var pointerend = 0;\n while (pointermin < pointermid) {\n if (text1.substring(text1.length - pointermid, text1.length - pointerend) ==\n text2.substring(text2.length - pointermid, text2.length - pointerend)) {\n pointermin = pointermid;\n pointerend = pointermin;\n } else {\n pointermax = pointermid;\n }\n pointermid = Math.floor((pointermax - pointermin) / 2 + pointermin);\n }\n return pointermid;\n};\n\n\n/**\n * Do the two texts share a substring which is at least half the length of the\n * longer text?\n * This speedup can produce non-minimal diffs.\n * @param {string} text1 First string.\n * @param {string} text2 Second string.\n * @return {Array.} Five element Array, containing the prefix of\n * text1, the suffix of text1, the prefix of text2, the suffix of\n * text2 and the common middle. Or null if there was no match.\n */\nfunction diff_halfMatch_(text1, text2) {\n var longtext = text1.length > text2.length ? text1 : text2;\n var shorttext = text1.length > text2.length ? text2 : text1;\n if (longtext.length < 4 || shorttext.length * 2 < longtext.length) {\n return null; // Pointless.\n }\n\n /**\n * Does a substring of shorttext exist within longtext such that the substring\n * is at least half the length of longtext?\n * Closure, but does not reference any external variables.\n * @param {string} longtext Longer string.\n * @param {string} shorttext Shorter string.\n * @param {number} i Start index of quarter length substring within longtext.\n * @return {Array.} Five element Array, containing the prefix of\n * longtext, the suffix of longtext, the prefix of shorttext, the suffix\n * of shorttext and the common middle. Or null if there was no match.\n * @private\n */\n function diff_halfMatchI_(longtext, shorttext, i) {\n // Start with a 1/4 length substring at position i as a seed.\n var seed = longtext.substring(i, i + Math.floor(longtext.length / 4));\n var j = -1;\n var best_common = '';\n var best_longtext_a, best_longtext_b, best_shorttext_a, best_shorttext_b;\n while ((j = shorttext.indexOf(seed, j + 1)) != -1) {\n var prefixLength = diff_commonPrefix(longtext.substring(i),\n shorttext.substring(j));\n var suffixLength = diff_commonSuffix(longtext.substring(0, i),\n shorttext.substring(0, j));\n if (best_common.length < suffixLength + prefixLength) {\n best_common = shorttext.substring(j - suffixLength, j) +\n shorttext.substring(j, j + prefixLength);\n best_longtext_a = longtext.substring(0, i - suffixLength);\n best_longtext_b = longtext.substring(i + prefixLength);\n best_shorttext_a = shorttext.substring(0, j - suffixLength);\n best_shorttext_b = shorttext.substring(j + prefixLength);\n }\n }\n if (best_common.length * 2 >= longtext.length) {\n return [best_longtext_a, best_longtext_b,\n best_shorttext_a, best_shorttext_b, best_common];\n } else {\n return null;\n }\n }\n\n // First check if the second quarter is the seed for a half-match.\n var hm1 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 4));\n // Check again based on the third quarter.\n var hm2 = diff_halfMatchI_(longtext, shorttext,\n Math.ceil(longtext.length / 2));\n var hm;\n if (!hm1 && !hm2) {\n return null;\n } else if (!hm2) {\n hm = hm1;\n } else if (!hm1) {\n hm = hm2;\n } else {\n // Both matched. Select the longest.\n hm = hm1[4].length > hm2[4].length ? hm1 : hm2;\n }\n\n // A half-match was found, sort out the return data.\n var text1_a, text1_b, text2_a, text2_b;\n if (text1.length > text2.length) {\n text1_a = hm[0];\n text1_b = hm[1];\n text2_a = hm[2];\n text2_b = hm[3];\n } else {\n text2_a = hm[0];\n text2_b = hm[1];\n text1_a = hm[2];\n text1_b = hm[3];\n }\n var mid_common = hm[4];\n return [text1_a, text1_b, text2_a, text2_b, mid_common];\n};\n\n\n/**\n * Reorder and merge like edit sections. Merge equalities.\n * Any edit section can move as long as it doesn't cross an equality.\n * @param {Array} diffs Array of diff tuples.\n */\nfunction diff_cleanupMerge(diffs) {\n diffs.push([DIFF_EQUAL, '']); // Add a dummy entry at the end.\n var pointer = 0;\n var count_delete = 0;\n var count_insert = 0;\n var text_delete = '';\n var text_insert = '';\n var commonlength;\n while (pointer < diffs.length) {\n switch (diffs[pointer][0]) {\n case DIFF_INSERT:\n count_insert++;\n text_insert += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_DELETE:\n count_delete++;\n text_delete += diffs[pointer][1];\n pointer++;\n break;\n case DIFF_EQUAL:\n // Upon reaching an equality, check for prior redundancies.\n if (count_delete + count_insert > 1) {\n if (count_delete !== 0 && count_insert !== 0) {\n // Factor out any common prefixies.\n commonlength = diff_commonPrefix(text_insert, text_delete);\n if (commonlength !== 0) {\n if ((pointer - count_delete - count_insert) > 0 &&\n diffs[pointer - count_delete - count_insert - 1][0] ==\n DIFF_EQUAL) {\n diffs[pointer - count_delete - count_insert - 1][1] +=\n text_insert.substring(0, commonlength);\n } else {\n diffs.splice(0, 0, [DIFF_EQUAL,\n text_insert.substring(0, commonlength)]);\n pointer++;\n }\n text_insert = text_insert.substring(commonlength);\n text_delete = text_delete.substring(commonlength);\n }\n // Factor out any common suffixies.\n commonlength = diff_commonSuffix(text_insert, text_delete);\n if (commonlength !== 0) {\n diffs[pointer][1] = text_insert.substring(text_insert.length -\n commonlength) + diffs[pointer][1];\n text_insert = text_insert.substring(0, text_insert.length -\n commonlength);\n text_delete = text_delete.substring(0, text_delete.length -\n commonlength);\n }\n }\n // Delete the offending records and add the merged ones.\n if (count_delete === 0) {\n diffs.splice(pointer - count_insert,\n count_delete + count_insert, [DIFF_INSERT, text_insert]);\n } else if (count_insert === 0) {\n diffs.splice(pointer - count_delete,\n count_delete + count_insert, [DIFF_DELETE, text_delete]);\n } else {\n diffs.splice(pointer - count_delete - count_insert,\n count_delete + count_insert, [DIFF_DELETE, text_delete],\n [DIFF_INSERT, text_insert]);\n }\n pointer = pointer - count_delete - count_insert +\n (count_delete ? 1 : 0) + (count_insert ? 1 : 0) + 1;\n } else if (pointer !== 0 && diffs[pointer - 1][0] == DIFF_EQUAL) {\n // Merge this equality with the previous one.\n diffs[pointer - 1][1] += diffs[pointer][1];\n diffs.splice(pointer, 1);\n } else {\n pointer++;\n }\n count_insert = 0;\n count_delete = 0;\n text_delete = '';\n text_insert = '';\n break;\n }\n }\n if (diffs[diffs.length - 1][1] === '') {\n diffs.pop(); // Remove the dummy entry at the end.\n }\n\n // Second pass: look for single edits surrounded on both sides by equalities\n // which can be shifted sideways to eliminate an equality.\n // e.g: ABAC -> ABAC\n var changes = false;\n pointer = 1;\n // Intentionally ignore the first and last element (don't need checking).\n while (pointer < diffs.length - 1) {\n if (diffs[pointer - 1][0] == DIFF_EQUAL &&\n diffs[pointer + 1][0] == DIFF_EQUAL) {\n // This is a single edit surrounded by equalities.\n if (diffs[pointer][1].substring(diffs[pointer][1].length -\n diffs[pointer - 1][1].length) == diffs[pointer - 1][1]) {\n // Shift the edit over the previous equality.\n diffs[pointer][1] = diffs[pointer - 1][1] +\n diffs[pointer][1].substring(0, diffs[pointer][1].length -\n diffs[pointer - 1][1].length);\n diffs[pointer + 1][1] = diffs[pointer - 1][1] + diffs[pointer + 1][1];\n diffs.splice(pointer - 1, 1);\n changes = true;\n } else if (diffs[pointer][1].substring(0, diffs[pointer + 1][1].length) ==\n diffs[pointer + 1][1]) {\n // Shift the edit over the next equality.\n diffs[pointer - 1][1] += diffs[pointer + 1][1];\n diffs[pointer][1] =\n diffs[pointer][1].substring(diffs[pointer + 1][1].length) +\n diffs[pointer + 1][1];\n diffs.splice(pointer + 1, 1);\n changes = true;\n }\n }\n pointer++;\n }\n // If shifts were made, the diff needs reordering and another shift sweep.\n if (changes) {\n diff_cleanupMerge(diffs);\n }\n};\n\n\nvar diff = diff_main;\ndiff.INSERT = DIFF_INSERT;\ndiff.DELETE = DIFF_DELETE;\ndiff.EQUAL = DIFF_EQUAL;\n\n\nmodule.exports = diff;\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/fast-diff/diff.js\n ** module id = 21\n ** module chunks = 0\n **/","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\n **/","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\n **/","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\n **/","'use strict';\n\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toStr = Object.prototype.toString;\n\nvar isArray = function isArray(arr) {\n\tif (typeof Array.isArray === 'function') {\n\t\treturn Array.isArray(arr);\n\t}\n\n\treturn toStr.call(arr) === '[object Array]';\n};\n\nvar isPlainObject = function isPlainObject(obj) {\n\tif (!obj || toStr.call(obj) !== '[object Object]') {\n\t\treturn false;\n\t}\n\n\tvar hasOwnConstructor = hasOwn.call(obj, 'constructor');\n\tvar hasIsPrototypeOf = obj.constructor && obj.constructor.prototype && hasOwn.call(obj.constructor.prototype, 'isPrototypeOf');\n\t// Not own constructor property must be Object\n\tif (obj.constructor && !hasOwnConstructor && !hasIsPrototypeOf) {\n\t\treturn false;\n\t}\n\n\t// Own properties are enumerated firstly, so to speed up,\n\t// if last one is own, then all properties are own.\n\tvar key;\n\tfor (key in obj) {/**/}\n\n\treturn typeof key === 'undefined' || hasOwn.call(obj, key);\n};\n\nmodule.exports = function extend() {\n\tvar options, name, src, copy, copyIsArray, clone,\n\t\ttarget = arguments[0],\n\t\ti = 1,\n\t\tlength = arguments.length,\n\t\tdeep = false;\n\n\t// Handle a deep copy situation\n\tif (typeof target === 'boolean') {\n\t\tdeep = target;\n\t\ttarget = arguments[1] || {};\n\t\t// skip the boolean and the target\n\t\ti = 2;\n\t} else if ((typeof target !== 'object' && typeof target !== 'function') || target == null) {\n\t\ttarget = {};\n\t}\n\n\tfor (; i < length; ++i) {\n\t\toptions = arguments[i];\n\t\t// Only deal with non-null/undefined values\n\t\tif (options != null) {\n\t\t\t// Extend the base object\n\t\t\tfor (name in options) {\n\t\t\t\tsrc = target[name];\n\t\t\t\tcopy = options[name];\n\n\t\t\t\t// Prevent never-ending loop\n\t\t\t\tif (target !== copy) {\n\t\t\t\t\t// Recurse if we're merging plain objects or arrays\n\t\t\t\t\tif (deep && copy && (isPlainObject(copy) || (copyIsArray = isArray(copy)))) {\n\t\t\t\t\t\tif (copyIsArray) {\n\t\t\t\t\t\t\tcopyIsArray = false;\n\t\t\t\t\t\t\tclone = src && isArray(src) ? src : [];\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tclone = src && isPlainObject(src) ? src : {};\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\t// Never move original objects, clone them\n\t\t\t\t\t\ttarget[name] = extend(deep, clone, copy);\n\n\t\t\t\t\t// Don't bring in undefined values\n\t\t\t\t\t} else if (typeof copy !== 'undefined') {\n\t\t\t\t\t\ttarget[name] = copy;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\t// Return the modified object\n\treturn target;\n};\n\n\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./~/extend/index.js\n ** module id = 25\n ** module chunks = 0\n **/","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.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 ** ./~/rich-text/lib/op.js\n ** module id = 26\n ** module chunks = 0\n **/","import Delta from 'rich-text/lib/delta';\nimport DeltaOp from 'rich-text/lib/op';\nimport Emitter from './emitter';\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, emitter) {\n this.scroll = scroll;\n this.emitter = emitter;\n this.emitter.on(Emitter.events.SCROLL_UPDATE, this.update.bind(this, null));\n this.delta = this.getDelta();\n this.enable();\n }\n\n applyDelta(delta, source = Emitter.sources.API) {\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.ops.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.ops.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, source);\n }\n\n deleteText(index, length, source = Emitter.sources.API) {\n this.scroll.deleteAt(index, length);\n return this.update(new Delta().retain(index).delete(length), source);\n }\n\n enable(enabled = true) {\n this.scroll.domNode.setAttribute('contenteditable', enabled);\n }\n\n formatLine(index, length, formats = {}, source = Emitter.sources.API) {\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, i) => {\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)), source);\n }\n\n formatText(index, length, formats = {}, source = Emitter.sources.API) {\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)), source);\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).ops.map(function(op) {\n return (typeof op.insert === 'string') ? op.insert : '';\n }).join('');\n }\n\n insertEmbed(index, embed, value, source = Emitter.sources.API) {\n this.scroll.insertAt(index, embed, value);\n return this.update(new Delta().retain(index).insert({ [embed]: value }), source);\n }\n\n insertText(index, text, formats = {}, source = Emitter.sources.API) {\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)), source)\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, source) {\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, source);\n }\n\n update(change, source = Emitter.sources.USER, mutations = []) {\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));\n change = diffDelta.ops.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);\n }\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}\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.ops.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\n **/","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\n **/","'use strict';\n\nvar has = Object.prototype.hasOwnProperty;\n\n//\n// We store our EE objects in a plain object whose properties are event names.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// `~` to make sure that the built-in object properties are not overridden or\n// used as an attack vector.\n// We also assume that `Object.create(null)` is available when the event name\n// is an ES6 Symbol.\n//\nvar prefix = typeof Object.create !== 'function' ? '~' : false;\n\n/**\n * Representation of a single EventEmitter function.\n *\n * @param {Function} fn Event handler to be called.\n * @param {Mixed} context Context for function execution.\n * @param {Boolean} [once=false] Only emit once\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() { /* Nothing to set */ }\n\n/**\n * Hold the assigned EventEmitters by name.\n *\n * @type {Object}\n * @private\n */\nEventEmitter.prototype._events = undefined;\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 events = this._events\n , names = []\n , name;\n\n if (!events) return names;\n\n for (name in 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 a list of assigned event listeners.\n *\n * @param {String} event The events that should be listed.\n * @param {Boolean} exists We only need to know 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 && 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 * Emit an event to all registered event listeners.\n *\n * @param {String} event The name of the event.\n * @returns {Boolean} Indication if we've emitted an event.\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 || !this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if ('function' === typeof 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 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 * Register a new EventListener for the given event.\n *\n * @param {String} event Name of the event.\n * @param {Function} fn Callback function.\n * @param {Mixed} [context=this] The context of the function.\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) this._events = prefix ? {} : Object.create(null);\n if (!this._events[evt]) this._events[evt] = listener;\n else {\n if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [\n this._events[evt], listener\n ];\n }\n\n return this;\n};\n\n/**\n * Add an EventListener that's only called once.\n *\n * @param {String} event Name of the event.\n * @param {Function} fn Callback function.\n * @param {Mixed} [context=this] The context of the function.\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) this._events = prefix ? {} : Object.create(null);\n if (!this._events[evt]) this._events[evt] = listener;\n else {\n if (!this._events[evt].fn) this._events[evt].push(listener);\n else this._events[evt] = [\n this._events[evt], listener\n ];\n }\n\n return this;\n};\n\n/**\n * Remove event listeners.\n *\n * @param {String} event The event we want to remove.\n * @param {Function} fn The listener that we need to find.\n * @param {Mixed} context Only remove listeners matching this context.\n * @param {Boolean} once Only remove once listeners.\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 || !this._events[evt]) return this;\n\n var listeners = this._events[evt]\n , events = [];\n\n if (fn) {\n if (listeners.fn) {\n if (\n listeners.fn !== fn\n || (once && !listeners.once)\n || (context && listeners.context !== context)\n ) {\n events.push(listeners);\n }\n } else {\n for (var i = 0, 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\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) {\n this._events[evt] = events.length === 1 ? events[0] : events;\n } else {\n delete this._events[evt];\n }\n\n return this;\n};\n\n/**\n * Remove all listeners or only the listeners for the specified event.\n *\n * @param {String} event The event want to remove all listeners for.\n * @api public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n if (!this._events) return this;\n\n if (event) delete this._events[prefix ? prefix + event : event];\n else this._events = prefix ? {} : Object.create(null);\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// 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 = 29\n ** module chunks = 0\n **/","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);\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\n **/","import Delta from 'rich-text/lib/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(domNode) {\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\n **/","import extend from 'extend';\nimport Delta from 'rich-text/lib/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\n **/","import Embed from './embed';\n\n\nclass Break extends Embed {\n static value(domNode) {\n return undefined;\n }\n\n insertInto(parent, ref) {\n if (parent.children.length === 0) {\n super.insertInto(parent, ref);\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\n **/","import Parchment from 'parchment';\n\nclass Embed extends Parchment.Embed { }\n\nexport default Embed;\n\n\n\n/** WEBPACK FOOTER **\n ** ./blots/embed.js\n **/","import extend from 'extend';\nimport 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}\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\n **/","import Parchment from 'parchment';\n\nclass TextBlot extends Parchment.Text { }\n\nexport default TextBlot;\n\n\n\n/** WEBPACK FOOTER **\n ** ./blots/text.js\n **/","import Parchment from 'parchment';\nimport Embed from './embed';\nimport Emitter from '../core/emitter';\n\n\nclass Cursor extends Embed {\n static value(domNode) {\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(index) {\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 // 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 this.textNode.data = this.textNode.data.split(Cursor.CONTENTS).join('');\n this.parent.insertBefore(Parchment.create(this.textNode), this);\n this.textNode = document.createTextNode(Cursor.CONTENTS);\n this.domNode.appendChild(this.textNode);\n }\n this.remove();\n if (range != null && range.start.node === textNode && range.end.node === textNode) {\n this.selection.emitter.once(Emitter.events.SCROLL_OPTIMIZE, () => {\n let [start, end] = [range.start.offset, range.end.offset].map(function(offset) {\n return Math.max(0, Math.min(textNode.data.length, offset - 1));\n });\n this.selection.setNativeRange(textNode, start, textNode, end);\n });\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\n **/","var clone = (function() {\n'use strict';\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*/\nfunction clone(parent, circular, depth, prototype) {\n var filter;\n if (typeof circular === 'object') {\n depth = circular.depth;\n prototype = circular.prototype;\n filter = circular.filter;\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 (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 {\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 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 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\n **/","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\n **/","import Parchment from 'parchment';\nimport clone from 'clone';\nimport equal from 'deep-equal';\nimport BreakBlot from '../blots/break';\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 let bodyTop = document.body.scrollTop;\n this.root.focus();\n document.body.scrollTop = bodyTop;\n this.setRange(this.savedRange);\n }\n\n format(format, value) {\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 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 var rect = range.getBoundingClientRect();\n } else {\n var 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 if (!this.hasFocus()) return [null, null];\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 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 nativeRange = this.getNativeRange();\n if (nativeRange == null || force ||\n startNode !== nativeRange.start.node || startOffset !== nativeRange.start.offset ||\n endNode !== nativeRange.end.node || endOffset !== nativeRange.end.offset) {\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\n **/","import extend from 'extend';\nimport Emitter from './emitter';\n\n\nclass 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\n **/","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\n **/","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 }\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 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 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\n **/","import Delta from 'rich-text/lib/delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\n\nimport { AlignStyle } from '../formats/align';\nimport { BackgroundStyle } from '../formats/background';\nimport { ColorStyle } from '../formats/color';\nimport { DirectionStyle } from '../formats/direction';\nimport { FontStyle } from '../formats/font';\nimport { SizeStyle } from '../formats/size';\n\nlet debug = logger('quill:clipboard');\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 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 const DOM_KEY = '__ql-matcher';\n if (typeof html === 'string') {\n this.container.innerHTML = html;\n }\n let textMatchers = [], elementMatchers = [];\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 let traverse = (node) => { // 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);\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 let delta = traverse(this.container);\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 onPaste(e) {\n if (e.defaultPrevented) return;\n let range = this.quill.getSelection();\n let delta = new Delta().retain(range.index).delete(range.length);\n let bodyTop = document.body.scrollTop;\n this.container.focus();\n setTimeout(() => {\n delta = delta.concat(this.convert());\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 document.body.scrollTop = bodyTop;\n this.quill.selection.scrollIntoView();\n }, 1);\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 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 (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(node, delta) {\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.fontWeight && computeStyle(node).fontWeight === 'bold') {\n formats.bold = true;\n }\n if (Object.keys(formats).length > 0) {\n delta = delta.compose(new Delta().retain(delta.length(), formats));\n }\n if (parseFloat(style.textIndent || 0) > 0) { // Could be 0.5in\n delta = new Delta().insert('\\t').concat(delta);\n }\n return delta;\n}\n\nfunction matchText(node, delta) {\n let text = node.data;\n // Word represents empty line with  \n if (node.parentNode.tagName === 'O:P') {\n return delta.insert(text.trim());\n }\n if (!computeStyle(node.parentNode).whiteSpace.startsWith('pre')) {\n function replacer(collapse, match) {\n match = match.replace(/[^\\u00a0]/g, ''); // \\u00a0 is nbsp;\n return match.length < 1 && collapse ? ' ' : match;\n }\n text = text.replace(/\\r\\n/g, ' ').replace(/\\n/g, ' ');\n text = text.replace(/\\s\\s+/g, replacer.bind(replacer, true)); // collapse whitespace\n if ((node.previousSibling == null && isLine(node.parentNode)) ||\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\n **/","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['right', 'center', 'justify']\n};\n\nlet AlignClass = new Parchment.Attributor.Class('align', 'ql-align', config);\nlet AlignStyle = new Parchment.Attributor.Style('align', 'text-align', config);\n\nexport { AlignClass, AlignStyle };\n\n\n\n/** WEBPACK FOOTER **\n ** ./formats/align.js\n **/","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\n **/","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\n **/","import Parchment from 'parchment';\n\nlet config = {\n scope: Parchment.Scope.BLOCK,\n whitelist: ['rtl']\n};\n\nlet DirectionClass = new Parchment.Attributor.Class('direction', 'ql-direction', config);\nlet DirectionStyle = new Parchment.Attributor.Style('direction', 'direction', config);\n\nexport { DirectionClass, DirectionStyle };\n\n\n\n/** WEBPACK FOOTER **\n ** ./formats/direction.js\n **/","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);\nlet FontStyle = new Parchment.Attributor.Style('font', 'font-family', config);\n\nexport { FontStyle, FontClass };\n\n\n\n/** WEBPACK FOOTER **\n ** ./formats/font.js\n **/","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\n **/","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.unshift();\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.ops.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\n **/","import clone from 'clone';\nimport equal from 'deep-equal';\nimport extend from 'extend';\nimport Delta from 'rich-text/lib/delta';\nimport Parchment from 'parchment';\nimport Quill from '../core/quill';\nimport logger from '../core/logger';\nimport Module from '../core/module';\nimport Block from '../blots/block';\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 this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: true, prefix: /^.?$/ }, function(range, context) {\n if (range.index === 0) return;\n let index = context.offset === 0 ? range.index : range.index - 1;\n this.quill.deleteText(index, 1, Quill.sources.USER);\n this.quill.setSelection(range.index-1, Quill.sources.SILENT);\n this.quill.selection.scrollIntoView();\n });\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: true, suffix: /^$/ }, function(range) {\n if (range.index >= this.quill.getLength() - 1) return;\n this.quill.deleteText(range.index, 1, Quill.sources.USER);\n });\n this.addBinding({ key: Keyboard.keys.BACKSPACE }, { collapsed: false }, handleDelete);\n this.addBinding({ key: Keyboard.keys.DELETE }, { collapsed: false }, handleDelete);\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) return; // implies we do not have focus\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, context) {\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 '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 handleDelete(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\n **/","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 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\n **/","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\n **/","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\n **/","import extend from 'extend';\nimport Delta from 'rich-text/lib/delta';\nimport 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 if (value === 'ordered') {\n value = 'OL';\n } else if (value === 'bullet') {\n value = 'UL';\n }\n return super.create(value);\n }\n\n static formats(domNode) {\n if (domNode.tagName === 'OL') return 'ordered';\n if (domNode.tagName === 'UL') return 'bullet';\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.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\n **/","import Inline from '../blots/inline';\n\nclass Bold extends Inline {\n static create(value) {\n return super.create();\n }\n\n static formats(domNode) {\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\n **/","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\n **/","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\n **/","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\n **/","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\n **/","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\n **/","import Embed from '../blots/embed';\nimport Link, { sanitize } from '../formats/link';\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 let formats = {};\n if (domNode.hasAttribute('height')) formats['height'] = domNode.getAttribute('height');\n if (domNode.hasAttribute('width')) formats['width'] = domNode.getAttribute('width');\n return formats;\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 (name === 'height' || name === 'width') {\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\n **/","import { BlockEmbed } from '../blots/block';\nimport Link from '../formats/link';\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 let formats = {};\n if (domNode.hasAttribute('height')) formats['height'] = domNode.getAttribute('height');\n if (domNode.hasAttribute('width')) formats['width'] = domNode.getAttribute('width');\n return formats;\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 (name === 'height' || name === 'width') {\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\n **/","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 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(node, offset) {\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\n **/","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\n **/","import extend from 'extend';\nimport Delta from 'rich-text/lib/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 this.container.addEventListener('mousedown', function(e) {\n e.preventDefault(); // Prevent blur\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(value) {\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\n **/","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-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 },\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\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/align-left.svg\n ** module id = 69\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/align-center.svg\n ** module id = 70\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/align-right.svg\n ** module id = 71\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/align-justify.svg\n ** module id = 72\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/background.svg\n ** module id = 73\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/blockquote.svg\n ** module id = 74\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/bold.svg\n ** module id = 75\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/clean.svg\n ** module id = 76\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/code.svg\n ** module id = 77\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/color.svg\n ** module id = 78\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/direction-ltr.svg\n ** module id = 79\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/direction-rtl.svg\n ** module id = 80\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/float-center.svg\n ** module id = 81\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/float-full.svg\n ** module id = 82\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/float-left.svg\n ** module id = 83\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/float-right.svg\n ** module id = 84\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/formula.svg\n ** module id = 85\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/header.svg\n ** module id = 86\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/header-2.svg\n ** module id = 87\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/italic.svg\n ** module id = 88\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/image.svg\n ** module id = 89\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/indent.svg\n ** module id = 90\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/outdent.svg\n ** module id = 91\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/link.svg\n ** module id = 92\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/list-ordered.svg\n ** module id = 93\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/list-bullet.svg\n ** module id = 94\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/subscript.svg\n ** module id = 95\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/superscript.svg\n ** module id = 96\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/strike.svg\n ** module id = 97\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/underline.svg\n ** module id = 98\n ** module chunks = 0\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/video.svg\n ** module id = 99\n ** module chunks = 0\n **/","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', (event) => {\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', (event) => {\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) {\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 } else {\n this.label.removeAttribute('data-value');\n this.label.removeAttribute('data-label');\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\n **/","module.exports = \" \";\n\n\n/*****************\n ** WEBPACK FOOTER\n ** ./assets/icons/dropdown.svg\n ** module id = 101\n ** module chunks = 0\n **/","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\n **/","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\n **/","class Tooltip {\n constructor(quill, boundsContainer) {\n this.quill = quill;\n this.boundsContainer = boundsContainer;\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\n **/","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport Keyboard from '../modules/keyboard';\nimport BaseTheme, { BaseTooltip } from './base';\nimport icons from '../ui/icons';\nimport { Range } from '../core/selection';\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')));\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')));\n }\n}\nBubbleTheme.DEFAULTS = extend(true, {}, BaseTooltip.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', (event) => {\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 if (shift === 0) return shift;\n let arrow = this.root.querySelector('.ql-tooltip-arrow');\n arrow.style.marginLeft = '';\n arrow.style.marginLeft = (-1*shift - arrow.offsetWidth/2) + 'px';\n }\n}\nBubbleTooltip.TEMPLATE = [\n '',\n '
',\n '',\n '',\n '
'\n].join('');\n\n\nexport default BubbleTheme;\n\n\n\n/** WEBPACK FOOTER **\n ** ./themes/bubble.js\n **/","import extend from 'extend';\nimport Delta from 'rich-text/lib/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';\nimport icons from '../ui/icons';\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) {\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) {\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(value) {\n this.quill.theme.tooltip.edit('formula');\n },\n image: function(value) {\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/*');\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(value) {\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 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+)/)) {\n value = match[1] + '://player.vimeo.com/video/' + match[3] + '/';\n }\n // 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 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\n **/","import extend from 'extend';\nimport Emitter from '../core/emitter';\nimport BaseTheme, { BaseTooltip } from './base';\nimport LinkBlot from '../formats/link';\nimport Picker from '../ui/picker';\nimport { Range } from '../core/selection';\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')));\n this.buildPickers([].slice.call(toolbar.container.querySelectorAll('select')));\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 }\n this.hide();\n });\n }\n\n show() {\n super.show();\n this.root.removeAttribute('data-mode');\n }\n}\nSnowTooltip.TEMPLATE = [\n '',\n '',\n '',\n ''\n].join('');\n\n\nexport default SnowTheme;\n\n\n\n/** WEBPACK FOOTER **\n ** ./themes/snow.js\n **/"],"sourceRoot":""}